KB2583994 - CORREÇÃO: Ponto de verificação SSIS restaura um valor de variável incorreto para um item de tarefa Executar SQL de um item de contêiner For Loop no SSIS 2008 ou no SSIS 2008 R2 se um pacote SSIS for executado novamente depois que falhar ou parar

Aplica-se A
SQL Server 2008 Enterprise Microsoft SQL Server 2005 Enterprise Edition SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Enterprise

A Microsoft distribui as correções do Microsoft SQL Server 2008 Service Pack 1 (SP1) ou do Microsoft SQL Server 2008 R2 como um ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as atualizações de segurança que foram incluídas com a versão anterior do SQL Server 2008 SP1 ou SQL Server 2008 R2.

Sintomas

Tenha em conta o seguinte cenário:

  • Instalar o Microsoft SQL Server 2008 Integration Services (SSIS 2008) ou Microsoft SQL Server 2008 R2 Integration Services (SSIS 2008 R2) em um computador.
  • Criar um pacote SSIS que contém dois itens de contentor For Loop.
  • Você cria duas variáveis de escopo For Loop Container para as duas For Loop Container items. As variáveis têm o mesmo nome.
  • Use as variáveis nas propriedades InitExpression, EvalExpression e AssignExpression para os dois itens For Loop Container.
  • Os dois itens de contêiner For Loop contêm vários itens da tarefa Executar SQL que são executados em paralelo.
  • Ative a definição Ponto de verificação para o pacote SSIS.
  • Executar o pacote SSIS.
  • Um dos itens da Tarefa Executar SQL falha ou para enquanto o pacote SSIS é executado.
  • O pacote SSIS é executado novamente.

Nesse cenário, o valor da variável para um dos itens da tarefa Executar SQL que não falhou ou parou está incorreto.

Observação Este item de tarefa Executar SQL está no item Para Loop contêiner que não falhou ou parou.

Por exemplo, considere o seguinte cenário específico:

  • Criar um pacote SSIS que tenha dois itens de contentor For Loop. Os itens são denominados FLC01 e FLC02.
  • Você cria uma variável BatchNo para FLC01 e uma variável BatchNo para FLC02.
  • Defina a propriedade InitExpression como @[User::BatchNo] = 0.
  • Defina a propriedade EvalExpression como @[User::BatchNo] < 10.
  • Defina a propriedade AssignExpression como @[User::BatchNo]=@[User::BatchNo]+1.
  • Os dois itens de contêiner For Loop contêm vários itens da Tarefa Executar SQL que usam um plano de execução paralela.
  • Ative a definição Ponto de verificação para o pacote SSIS.
  • Executar o pacote SSIS.
  • Um item de tarefa Executar SQL em FLC01 falha ou para.
  • O pacote SSIS é executado novamente.

Nesse cenário, o valor BatchNo para um dos itens da tarefa Executar SQL em FLC02 está incorreto.

Observação Esse problema também ocorre no Microsoft SQL Server 2008 R2 Integration Services (SSIS 2008 R2).

Causa

Esse problema ocorre devido a um defeito na lógica de restauração da variável Checkpoint.

As variáveis Checkpoint são restauradas para as tarefas erradas. Portanto, um valor de variável incorreto é restaurado.

Resolução

Informações de atualização cumulativa

SQL Server 2008 R2

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 11. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2008 R2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2633145 Pacote de atualização cumulativa 11 para SQL Server 2008 R2 Observação Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o SQL Server anterior 2008 R2 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

981356 As compilações SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2

SQL Server 2008 R2 Service Pack 1

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 4 para SQL Server 2008 R2 Service Pack 1. Para mais informações sobre como obter este pacote de actualização cumulativa, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2633146 Pacote de Atualização Cumulativa 4 para SQL Server 2008 R2 Service Pack 1Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 R2 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2567616 As compilações do SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2 Service Pack 1

SQL Server 2008 Service Pack 2

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 7 para SQL Server 2008 Service Pack 2. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2617148 Pacote de atualizações cumulativas 7 para SQL Server 2008 Service Pack 2Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2402659 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 2 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs SQL Server específicos. Tem de aplicar uma correção do SQL Server 2008 Service Pack 2 a uma instalação do SQL Server 2008 Service Pack 2. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.

Pacote de atualizações cumulativas 16 para SQL Server 2008 SP1

A correção para esse problema foi lançada pela primeira vez no pacote de atualização cumulativa 16 para SQL Server 2008 SP1. Para mais informações sobre como obter este pacote de actualização cumulativa para o SQL Server 2008 SP1, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2582282 Pacote de atualizações cumulativas 16 para SQL Server 2008 Service Pack 1Nota Como as compilações são cumulativas, cada nova versão de atualização contém todos os hotfixes e todas as atualizações de segurança que foram incluídas com a versão anterior da atualização do SQL Server 2008 SP1. Recomendamos que você considere aplicar a versão de atualização mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

970365 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 1

Solução

Para contornar esse problema, use um nome de variável diferente para cada item For Loop Container.

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".