Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
BizTalkMsgBoxDbdatabase. - L'opzione Aggiornamento automatico statistiche è abilitata nel
BizTalkMsgBoxDbdatabase. - L'opzione max degree of parallelism è impostata su un valore diverso da 1 per il
BizTalkMsgBoxDbdatabase o l'istanza SQL che ospita questo database. - Si deframmenta o si ricompila un indice nel
BizTalkMsgBoxDbdatabase 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.
Annotazioni
La deframmentazione di un indice in un database BizTalk Server non è supportata.
La stored procedure bts_RebuildIndexes
L'unico metodo supportato per ricompilare un indice nel database BizTalkMsgBoxDb consiste nell'eseguire la procedura memorizzata bts_RebuildIndexes. 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 vista in BizTalk Server 2006 e versioni successive. Per risolvere questo problema, eseguire i passaggi seguenti e quindi eseguire la procedura memorizzata bts_RebuildIndexes:
Commentare la riga seguente nella procedura memorizzata
bts_RebuildIndexes.DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGSAggiungere le righe seguenti alla procedura memorizzata
bts_RebuildIndexes.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