Usando pontos de verificação em pacotes

O Integration Services pode reinicializar pacotes que falharam a partir do ponto de falha, em vez de executar novamente todo o pacote. Se um pacote estiver configurado para usar pontos de verificação, serão gravadas informações sobre a execução do pacote em um arquivo de ponto de verificação. Quando o pacote com falha é executado novamente, o arquivo do ponto de verificação é usado para reiniciar o pacote a partir do ponto de falha. Se o pacote for executado com êxito, o arquivo de ponto de verificação é excluído e recriado na próxima execução do pacote.

Usar pontos de verificação em um pacote fornece os seguintes benefícios:

  • Evita repetir o download e o upload de arquivos grandes. Por exemplo, um pacote que baixa diversos arquivos grandes usando uma tarefa FTP para cada download pode ser reiniciado após o download de um único arquivo falhar e baixar apenas aquele arquivo.

  • Evita repetir o carregamento de grandes quantidades de dados. Por exemplo, um pacote que realiza inserções em massa em tabelas de dimensão em um data warehouse usando uma tarefa Inserção em Massa diferente para cada dimensão pode ser reiniciado se a inserção falhar em uma tabela de dimensão e apenas essa dimensão será recarregada.

  • Evita repetir a agregação de valores. Por exemplo, um pacote que computa muitos agregados, como médias e somas, usando uma tarefa de Fluxo de Dados separada para realizar cada agregação, pode ser reiniciado após computar uma falha de agregação e somente essa agregação será computada novamente.

Se um pacote for configurado para usar pontos de verificação, o Integration Services capturará o ponto de reinicialização no arquivo de ponto de verificação. O tipo de contêiner que falha e a implementação de recursos, como transações, afetam o ponto de reinicialização registrado no arquivo de ponto de verificação. Os valores atuais das variáveis também são capturados no arquivo de ponto de verificação. No entanto, os valores de variáveis que têm o tipo de dados Object não são salvos em arquivos de ponto de verificação.

Se o pacote for reiniciado, o Integration Services não recarregará as configurações do pacote. Em vez disso, o pacote usará as informações de configuração gravadas no arquivo de ponto de verificação. Assim, quando o pacote for executado novamente, ele usará as mesmas configurações existentes quando ocorreu a falha.

Definindo os pontos de reinicialização

Os seguintes componentes do Integration Services são as unidades atômicas de trabalho que você pode reiniciar usando pontos de verificação:

  • Tarefa   O contêiner host da tarefa que encapsula uma única tarefa é a menor unidade atômica de trabalho que pode ser reiniciada.

    ObservaçãoObservação

    Como a tarefa de Fluxo de Dados, que inclui todo o seu conteúdo, é uma unidade atômica de trabalho, você não poderá reiniciar um pacote no meio do fluxo de dados. Para evitar a reexecução de todo o fluxo de dados, o pacote deve ser projetado para incluir várias tarefas de Fluxo de Dados. Dessa forma, quando o pacote for reiniciado, somente as tarefas de Fluxo de Dados que falharam serão executadas novamente.

  • Contêiner transacionado Um contêiner transacionado também é uma unidade atômica de trabalho que pode ser reiniciada. Se um pacote for interrompido enquanto um contêiner transacionado estiver sendo executado, a transação será encerrada e qualquer trabalho realizado pela transação será revertido. Porém, o arquivo de ponto de verificação não contém informações sobre o trabalho concluído pelos contêineres filho; e o contêiner transacionado e seus contêineres filho são executados novamente quando o pacote reinicia.

    Para minimizar possíveis conflitos entre pontos de verificação e transações, o Integration Services não salva informações de ponto de verificação sobre o que acontece dentro de um contêiner quando uma destas condições for verdadeira:

    • O valor da propriedade TransactionOption do contêiner é Required.

      —ou—

    • O valor da propriedade TransactionOption do contêiner é Supported, mas o contêiner pai possui ou é associado a uma transação.

    ObservaçãoObservação

    O uso de pontos de verificação e transações no mesmo pacote pode gerar resultados inesperados. Por exemplo, quando um pacote falha e é reiniciado em um ponto de verificação, o pacote pode repetir uma transação que já tenha sido confirmada com êxito.

  • Contêiner Foreach Loop O contêiner Foreach Loop é outra unidade atômica de trabalho que pode ser reiniciada. Porém, o arquivo de ponto de verificação não contém informações sobre o trabalho concluído pelos contêineres filho; e o contêiner Foreach Loop e seus contêineres filho são executados novamente quando o pacote reinicia.

