SQL Server erreur d’assertion lorsque vous essayez d’exécuter une instruction DCP ou d’insertion en bloc
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’exécuter une BULK INSERT
opération ou .BCP
Version d’origine du produit : SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Numéro de la base de connaissances d’origine : 2700641
Symptômes
Prenons l’exemple du scénario suivant :
Les serveurs A et B exécutent Microsoft SQL Server 2008 ou SQL Server 2008 R2.
Vous configurez la mise en miroir de bases de données entre le serveur A et le serveur B.
Vous exécutez une
BULK INSERT
instruction ouBCP
sur la base de données principale.Remarque
Par défaut, l’option
CHECK_CONSTRAINTS
est désactivée lorsque vous exécutez uneBULK INSERT
instruction ouBCP
.La mise en miroir de bases de données est interrompue et la session de mise en miroir de bases de données passe à l’état SUSPENDED.
Dans ce scénario, une assertion se produit sur le serveur miroir. Par conséquent, un fichier de mini-vidage est créé dans le dossier de journal SQL Server. En outre, vous voyez l’erreur suivante dans le journal des erreurs SQL Server sur le serveur miroir :
Remarque
Vous devez réinitialiser la mise en miroir de bases de données pour résoudre ce problème.
Cause
Ce problème se produit car les informations de compatibilité de verrou dans le journal des transactions de la base de données principale ne sont pas transférées vers le serveur miroir.
Solution de contournement
Pour contourner ce problème, exécutez l’instruction BULK INSERT
ou BCP
sur la base de données principale à l’aide de l’option CHECK_CONSTRAINTS
.
Remarque
L’option CHECK_CONSTRAINTS
ralentit les performances. Toutefois, l’assertion de verrou sur le serveur miroir ne se produit pas.
Plus d'informations
Pendant une BULK INSERT
opération ou BCP
, une transaction enfant désactive l’option CHECK_CONSTRAINTS
. Cette transaction enfant utilise un verrou compatible avec les verrous de transaction parents. Les informations de compatibilité sont stockées dans le journal des transactions de la base de données principale. Par conséquent, la demande de verrouillage de transaction enfant est accordée sur la base de données principale.
Toutefois, ces informations de compatibilité ne sont pas transférées au serveur miroir. Par conséquent, la demande de verrou de transaction enfant n’est pas compatible avec les verrous de transaction parents sur le serveur miroir. Ce scénario provoque l’assertion sur le serveur miroir.
Commentaires
https://aka.ms/ContentUserFeedback.
Coming soon: Throughout 2024 we will be phasing out GitHub Issues as the feedback mechanism for content and replacing it with a new feedback system. For more information see:Envoyer et afficher des commentaires pour