Freigeben über


SQL Server Assertion-Fehler, wenn Sie versuchen, eine Bulk Insert- oder BCP-Anweisung auszuführen.

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 eine BCP Anweisung für die Prinzipaldatenbank aus.

    Hinweis

    Die Option ist standardmäßig deaktiviertCHECK_CONSTRAINTS, wenn Sie eine oder BULK INSERT eine BCP 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 INSERTBCP 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.