Verificando a integridade dos dados usando transações
Os pacotes usam transações que associam as ações do banco de dados realizadas pelas tarefas em unidades atômicas e, ao fazer isso, a integridade dos dados é mantida. Como todas as ações de banco de dados que fazem parte de uma transação foram confirmadas ou revertidas juntas, é possível garantir que os dados permaneçam em um estado consistente. Por exemplo, um pacote com diversas tarefas de Fluxo de Dados, cada uma atualizando e inserindo dados em uma tabela de banco de dados diferente, pode usar uma transação para garantir que todas as alterações realizadas nos fluxos de dados estejam confirmadas ou revertidas. As transações distribuídas levam esse conceito um passo adiante, permitindo que você associe operações diferentes em diversos sistemas de operações em uma única transação.
É possível usar transações em pacotes para as seguintes finalidades:
Junte os resultados de diversas tarefas em uma única transação para garantir atualizações consistentes. Por exemplo, as informações sobre pedidos e itens da linha armazenadas em duas tabelas diferentes podem ser carregadas por duas tarefas que têm êxito ou falham juntas.
Assegure atualizações consistentes em diversos servidores de banco de dados. Por exemplo, um endereço de cliente pode ser alterado em dois sistemas OLTP (processamento de transação online), tudo no contexto de uma transação.
Assegure atualizações em um ambiente assíncrono. Por exemplo, um pacote pode usar uma tarefa de Fila de Mensagens para ler e excluir uma mensagem com o nome de um arquivo para upload. Se a tarefa que carrega o arquivo falhar, a reversão subsequente irá reverter as alterações do banco de dados e colocar a mensagem de volta na fila.
Realize diversas transações sob o controle de um único pacote. Por exemplo, usando as tarefas Executar Pacote, um pacote pode executar simultaneamente uma sequência de final de dia de transações em três servidores diferentes.
Todos os tipos de contêineres de Microsoft Integration Services—pacotes, os contêineres Loop For, Loop de Foreach e Sequência e os hosts de tarefa que encapsulam cada tarefa—podem ser configurados para usar transações. O Integration Services fornece três opções para configuração das transações: Não Suportado, Suportado e Necessário.
Necessário indica que o contêiner inicia uma transação, a menos que uma já tenha sido iniciada por seu contêiner pai. Se uma transação já existir, o contêiner se unirá à transação. Por exemplo, se um pacote que não está configurado para suportar transações incluir um contêiner Sequência que usa a opção Necessário, o contêiner iniciaria sua própria transação. Se o pacote fosse configurado para usar a opção Necessário , o contêiner Sequência se uniria à transação do pacote.
Suportado indica que o contêiner não inicia uma transação, mas se une a qualquer transação iniciada por seu contêiner pai. Por exemplo, se um pacote com quatro tarefas Executar SQL iniciar uma transação e todas as quatro tarefas usarem a opção Suportado, as atualizações de banco de dados realizadas pelas tarefas Executar SQL serão revertidas se qualquer tarefa falhar. Se o pacote não iniciar uma transação, as quatro tarefas Executar SQL não serão associadas por uma transação e nenhuma atualização de banco de dados, exceto as realizadas pela tarefa que falhou, será revertida.
Não Suportado indica que o contêiner não inicia uma transação ou se une a uma transação existente. Uma transação iniciada por um contêiner pai não afeta contêineres filhos que foram configurados para não suportar transações. Por exemplo, se um pacote for configurado para iniciar uma transação e um contêiner Loop For no pacote usar a opção Não Suportado, nenhuma das tarefas no Loop For poderão ser revertidas se falharem.
Você configura transações definindo a propriedade TransactionOption no contêiner. É possível definir esta propriedade usando a janela Propriedades em Business Intelligence Development Studioou é possível definir a propriedade programaticamente. Para obter mais informações, consulte Guia do desenvolvedor (Integration Services).
Observação |
---|
A propriedade TransactionOption influencia a aplicação ou não do valor da propriedade IsolationLevel pedida por um contêiner. Para obter mais informações, consulte a descrição da propriedade IsolationLevel no tópico Definindo propriedades do pacote. |
Para configurar um pacote para usar transações
Recursos externos
- Entrada de blog, How to Use Transactions in SQL Server Integration Services SSIS (em inglês), on www.mssqltips.com
|
Consulte também