Freigeben über


Blockieren, Deadlockbedingungen oder andere SQL Server-Probleme beim Herstellen einer Verbindung mit der BizTalkMsgBoxDb-Datenbank in BizTalk Server

Dieser Artikel enthält Informationen zum Beheben von SQL Server-Problemen, wenn Sie eine Verbindung mit der BizTalkMsgBoxDb Datenbank in Microsoft BizTalk Server herstellen.

Originalproduktversion: BizTalk Server
Ursprüngliche KB-Nummer: 917845

Symptome

In BizTalk Server treten Blockierungs-, Deadlock-Bedingungen oder andere Microsoft SQL Server-Probleme auf, wenn Sie versuchen, eine Verbindung mit der BizTalkMsgBoxDb Datenbank herzustellen.

Ursache

Dieses Problem kann auftreten, wenn mindestens eine der folgenden Bedingungen erfüllt ist:

  • Die Option "Statistik automatisch erstellen" ist in der BizTalkMsgBoxDb Datenbank aktiviert.
  • Die Option "Statistik automatisch aktualisieren" ist in der BizTalkMsgBoxDb Datenbank aktiviert.
  • Die Option für den maximalen Grad der Parallelität wird auf einen anderen Wert als 1 für die BizTalkMsgBoxDb Datenbank oder die SQL-Instanz festgelegt, die diese Datenbank hostet.
  • Sie defragmentieren oder erstellen einen Index in der BizTalkMsgBoxDb Datenbank neu, wenn BizTalk Server Daten verarbeitet.

Lösung 1: Deaktivieren der Option "Statistik automatisch erstellen" und option "Statistik automatisch aktualisieren"

Um dieses Problem zu beheben, deaktivieren Sie die Optionen "Statistik automatisch erstellen" und " Statistik automatisch aktualisieren" in der BizTalkMsgBoxDb Datenbank in SQL Server.

Auflösung 2: Festlegen des maximalen Grads der Parallelität auf 1

Um dieses Problem zu beheben, legen Sie in der BizTalkMsgBoxDb Datenbankeinstellung oder der SQL-Instanz, die diese Datenbank hostet, die maximale Parallelitätsoption auf 1 fest.

Lösung 3: Erstellen Sie keinen Index neu, wenn BizTalk Server Daten verarbeitet

Um dieses Problem zu beheben, führen Sie die bts_RebuildIndexes gespeicherte Prozedur oder keinen SQL-Befehl aus, der einen Index in einer BizTalk Server-Datenbank neu erstellt, wenn BizTalk Server Daten verarbeitet.

Notiz

Das Defragmentieren eines Indexes in einer BizTalk Server-Datenbank wird nicht unterstützt.

Die bts_RebuildIndexes gespeicherte Prozedur

Die einzige unterstützte Methode zum Neuerstellen eines Indexes in der BizTalkMsgBoxDb Datenbank besteht darin, die bts_RebuildIndexes gespeicherte Prozedur auszuführen. In BizTalk Server 2006 und höheren Versionen können Sie die dtasp_RebuildIndexes gespeicherte Prozedur ausführen, um Indizes in der BizTalkDTADb Datenbank neu zu erstellen.

Die meisten BizTalk-Indizes sind GUID-basiert. Viele Tests haben gezeigt, dass GUID-basierte Indizes besser als identitätsbasierte Indizes für BizTalk-spezifische Workloads funktionieren können, solange die Tabellen nicht gescannt werden. Dies kann zu Fragmentierung führen. Da daten jedoch in und aus den Tabellen in einem stetigen Tempo fließen, kann die Fragmentierung keine Probleme verursachen. Wenn viele Daten in der BizTalkMsgBox Datenbank erstellt werden sollen, können Sie in regelmäßigen Abständen Indizes während geplanter Ausfallzeiten neu erstellen. Die gleichen Richtlinien gelten für die Nachverfolgungsdatenbank.

Sie können den DBCC DBREINDEX SQL-Befehl verwenden, um einen Index in den anderen BizTalk Server-Datenbanken neu zu erstellen. Wenn Sie ein Beispiel für die Verwendung des DBCC DBREINDEX SQL-Befehls verwenden möchten, klicken Sie mit der rechten Maustaste auf die bts_RebuildIndexes gespeicherte Prozedur, und klicken Sie dann auf Eigenschaften.

Microsoft unterstützt nur die Neuerstellung von Datenbankindizes während der Ausfallzeit von BizTalk Server. Sie sollten alle Hostinstanzen und SQL Server-Agent beenden, bevor Sie einen Index neu erstellen. Wenn Sie die bts_RebuildIndexes gespeicherte Prozedur in BizTalk Server 2006 und höheren Versionen ausführen, erhalten Sie möglicherweise eine der folgenden Fehlermeldungen:

  • Fehlermeldung 1

    Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Kann Objekt-ID nicht verarbeiten 674101442 (Objekt 'TrackingData')
    Dieser DbCC-Befehl (Database Consistency Checker) unterstützt diese Art von Objekt nicht.

  • Fehlermeldung 2

    Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Kann Objekt-ID 722101613 (Objekt 'TrackingData') nicht verarbeiten, da dieser DBCC-Befehl Objekte dieses Typs nicht unterstützt.

Dieses Problem tritt auf, da das TrackingData Objekt eine Ansicht in BizTalk Server 2006 und höheren Versionen ist. Gehen Sie wie folgt vor, und führen Sie dann die bts_RebuildIndexes gespeicherte Prozedur aus, um dieses Problem zu beheben:

  1. Kommentieren Sie die folgende Zeile in der bts_RebuildIndexes gespeicherten Prozedur aus.

    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
    
  2. Fügen Sie der gespeicherten Prozedur die folgenden Zeilen bts_RebuildIndexes hinzu.

    DBCC DBREINDEX ('[dbo].[TrackingData_0_0]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_1]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_2]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_0_3]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_0]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_1]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_2]') WITH NO_INFOMSGS
    DBCC DBREINDEX ('[dbo].[TrackingData_1_3]') WITH NO_INFOMSGS