SQL Server Assertionsfehler beim Versuch, eine Masseneinfügungs- oder BCP-Anweisung auszuführen

Dieser Artikel hilft Ihnen, das Problem zu beheben, das auftritt, wenn Sie versuchen, einen - oder BCP -BULK INSERTVorgang auszuführen.

Ursprüngliche Produktversion: SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Ursprüngliche KB-Nummer: 2700641

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Auf Server A und Server B wird Microsoft SQL Server 2008 oder SQL Server 2008 R2 ausgeführt.

  • Sie richten die Datenbankspiegelung zwischen Server A und Server B ein.

  • Sie führen eine BULK INSERT - oder BCP -Anweisung für die Prinzipaldatenbank aus.

    Hinweis

    Standardmäßig ist die CHECK_CONSTRAINTS Option auf off festgelegt, wenn Sie eine - oder BCP -BULK INSERTAnweisung ausführen.

  • Die Datenbankspiegelung ist unterbrochen, und die Datenbankspiegelungssitzung wechselt in den Zustand SUSPENDED.

In diesem Szenario erfolgt eine Assertion auf dem Spiegel Server. Daher wird im Protokollordner SQL Server eine Minidumpdatei erstellt. Darüber hinaus wird der folgende Fehler im SQL Server Fehlerprotokoll auf dem Spiegel-Server angezeigt:

Hinweis

Sie müssen die Datenbankspiegelung erneut initialisieren, um dieses Problem zu beheben.

Ursache

Dieses Problem tritt auf, weil die Informationen zur Sperrkompatibilität im Transaktionsprotokoll der Prinzipaldatenbank nicht an den Spiegel-Server übertragen werden.

Problemumgehung

Um dieses Problem zu umgehen, führen Sie die BULK INSERT - oder BCP -Anweisung für die Prinzipaldatenbank mithilfe der CHECK_CONSTRAINTS -Option aus.

Hinweis

Die CHECK_CONSTRAINTS Option führt zu einer langsameren Leistung. Die Sperre für den Spiegel Server tritt jedoch nicht auf.

Weitere Informationen

Während eines BULK INSERT - oder BCP -Vorgangs 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 für die Prinzipaldatenbank erteilt.

Diese Kompatibilitätsinformationen werden jedoch nicht an den Spiegel Server übertragen. Daher ist die Anforderung für die untergeordnete Transaktionssperre nicht mit den übergeordneten Transaktionssperren auf dem Spiegel Server kompatibel. In diesem Szenario wird die Assertion auf dem Spiegel Server verursacht.