Pergunta

Eu estou querendo saber como SSIS lida com transações com grandes conjuntos de dados. Eu tenho um conjunto de dados 'grandes' conjunto de cerca de 150.000 linhas, cada uma das quais deve ser validado contra regras de negócio como parte de um ETL de um banco de dados de preparo para o banco de dados ao vivo.

Se algum dos registros falhar as suas regras de negócios, nenhum registro deve acabar no banco de dados ao vivo (ou seja, a reversão da transação).

A minha pergunta é como SSIS lida com grandes transações - ou pode? Será que vai lidar entrar 149.999 registros, em seguida, rolar todo o lote de volta se o último registro falhar as suas regras busiless? Ou há um melhor de melhores práticas para realizar este tipo de operação de transferência de dados de grande porte?

Meu pensamento atual é para processar cada registro dentro de um recipiente sequência no nível do fluxo de controle, com as configurações transcation habilitado no recipiente. Todas as validações vai ser feito no interior do recipiente de sequência, e o inserto também irá ser feito neste recipiente.

Foi útil?

Solução

SSIS pode lidar com transações razoavelmente bem. Onde ela cai é ter operações contra vários bancos de dados ou servidores usando MSDTC (ainda funciona, mas há algumas ressalvas).

Você pode definir o TransactionOption na tarefa de fluxo de dados a ser exigido. Isto irá forçar o SSIS para inscrevê-lo em uma transação. Da mesma forma, você pode colocar o TransactionOption de outras tarefas para ser NotSupported (por exemplo, tabela de status de atualização falhar se ele falhar).

Você não pode realmente processar cada registro dentro de um recipiente de sequência (a menos que você loop sobre um fluxo de dados de tarefas várias vezes que provavelmente não é o melhor caminho). Em vez disso, eu ia colocar o fluxo de dados para TransactionOption necessário, e em seguida, ele deve falhar a tarefa se algum registro falhar em seus dados de fluxo e reverter toda a transação.

Outras dicas

Eu concordo com o servidor Dane, SSIS e SQL não deverá ter problemas com esta quantidade de transações desde que haja infra-estrutura adequada para suportar isto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top