Blocco, condizioni di deadlock o altri problemi di SQL Server quando ci si connette al database BizTalkMsgBoxDb in BizTalk Server
Questo articolo fornisce informazioni sulla risoluzione dei problemi di SQL Server quando ci si connette al BizTalkMsgBoxDb
database in Microsoft BizTalk Server.
Versione originale del prodotto: BizTalk Server
Numero KB originale: 917845
Sintomi
In BizTalk Server si verificano problemi di blocco, deadlock o altri problemi di Microsoft SQL Server quando si tenta di connettersi al BizTalkMsgBoxDb
database.
Causa
Questo problema può verificarsi se una o più delle seguenti condizioni sono vere:
- L'opzione Creazione automatica statistiche è abilitata nel
BizTalkMsgBoxDb
database. - L'opzione Aggiornamento automatico statistiche è abilitata nel
BizTalkMsgBoxDb
database. - L'opzione max degree of parallelism è impostata su un valore diverso da 1 per il
BizTalkMsgBoxDb
database o l'istanza SQL che ospita questo database. - Si deframmenta o si ricompila un indice nel
BizTalkMsgBoxDb
database quando BizTalk Server elabora i dati.
Risoluzione 1: Disabilitare l'opzione Auto Create Statistics e l'opzione Auto Update Statistics
Per risolvere questo problema, disabilitare le opzioni Creazione automatica statistiche e Statistiche di aggiornamento automatico nel BizTalkMsgBoxDb
database in SQL Server.
Risoluzione 2: impostare l'opzione max degree of parallelism su 1
Per risolvere questo problema, impostare l'opzione max degree of parallelism su 1 nell'impostazione del database o nell'istanza BizTalkMsgBoxDb
SQL che ospita il database.
Risoluzione 3: Non ricompilare un indice quando BizTalk Server elabora i dati
Per risolvere questo problema, non eseguire la bts_RebuildIndexes
stored procedure o alcun comando SQL che ricompila un indice in un database BizTalk Server quando BizTalk Server elabora i dati.
Note
La deframmentazione di un indice in un database BizTalk Server non è supportata.
Stored procedure bts_RebuildIndexes
L'unico metodo supportato per ricompilare un indice nel database consiste nell'eseguire BizTalkMsgBoxDb
la bts_RebuildIndexes
stored procedure. In BizTalk Server 2006 e versioni successive è possibile eseguire la dtasp_RebuildIndexes
stored procedure per ricompilare gli indici nel BizTalkDTADb
database.
La maggior parte degli indici BizTalk è basata su GUID. Molti test hanno dimostrato che, purché le tabelle non vengano analizzate, gli indici basati su GUID possono ottenere prestazioni migliori rispetto agli indici basati sull'identità per carichi di lavoro specifici di BizTalk. Ciò può causare frammentazione. Tuttavia, poiché i flussi di dati vengono inseriti e usciti dalle tabelle a un ritmo costante, la frammentazione potrebbe non causare problemi. Se si prevede che un numero elevato di dati venga compilato nel BizTalkMsgBox
database, è possibile ricompilare periodicamente gli indici durante i tempi di inattività pianificati. Le stesse linee guida si applicano al database di rilevamento.
È possibile usare il DBCC DBREINDEX
comando SQL per ricompilare un indice negli altri database BizTalk Server. Per un esempio di come usare il comando SQL, fare clic con il DBCC DBREINDEX
pulsante destro del mouse sulla bts_RebuildIndexes
stored procedure e quindi scegliere Proprietà.
Microsoft supporta solo la ricompilazione degli indici di database durante il tempo di inattività di BizTalk Server. Prima di ricompilare un indice, è consigliabile arrestare tutte le istanze host e SQL Server Agent. Quando si esegue la bts_RebuildIndexes
stored procedure in BizTalk Server 2006 e versioni successive, è possibile che venga visualizzato uno dei messaggi di errore seguenti:
Messaggio di errore 1
Messaggio 5239, Livello 16, Stato 1, Routine bts_RebuildIndexes, Riga 4 Impossibile elaborare l'ID oggetto 674101442 (oggetto 'TrackingData')
Questo comando DBCC (Database Consistency Checker) non supporta questo tipo di oggetto.Messaggio di errore 2
Messaggio 5239, Livello 16, Stato 1, Routine bts_RebuildIndexes, Riga 4 Impossibile elaborare l'ID oggetto 722101613 (oggetto 'TrackingData') perché questo comando DBCC non supporta oggetti di questo tipo.
Questo problema si verifica perché l'oggetto TrackingData
è una visualizzazione in BizTalk Server 2006 e versioni successive. Per risolvere questo problema, eseguire le operazioni seguenti e quindi eseguire la bts_RebuildIndexes
stored procedure:
Impostare come commento la riga seguente nella
bts_RebuildIndexes
stored procedure.DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
Aggiungere le righe seguenti alla
bts_RebuildIndexes
stored procedure.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