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 beim Herstellen einer Verbindung mit der BizTalkMsgBoxDb Datenbank in Microsoft BizTalk Server.

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

Problembeschreibung

In BizTalk Server treten Beim Versuch, eine Verbindung mit der BizTalkMsgBoxDb Datenbank herzustellen, Blockierungen, Deadlockbedingungen oder andere Probleme mit microsoft SQL Server auf.

Ursache

Dieses Problem kann auftreten, wenn mindestens eine der folgenden Bedingungen zutrifft:

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

Lösung 1: Deaktivieren sie die Option "Statistiken automatisch Create" und die Option "Statistiken automatisch aktualisieren"

Um dieses Problem zu beheben, deaktivieren Sie die Optionen Statistiken automatisch Create und Statistiken automatisch aktualisieren für die BizTalkMsgBoxDb Datenbank in SQL Server.

Lösung 2: Legen Sie die Option max. Grad an Parallelität auf 1 fest.

Um dieses Problem zu beheben, legen Sie die Option max. Grad an Parallelität in der BizTalkMsgBoxDb Datenbankeinstellung oder im SQL-instance, der diese Datenbank hostet, auf 1 fest.

Lösung 3: Index nicht neu erstellen, wenn BizTalk Server Daten verarbeitet

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

Hinweis

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

Die gespeicherte Prozedur bts_RebuildIndexes

Die einzige unterstützte Methode zum Neuerstellen eines Indexes in der BizTalkMsgBoxDb Datenbank ist die Ausführung der gespeicherten bts_RebuildIndexes Prozedur. Ab BizTalk Server 2006 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 für BizTalk-spezifische Workloads besser funktionieren können als identitätsbasierte Indizes, solange die Tabellen nicht gescannt werden. Dies kann zu Einer Fragmentierung führen. Da daten jedoch in einem konstanten Tempo in die Tabellen ein- und aus den Tabellen fließen, kann die Fragmentierung keine Probleme verursachen. Wenn erwartet wird, dass sich viele Daten in der BizTalkMsgBox Datenbank aufbauen, können Sie Indizes während geplanter Ausfallzeiten regelmäßig neu erstellen. Die gleichen Richtlinien gelten für die Nachverfolgungsdatenbank.

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

Microsoft unterstützt die Neuerstellung von Datenbankindizes nur während BizTalk Server Downtime. 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, wird möglicherweise eine der folgenden Fehlermeldungen angezeigt:

  • Fehlermeldung 1

    Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Unable to process object ID 674101442 (Object '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 Unable to process object ID 722101613 (Object 'TrackingData'), da dieser DBCC-Befehl keine Objekte dieses Typs unterstützt.

Dieses Problem tritt auf, weil das TrackingData Objekt eine Ansicht in BizTalk Server 2006 und höheren Versionen ist. Führen Sie zum Beheben dieses Problems die folgenden Schritte aus, und führen Sie dann die gespeicherte bts_RebuildIndexes Prozedur aus:

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

    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
    
  2. Fügen Sie der gespeicherten Prozedur die bts_RebuildIndexes folgenden Zeilen 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