A execução de um pacote SSIS para de responder quando você habilita transações DTC para um pacote no Microsoft SQL Server
Este artigo ajuda você a resolve o problema em que a execução de um pacote SSIS (Microsoft SQL Server Integration Services) para de responder se você habilitar transações DTC para o pacote e habilitar a ValidateExternalMetadata
propriedade para um componente em uma tarefa de fluxo de dados.
Versão original do produto: SQL Server
Número de KB original: 2253391
Sintomas
Considere o seguinte cenário:
- Você cria um pacote SSIS no SQL Server.
- O pacote SSIS contém uma tarefa de fluxo de dados e algumas outras tarefas.
- A
TransactionOption
propriedade do pacote SSIS é definida como Obrigatório para usar transações DTC. - As outras tarefas são executadas em uma transação DTC antes da execução da tarefa de fluxo de dados.
- Você adiciona um componente à tarefa de fluxo de dados.
- A
ValidateExternalMetadata
propriedade de um componente de fluxo de dados é definida como True. - A tarefa de fluxo de dados contém um componente OLE DB Destination que tem o modo de acesso de dados definido como Tabela ou exibição, ou como nome da tabela ou variável de nome de exibição.
Quando você executa o pacote nesse cenário, a execução para de responder. Além disso, se você depurar o pacote SSIS no Visual Studio, receberá mensagens que se assemelham ao seguinte na exibição Progresso :
Pacote SSIS "Package.dtsx" começando.
Informações: 0x4004300A em Fluxo de Dados Task, DTS. Pipeline: a fase de validação está começando. Informações: 0x4001100A no Pacote: iniciando a transação distribuída para este contêiner. Informações: 0x4004300A em Fluxo de Dados Task, DTS. Pipeline: a fase de validação está começando.
Motivo
Esse problema ocorre porque a conexão no fluxo de dados não está registrada na transação DTC. Isso faz com que a execução do sp_cursoropen
procedimento armazenado seja bloqueada. Esse é um recurso de design porque uma conexão não pode ser registrada em uma transação DTC durante o processo de validação. No cenário descrito na seção Sintomas , o processo de validação de um componente de fluxo de dados é bloqueado quando você executa o pacote porque a conexão na tarefa de fluxo de dados não foi registrada na transação DTC.
Resolução
Para resolver esse problema, use um dos seguintes métodos:
Defina
ValidateExternalMetadata
para todos os componentes da tarefa de fluxo de dados como False.Defina o modo de acesso de dados do componente Destino OLE DB como um dos seguintes modos:
- Tabela ou exibição – carregamento rápido
- Nome da tabela ou variável de nome de exibição – carregamento rápido
- Comando SQL
Mais informações
O modo de acesso a dados Table ou View está bloqueado, mas outros modos de acesso a dados não são bloqueados porque os comandos diferentes emitidos pelo provedor de dados para cada modo de acesso a dados. Para obter mais detalhes sobre esse problema, use SQL Server Profiler para ver os diferentes comandos emitidos pelo provedor de dados.
Para obter mais informações sobre como usar SQL Server Profiler, consulte SQL Server Profiler Modelos e Permissões.
Para obter mais informações sobre como solucionar problemas de pacotes SSIS, confira Solução de problemas de desenvolvimento de pacotes.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários