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
oBCP
nel database principale.Nota
Per impostazione predefinita, l'opzione
CHECK_CONSTRAINTS
è disattivata quando si esegue un'istruzioneBULK INSERT
oBCP
.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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per