SQL Server errore di asserzione quando si tenta di eseguire un'istruzione Bulk Insert o BCP

Questo articolo consente di risolvere il problema che si verifica quando si tenta di eseguire un'operazione BULK INSERT o BCP .

Versione originale del prodotto: SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Numero KB originale: 2700641

Sintomi

Considerare lo scenario descritto di seguito:

  • Il server A e il server B eseguono Microsoft SQL Server 2008 o SQL Server 2008 R2.

  • È stato configurato il mirroring del database tra il server A e il server B.

  • È possibile eseguire un'istruzione BULK INSERT o BCP nel database principale.

    Nota

    Per impostazione predefinita, l'opzione CHECK_CONSTRAINTS è disattivata quando si esegue un'istruzione BULK INSERT o BCP .

  • Il mirroring del database è interrotto e la sessione di mirroring del database entra nello stato SUSPENDED.

In questo scenario si verifica un'asserzione nel server mirror. Di conseguenza, viene creato un file di mini dump nella cartella del log SQL Server. Inoltre, viene visualizzato l'errore seguente nel log degli errori SQL Server nel server mirror:

Nota

Per risolvere questo problema, è necessario reinizializzare il mirroring del database.

Causa

Questo problema si verifica perché le informazioni sulla compatibilità dei blocchi nel log delle transazioni del database principale non vengono trasferite nel server mirror.

Soluzione alternativa

Per risolvere questo problema, eseguire l'istruzione BULK INSERT o BCP nel database principale usando l'opzione CHECK_CONSTRAINTS .

Nota

L'opzione CHECK_CONSTRAINTS causa un rallentamento delle prestazioni. Tuttavia, l'asserzione di blocco nel server mirror non si verifica.

Ulteriori informazioni

Durante un'operazione BULK INSERT o BCP , una transazione figlio disattiva l'opzione CHECK_CONSTRAINTS . Questa transazione figlio usa un blocco compatibile con i blocchi delle transazioni padre. Le informazioni sulla compatibilità vengono archiviate nel log delle transazioni del database principale. Pertanto, la richiesta di blocco delle transazioni figlio viene concessa nel database principale.

Tuttavia, queste informazioni sulla compatibilità non vengono trasferite nel server mirror. Pertanto, la richiesta di blocco delle transazioni figlio non è compatibile con i blocchi delle transazioni padre nel server mirror. Questo scenario causa l'asserzione nel server mirror.