Bloqueo, condiciones de interbloqueo u otros problemas de SQL Server al conectarse a la base de datos BizTalkMsgBoxDb en BizTalk Server
En este artículo se proporciona información sobre cómo resolver problemas de SQL Server al conectarse a la BizTalkMsgBoxDb
base de datos en Microsoft BizTalk Server.
Versión original del producto: BizTalk Server
Número de KB original: 917845
Síntomas
En BizTalk Server, experimenta problemas de bloqueo, interbloqueo u otros problemas de Microsoft SQL Server al intentar conectarse a la BizTalkMsgBoxDb
base de datos.
Causa
Este problema puede producirse si se cumplen una o varias de las condiciones siguientes:
- La opción Crear estadísticas automáticamente está habilitada en la
BizTalkMsgBoxDb
base de datos. - La opción Estadísticas de actualización automática está habilitada en la
BizTalkMsgBoxDb
base de datos. - La opción grado máximo de paralelismo se establece en un valor distinto de 1 para la
BizTalkMsgBoxDb
base de datos o la instancia de SQL que hospeda esta base de datos. - Desfragmenta o vuelve a generar un índice en la
BizTalkMsgBoxDb
base de datos cuando BizTalk Server procesa los datos.
Resolución 1: Deshabilite la opción Crear estadísticas automáticamente y la opción Estadísticas de actualización automática
Para resolver este problema, deshabilite las opciones Auto Create Statistics y Auto Update Statistics en la BizTalkMsgBoxDb
base de datos de SQL Server.
Resolución 2: Establecer la opción grado máximo de paralelismo en 1
Para resolver este problema, establezca la opción grado máximo de paralelismo en 1 en la configuración de la BizTalkMsgBoxDb
base de datos o en la instancia de SQL que hospeda esta base de datos.
Resolución 3: No recompilar un índice cuando BizTalk Server está procesando datos
Para resolver este problema, no ejecute el bts_RebuildIndexes
procedimiento almacenado ni ningún comando SQL que recompile un índice en una base de datos de BizTalk Server cuando BizTalk Server está procesando datos.
Nota:
No se admite la desfragmentación de un índice en una base de datos de BizTalk Server.
Procedimiento almacenado bts_RebuildIndexes
El único método admitido para volver a generar un índice en la BizTalkMsgBoxDb
base de datos es ejecutar el bts_RebuildIndexes
procedimiento almacenado. En BizTalk Server 2006 y versiones posteriores, puede ejecutar el dtasp_RebuildIndexes
procedimiento almacenado para volver a generar índices en la BizTalkDTADb
base de datos.
La mayoría de los índices de BizTalk se basan en GUID. Muchas pruebas han demostrado que, siempre que las tablas no se examinen, los índices basados en GUID pueden funcionar mejor que los índices basados en identidades para cargas de trabajo específicas de BizTalk. Esto puede provocar fragmentación. Sin embargo, dado que los datos fluyen hacia y fuera de las tablas a un ritmo constante, la fragmentación puede no provocar problemas. Si se espera que se compilen muchos datos en la BizTalkMsgBox
base de datos, puede volver a generar índices periódicamente durante el tiempo de inactividad programado. Las mismas directrices se aplican a la base de datos de seguimiento.
Puede usar el DBCC DBREINDEX
comando SQL para recompilar un índice en las otras bases de datos de BizTalk Server. Para obtener un ejemplo de cómo usar el DBCC DBREINDEX
comando SQL, haga clic con el botón derecho en el bts_RebuildIndexes
procedimiento almacenado y, a continuación, haga clic en Propiedades.
Microsoft solo admite la regeneración de índices de base de datos durante el tiempo de inactividad de BizTalk Server. Debe detener todas las instancias de host y Agente SQL Server antes de volver a generar un índice. Al ejecutar el bts_RebuildIndexes
procedimiento almacenado en BizTalk Server 2006 y versiones posteriores, puede recibir uno de los siguientes mensajes de error:
Mensaje de error 1
Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Unable to process object ID 674101442 (object 'TrackingData')
Este comando de comprobador de coherencia de base de datos (DBCC) no admite este tipo de objeto.Mensaje de error 2
Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Unable to process object ID 722101613 (object 'TrackingData') porque este comando DBCC no admite objetos de este tipo.
Este problema se produce porque el TrackingData
objeto es una vista en BizTalk Server 2006 y versiones posteriores. Para resolver este problema, haga lo siguiente y ejecute el bts_RebuildIndexes
procedimiento almacenado:
Comente la siguiente línea en el
bts_RebuildIndexes
procedimiento almacenado.DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
Agregue las líneas siguientes al
bts_RebuildIndexes
procedimiento almacenado.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