KB2412203 - Mensagem de erro "Bulk Insert with another outstanding result set should be run with XACT_ABORT on" pode ocorrer quando executa uma transacção DTC ou MARS no SQL Server 2008 ou SQL Server 2008 R2

Aplica-se A
SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Standard Edition for Small Business SQL Server 2008 Workgroup SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Standard Edition for Small Business SQL Server 2008 R2 Workgroup

A Microsoft distribui as correções do Microsoft SQL Server 2008 e do Microsoft SQL Server 2008 R2 como um ficheiro transferível. Como as correções são cumulativas, cada nova versão contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 ou SQL Server 2008 R2 corrigir lançamento.

Sintomas

Tenha em conta o seguinte cenário:

  • Executar uma aplicação do Microsoft SQL Server que tem uma transação Distributed Transaction Coordinator (DTC) ou Multiple Active Result Sets (MARS) configurada.

    Por exemplo, você executa o Microsoft SQL Server Integration Services que inicia uma transação DTC ou MARS.

  • Você inicia uma operação BULK LOAD como parte da transação DTC ou MARS para uma tabela de destino. A opção FIRE_TRIGGERS não é especificada numa instrução BULK INSERT da operação BULK LOAD.

    Observação Uma operação BULK LOAD executa uma instrução BULK INSERT.

  • Você inicia outra operação BULK LOAD ou uma operação padrão de linguagem de manipulação de dados (DML) para outra tabela de destino enquanto a primeira operação BULK LOAD é executada. Estas operações paralelas fazem parte da mesma operação DTC ou MARS. .

Nesse cenário, você receberá a seguinte mensagem de erro:

Nota

Erro: 595, gravidade: 16, estado: 1
A Inserção em Massa com outro conjunto de resultados pendente deve ser executada com XACT_ABORT ativado.

Causa

Este problema ocorre porque o SQL Server deteta incorretamente um impasse MARS. SQL Server evita impasses que podem ocorrer quando inicia uma transação MARS ou DTC. No entanto, SQL Server não verifica se a opção FIRE_TRIGGERS está especificada na instrução BULK INSERT.

Nota

  • Para obter mais informações sobre como evitar um impasse MARS no SQL Server, consulte a seção "Execução intercalada" do artigo "Multiple Active Result Sets (MARS) no SQL Server 2005" no site Microsoft Developer Network (MSDN).

    Para obter mais informações sobre o artigo "Multiple Active Result Sets (MARS) no SQL Server 2005", visite o seguinte site da Microsoft Developer Network (MSDN):
    O artigo "Multiple Active Result Sets (MARS) in SQL Server 2005"

Resolução

Informações de atualização cumulativa

SQL Server 2008

A correção para esse problema foi lançada pela primeira vez na atualização cumulativa 11 para SQL Server 2008 Service Pack 1. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2413738 Pacote de atualizações cumulativas 11 para SQL Server 2008 Service Pack 1Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

970365 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 1 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs SQL Server específicos. Tem de aplicar uma correção do SQL Server 2008 Service Pack 1 a uma instalação do SQL Server 2008 Service Pack 1. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.

SQL Server 2008 R2

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 5. Para obter mais informações sobre como obter este pacote de atualização cumulativa para o SQL Server 2008 R2, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2438347 pacote de atualização cumulativa 5 para SQL Server 2008 R2 Observação Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 R2 corrigir lançamento. Recomendamos que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

981356 As compilações SQL Server 2008 R2 lançadas após o lançamento do SQL Server 2008 R2

SQL Server 2008 Service Pack 2

A correção para este problema foi lançada pela primeira vez na Atualização Cumulativa 2 para SQL Server 2008 Service Pack 2. Para obter mais informações sobre este pacote de atualização cumulativa, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

2467239 Pacote de atualizações cumulativas 2 para SQL Server 2008 Service Pack 2Nota Como as compilações são cumulativas, cada nova versão de correção contém todos os hotfixes e todas as correções de segurança que foram incluídas com o anterior SQL Server 2008 corrigir lançamento. A Microsoft recomenda que você considere aplicar o lançamento de correção mais recente que contém esse hotfix. Para mais informações, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:

2402659 As compilações do SQL Server 2008 lançadas após o lançamento do SQL Server 2008 Service Pack 2 Os hotfixes do Microsoft SQL Server 2008 são criados para service packs SQL Server específicos. Tem de aplicar uma correção do SQL Server 2008 Service Pack 2 a uma instalação do SQL Server 2008 Service Pack 2. Por padrão, qualquer hotfix fornecido em um SQL Server service pack é incluído no próximo SQL Server service pack.

Estado

A Microsoft confirmou que se trata de um problema nos produtos Microsoft listados na secção "Aplica-se a".

Referências

Para obter mais informações sobre a instrução BULK INSERT, visite o seguinte site da MSDN:

Informações gerais sobre a instrução BULK INSERT Para obter mais informações sobre o destino OLE DB, visite o seguinte site da MSDN:

Informações gerais sobre o destino OLE DB Para obter mais informações sobre o modelo de manutenção incremental para SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

935897 Um modelo de manutenção incremental está disponível na equipe de SQL Server para fornecer hotfixes para problemas relatados

Para obter mais informações sobre o esquema de nomenclatura para atualizações SQL Server, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

822499 Novo esquema de nomenclatura para pacotes de atualização de software do Microsoft SQL Server Para obter mais informações sobre terminologia de atualização de software, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:

824684 Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft