Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’exécuter une ou une BULK INSERTBCP opération.
Version du produit d’origine : SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Numéro de la base de connaissances d’origine : 2700641
Symptômes
Considérez le scénario suivant :
Le serveur A et le serveur 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 instruction ou
BULK INSERTuneBCPinstruction sur la base de données principale.Remarque
Par défaut, l’option
CHECK_CONSTRAINTSest désactivée lorsque vous exécutez une instruction ouBULK INSERTuneBCPinstruction.La mise en miroir de bases de données est interrompue et la session de mise en miroir de bases de données entre dans l’état SUSPENDED.
Dans ce scénario, une assertion se produit sur le serveur miroir. Par conséquent, un fichier mini-vidage est créé dans le dossier du 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.
La cause
Ce problème se produit parce que 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.
Contournement
Pour contourner ce problème, exécutez l’instruction ou l’instruction BULK INSERT sur la base de données principale à l’aide de l’optionBCP.CHECK_CONSTRAINTS
Remarque
L’option CHECK_CONSTRAINTS entraîne des performances plus lentes. Toutefois, l’assertion de verrou sur le serveur miroir ne se produit pas.
Plus d’informations
Pendant une BULK INSERT ou BCP une opération, une transaction enfant désactive l’option CHECK_CONSTRAINTS . Cette transaction enfant utilise un verrou compatible avec les verrous de transaction parent. 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 verrou de transaction enfant est accordée sur la base de données principale.
Toutefois, ces informations de compatibilité ne sont pas transférées vers le serveur miroir. Par conséquent, la demande de verrou de transaction enfant n’est pas compatible avec les verrous de transaction parent sur le serveur miroir. Ce scénario provoque l’assertion sur le serveur miroir.