Configurando um pacote para que seja reiniciado

O arquivo de ponto de verificação inclui os resultados de execução de todas as unidades de trabalho concluídas (conforme descrito anteriormente neste tópico), além dos valores atuais do sistema, das variáveis definidas pelo usuário e de informações sobre a configuração do pacote. O arquivo também inclui o identificador exclusivo do pacote. Para reiniciar um pacote com êxito, o identificador do pacote no arquivo de ponto de verificação e o pacote devem corresponder; caso contrário a reinicialização falhará. Isto impede um pacote de usar um arquivo de ponto de verificação escrito por uma versão de pacote diferente. Se o pacote executar com êxito, após sua reinicialização o arquivo do ponto de verificação será excluído.

A tabela a seguir lista as propriedades de pacote definidas para implementar pontos de verificação.

Propriedade

Descrição

CheckpointFileName

Especifica o nome do arquivo de ponto de verificação.

CheckpointUsage

Especifica se pontos de verificação são usados.

SaveCheckpoints

Indica se o pacote salva os pontos de verificação. Esta propriedade deve ser definida como verdadeira para reinicializar um pacote a partir de um ponto de falha.

Além disso, você deve definir a propriedade FailPackageOnFailure como true para todos os contêineres no pacote que deseja identificar como pontos de reinicialização.

É possível usar a propriedade ForceExecutionResult para testar o uso de pontos de verificação em um pacote. Ao definir o ForceExecutionResult de uma tarefa ou contêiner como Falha, você pode imitar uma falha em tempo real. Ao executar novamente o pacote, a tarefa e os contêineres que falharam serão executados de novo.

Definindo a propriedade CheckpointUsage

A tabela a seguir lista os valores da propriedade CheckpointUsage.

Valor

Descrição

Never

Especifica que o arquivo de ponto de verificação não é usado e o pacote executa a partir do início do fluxo de trabalho do pacote.

Always

Especifica que o arquivo de ponto de verificação sempre é usado e que o pacote reinicia a partir do ponto da falha de execução anterior. Se o arquivo de ponto de verificação não for localizado, o pacote falhará.

IfExists

Especifica que o arquivo de ponto de verificação é usado, se existir. Se o arquivo de ponto de verificação existir, o pacote reiniciará a partir do ponto da falha de execução anterior; caso contrário, será executado desde o início do fluxo de trabalho do pacote.

ObservaçãoObservação

A opção /CheckPointing on do dtexec é equivalente à configuração da propriedade SaveCheckpoints do pacote como Truee da propriedade CheckpointUsage como Sempre. Para obter mais informações, consulte Utilitário dtexec.

Escolhendo um local para arquivos de ponto de verificação

Em um cluster de failover onde você tem o Integration Services instalado em vários nós no cluster, é possível salvar arquivos de ponto de verificação em um local compartilhado. Em seguida, se ocorrer um failover, você poderá reiniciar um pacote que foi interrompido a partir do último ponto de verificação em um nó diferente no cluster.

Protegendo arquivos de ponto de verificação

A proteção em nível de pacote não inclui proteção a arquivos de ponto de verificação; você deve proteger esses arquivos separadamente. Os dados de ponto de verificação só podem ser armazenados no sistema de arquivos e você deve usar uma ACL (lista de controle de acesso) do sistema operacional para ajudar a proteger o local ou a pasta onde armazena o arquivo. É importante proteger os arquivos de ponto de verificação, pois eles contêm informações sobre o estado do pacote, como os valores atuais de variáveis. Por exemplo, uma variável pode conter um conjunto de registros com muitas linhas de dados particulares, como números de telefone. Para obter mais informações, consulte Controlando o acesso aos arquivos usados por pacotes.

Para configurar as propriedades de ponto de verificação

Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os mais recentes downloads, artigos, exemplos e vídeos da Microsoft, bem como soluções selecionadas da comunidade, visite a página Integration Services no MSDN ou TechNet:

Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.

Histórico de alterações

Conteúdo atualizado

  • Explicado quais componentes são unidades de trabalho na seção "Definindo pontos de reinicialização".

  • Adicionada a seção "Escolhendo um local para arquivos de ponto de verificação".