Compartir a través de


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:

  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