Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen, das Problem zu beheben, das auftritt, wenn Sie versuchen, einen BULK INSERT
Vorgang BCP
auszuführen.
Originalproduktversion: SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Ursprüngliche KB-Nummer: 2700641
Symptome
Betrachten Sie das folgende Szenario:
Server A und Server B führen Microsoft SQL Server 2008 oder SQL Server 2008 R2 aus.
Sie richten die Datenbankspiegelung zwischen Server A und Server B ein.
Sie führen eine oder
BULK INSERT
eineBCP
Anweisung für die Prinzipaldatenbank aus.Hinweis
Die Option ist standardmäßig deaktiviert
CHECK_CONSTRAINTS
, wenn Sie eine oderBULK INSERT
eineBCP
Anweisung ausführen.Die Datenbankspiegelung ist unterbrochen, und die Datenbankspiegelungssitzung wechselt in den Zustand "ANGEHALTEN".
In diesem Szenario tritt eine Assertion auf dem Spiegelserver auf. Daher wird eine Miniabbilddatei im SQL Server-Protokollordner erstellt. Darüber hinaus wird der folgende Fehler im SQL Server-Fehlerprotokoll auf dem Spiegelserver angezeigt:
Hinweis
Sie müssen die Datenbankspiegelung erneut initialisieren, um dieses Problem zu beheben.
Ursache
Dieses Problem tritt auf, da die Sperrkompatibilitätsinformationen im Transaktionsprotokoll der Prinzipaldatenbank nicht an den Spiegelserver übertragen werden.
Zwischenlösung
Um dieses Problem zu umgehen, führen Sie die BULK INSERT
Oder-Anweisung BCP
für die Prinzipaldatenbank mithilfe der CHECK_CONSTRAINTS
Option aus.
Hinweis
Die CHECK_CONSTRAINTS
Option verursacht eine langsamere Leistung. Die Sperrbehauptung auf dem Spiegelserver tritt jedoch nicht auf.
Mehr Informationen
Während eines Vorgangs BULK INSERT
BCP
deaktiviert eine untergeordnete Transaktion die CHECK_CONSTRAINTS
Option. Diese untergeordnete Transaktion verwendet eine Sperre, die mit den übergeordneten Transaktionssperren kompatibel ist. Die Kompatibilitätsinformationen werden im Transaktionsprotokoll der Prinzipaldatenbank gespeichert. Daher wird die Anforderung für die untergeordnete Transaktionssperre in der Prinzipaldatenbank erteilt.
Diese Kompatibilitätsinformationen werden jedoch nicht an den Spiegelserver übertragen. Daher ist die untergeordnete Transaktionssperranforderung nicht mit den übergeordneten Transaktionssperren auf dem Spiegelserver kompatibel. In diesem Szenario wird die Assertion auf dem Spiegelserver ausgeführt.