Bloqueo, condiciones de interbloqueo u otros problemas de SQL Server al conectarse a la base de datos de 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 Estadísticas de Create automáticas está habilitada en la BizTalkMsgBoxDb base de datos.
  • La opción Actualizar estadísticas automáticamente 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 recompila un índice en la BizTalkMsgBoxDb base de datos cuando BizTalk Server está procesando datos.

Resolución 1: deshabilitar la opción Estadísticas de Create automáticas y la opción Actualizar estadísticas automáticamente

Para resolver este problema, deshabilite las opciones Estadísticas de Create automáticas y Estadísticas de actualización automática 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.

El 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, mientras no se analicen las tablas, 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 la fragmentación. Sin embargo, dado que los datos fluyen dentro y fuera de las tablas a un ritmo constante, es posible que la fragmentación no provoque ningún problema. 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 volver a generar 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 recompilación de índices de base de datos durante BizTalk Server tiempo de inactividad. 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 del 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') because this DBCC command does not support objects of this type.

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, a continuación, ejecute el bts_RebuildIndexes procedimiento almacenado:

  1. Comente la siguiente línea en el bts_RebuildIndexes procedimiento almacenado.

    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
    
  2. 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