Hola a todos.

Seguramente que algunos de vosotros os habéis encontrado con cinco bases de datos que no sabemos muy bien para qué sirven y que han venido impuestas por el equipo de desarrollo o arquitectura porque han decidido utilizar un producto llamado BizTalk Server. (BizTalk DTADB, BizTalkMsgBoxDB, BizTalkMngmtDB, BizTalkRuleEngineDB, SSO DB)

Como buenos DBA las añadiremos en nuestros planes de mantenimiento y de back-up que tenemos definidos para el resto de base datos. Todo marcha bien, tengo mis bases de datos controlados, los planes de mantenimiento se ejecutan periódicamente sin error pero he notado la aparición de dead locks y bloqueos que nunca son liberados en las bases de datos de BizTalk, en concreto en la base de datos BizTalkMsgBoxDB. ¿Qué ha pasado? ¿Qué está ocurriendo?

La explicación es sencilla. BizTalk, debido al alto acoplamiento que tiene con SQL Server, requiere que todos sus servicios estén parados mientras se realizan sus propias tareas de mantenimiento  y además requiere una configuración del servidor de base de datos que puede interferir con el resto de aplicaciones instaladas.

Para actualizar los índices de las bases de datos de BizTalk de manera óptima debemos de ejecutar el procedimiento almacenado que se crea durante la instalación del producto,  bts_RebuildIndexes. Tenemos que asegurarnos que este procedimiento se ejecuta con todos los servicios de BizTalk parados.

Además de este procedimiento para regenerar los índices de la MessageBox, los parámetros que demos de tener en cuenta para un funcionamiento óptimo de BizTalk y que puede interferir con la configuración que tenemos para el resto de base de datos son los siguientes:

·        Tendremos que deshabilitar la creación y actualización de estadísticas de manera automática en la base de datos BizTalkMsgBoxDB. Los procedimientos almacenados de BizTalk están optimizados con las estadísticas creadas por defecto.  Para deshabilitar estas opciones ejecuta los siguientes comandos:

exec sp_dboption 'BizTalkMsgBoxDB', 'auto create statistics', 'off'

exec sp_dboption 'BizTalkMsgBoxDB', 'auto update statistics', 'off'

 

 

·        El servidor de SQL que esta albergando la base de datos BizTalkMsgBoxDB tiene que tener el parámetro “Maximo Nivel de Parelelismo” fijado al valor 1.

exec sp_configure 'max degree of parallelism', '1'

reconfigure with override

 

Si queréis más información sobre el mantenimiento de la bases de datos de BizTalk os recomiendo el siguiente articulo. How to maintain and troubleshoot BizTalk Server databases

Salu2

Enrique Palomino|BizTalk Escalation Engineer