SQL Server erro de declaração ao tentar executar uma instrução Inserção em Massa ou BCP
Este artigo ajuda você a resolve o problema que ocorre quando você tenta executar uma BULK INSERT
operação ouBCP
.
Versão original do produto: SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Número de KB original: 2700641
Sintomas
Considere o seguinte cenário:
O Servidor A e o Servidor B estão executando o Microsoft SQL Server 2008 ou SQL Server 2008 R2.
Você configurou o espelhamento de banco de dados entre o Servidor A e o Servidor B.
Você executa uma
BULK INSERT
instrução ouBCP
no banco de dados principal.Observação
Por padrão, a opção
CHECK_CONSTRAINTS
é definida como desativada quando você executa umaBULK INSERT
instrução ouBCP
.O espelhamento de banco de dados está quebrado e a sessão de espelhamento de banco de dados insere o estado SUSPEND.
Nesse cenário, ocorre uma declaração no servidor espelho. Portanto, um arquivo de mini-despejo é criado na pasta de log SQL Server. Além disso, você verá o seguinte erro no log de erros do SQL Server no servidor espelho:
Observação
Você deve reinitializar o espelhamento de banco de dados para resolve esse problema.
Motivo
Esse problema ocorre porque as informações de compatibilidade de bloqueio no log de transações do banco de dados principal não são transferidas para o servidor espelho.
Solução alternativa
Para contornar esse problema, execute a BULK INSERT
instrução ou BCP
no banco de dados principal usando a opção CHECK_CONSTRAINTS
.
Observação
A opção CHECK_CONSTRAINTS
causa um desempenho mais lento. No entanto, a declaração de bloqueio no servidor espelho não ocorre.
Mais informações
Durante uma BULK INSERT
operação ou BCP
, uma transação filho desativa a opção CHECK_CONSTRAINTS
. Essa transação filho usa um bloqueio compatível com os bloqueios de transação pai. As informações de compatibilidade são armazenadas no log de transações do banco de dados principal. Portanto, a solicitação de bloqueio de transação filho é concedida no banco de dados principal.
No entanto, essas informações de compatibilidade não são transferidas para o servidor espelho. Portanto, a solicitação de bloqueio de transação filho é incompatível com os bloqueios de transação pai no servidor espelho. Esse cenário faz com que a declaração no servidor espelho.
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