Banco de Dados - SQL Server

SQL Server Integration Services - CHECKPOINTS

Nesse artigo o autor mostra como utilizar checkpoint em pacotes do SQL Server Integration Services.

por Lucas Almeida



Checkpoint é um recurso do SQL Server Integration Services (SSIS) que permite a um pacote guardar informações sobre as suas Tasks (tarefas) que executaram com sucesso. Dessa forma o SSIS consegue reiniciar a execução do pacote a partir do ponto onde o pacote falhou. Assim o SSIS evita de executar tarefas repetidas dentro do pacote que possam consumir muito recurso.

Nesse artigo vou mostrar como utilizar checkpoint em pacotes do SQL Server Integration Services.

Ambiente Inicial

Para iniciarmos nosso exemplo vamos criar um cenário inicial.

Crie um projeto do SSIS no Business Intelligence Development Studio (BIDS).

Crie um pacote chamado Checkpoint e adicione 3 Script Task ao pacote, ligando os pacotes pela precedência Success como na imagem abaixo.

Na imagem, deixei aberta a janela com as propriedades do pacote. O primeiro conjunto de propriedades do pacote se chama Checkpoints e é onde vamos fazer a configuração do checkpoint para o nosso pacote.

Primeiramente devemos alterar a propriedade SaveCheckpoints para True. Altere também a propriedade CheckpointUsage para IfExists e em CheckpointFileName digite “c:\checkpoint.ckp” que é o caminho onde será salvo o arquivo de checkpoint.

Pronto! O nosso checkpoint já esta configurado, mas se você executar o pacote ele ainda não irá funcionar. Um pré-requisito para o checkpoint executar é alterar a propriedade FailPackageOnFailure para True.

Vamos executar o pacote para ver o resultado. Como o não há falhas no pacote todas as tarefas executaram com sucesso.

Agora vamos editar o Script Task 1 para forçar uma falha.

Dê duplo clique sobre o Scrip Task 1 para abrir a janela de configuração.

Clique em Design Script para escrevermos um pequeno código VB.NET.

Imports System

Imports System.Data

Imports System.Math

Imports System.Windows.Forms

Imports Microsoft.SqlServer.Dts.Runtime

Public Class ScriptMain

    Public Sub Main()

        `Dts.TaskResult = Dts.Results.Success `linha comentada

        Dts.TaskResult = Dts.Results.Failure

    End Sub

End Class

No script acima eu apenas comentei a linha original onde esta o Dts.Results.Success e criei uma nova linha Dts.Results.Failure para forçar a falha.

Clique no menu File > Close and Return

Em seguida execute novamente o pacote e observe o comportamento abaixo:

Houve uma falha no pacote e o SSIS salvou um arquivo chamado c:\checkpoint.ckp no disco. Clique no botão Stop do SSIS e abra o arquivo no notepad.

Observe que foram gravados três identificadores.

<DTS:Checkpoint xmlns:DTS="www.microsoft.com/SqlServer/Dts" DTS:PackageID="{87BB08D6-26A7-4D57-BEF4-34A2817E71CC}">

<DTS:Variables DTS:ContID="{87BB08D6-26A7-4D57-BEF4-34A2817E71CC}"/>

<DTS:Container DTS:ContID="{9B1A11C8-B4D6-4643-BCA0-2B537828DC1D}" DTS:Result="0" DTS:PrecedenceMap="Y"/>

<DTS:Container DTS:ContID="{3F38FAD7-1056-45AE-AB0C-0008D48E81EA}" DTS:Result="0" DTS:PrecedenceMap=""/>

</DTS:Checkpoint>

Vermelho – ID do Pacote

Laranja – ID do Script Task

Verde – ID do Script Task 1

O último ID gravado foi o ponto da falha. O SSIS iniciará a próxima execução a partir desse ponto.

Abra novamente o Script Task 1. Vá até o Script Design, descomente a linha Dts.Results.Success e comente a linha Dts.Results.Failure para retirarmos a falha forçada.

Execute novamente o pacote e observe que a execução continuou a partir do Script Task 1.

Percebam que o arquivo de checkpoint foi apagado após a execução do pacote.

Com isso nós finalizamos nosso artigo.


Contatos

Messenger: cyruslma@hotmail.com

E-mail pessoal: Lucas.lma@gmail.com

Abraço e até o próximo artigo!

Lucas Almeida

Lucas Almeida

Lucas Almeida - Microsoft Most Valuable Professional na categoria SQL Server.
Ministra treinamentos de SQL Server, Analysis Services, Integration Services e Reporting Services. É autor de artigos técnicos, webcasts e palestrante em eventos da Microsoft.
Atualmente trabalha como Consultor de Business Intelligence para a
Carpio do Brasil, atuando também como consultor independente em projetos de Banco de Dados SQL Server, Business Intelligence e Desenvolvimento .NET.
MCITP: Database Administrator
MCTS: SQL Server 2005 Business Intelligence
MCTS: .NET Framework 2.0 Web Applications
MCTS: .NET Framework 2.0 Distributed Applications