Partager via


Blocage, conditions d’interblocage ou autres problèmes de SQL Server lorsque vous vous connectez à la base de données BizTalkMsgBoxDb dans BizTalk Server

Cet article fournit des informations sur la résolution des problèmes SQL Server lorsque vous vous connectez à la BizTalkMsgBoxDb base de données dans Microsoft BizTalk Server.

Version d’origine du produit : BizTalk Server
Numéro de la base de connaissances d’origine : 917845

Symptômes

Dans BizTalk Server, vous rencontrez des problèmes de blocage, d’interblocage ou d’autres problèmes microsoft SQL Server lorsque vous essayez de vous connecter à la BizTalkMsgBoxDb base de données.

Cause

Ce problème peut se produire si une ou plusieurs des conditions suivantes sont remplies :

  • L’option Statistiques Create automatique est activée sur la BizTalkMsgBoxDb base de données.
  • L’option Mettre à jour automatiquement les statistiques est activée sur la BizTalkMsgBoxDb base de données.
  • L’option degré maximal de parallélisme est définie sur une valeur autre que 1 pour la BizTalkMsgBoxDb base de données ou l’instance SQL hébergeant cette base de données.
  • Vous défragmentez ou régénérez un index dans la BizTalkMsgBoxDb base de données quand BizTalk Server traite des données.

Résolution 1 : Désactiver l’option Statistiques Create automatique et l’option Mettre à jour automatiquement les statistiques

Pour résoudre ce problème, désactivez les options Statistiques Create automatique et Mise à jour automatique des statistiques sur la BizTalkMsgBoxDb base de données dans SQL Server.

Résolution 2 : Définissez l’option degré maximal de parallélisme sur 1

Pour résoudre ce problème, définissez l’option degré maximal de parallélisme sur 1 dans le BizTalkMsgBoxDb paramètre de base de données ou le instance SQL hébergeant cette base de données.

Résolution 3 : Ne pas reconstruire un index quand BizTalk Server traite des données

Pour résoudre ce problème, n’exécutez pas la bts_RebuildIndexes procédure stockée ou une commande SQL qui reconstruit un index dans une base de données BizTalk Server lorsque BizTalk Server traite des données.

Remarque

La défragmentation d’un index dans une base de données BizTalk Server n’est pas prise en charge.

Procédure stockée bts_RebuildIndexes

La seule méthode prise en charge pour reconstruire un index dans la BizTalkMsgBoxDb base de données consiste à exécuter la bts_RebuildIndexes procédure stockée. Sur BizTalk Server 2006 et versions ultérieures, vous pouvez exécuter la dtasp_RebuildIndexes procédure stockée pour reconstruire des index dans la BizTalkDTADb base de données.

La plupart des index BizTalk sont basés sur un GUID. De nombreux tests ont montré que tant que les tables ne sont pas analysées, les index basés sur un GUID peuvent être plus performants que les index basés sur l’identité pour les charges de travail spécifiques à BizTalk. Cela peut entraîner une fragmentation. Toutefois, étant donné que les données entrent et sortent des tables à un rythme régulier, la fragmentation peut ne pas entraîner de problèmes. Si un grand nombre de données est censé s’accumuler dans la BizTalkMsgBox base de données, vous pouvez régulièrement reconstruire des index pendant les temps d’arrêt planifiés. Les mêmes instructions s’appliquent à la base de données de suivi.

Vous pouvez utiliser la DBCC DBREINDEX commande SQL pour reconstruire un index dans les autres bases de données BizTalk Server. Pour obtenir un exemple d’utilisation de la DBCC DBREINDEX commande SQL, cliquez avec le bouton droit sur la bts_RebuildIndexes procédure stockée, puis cliquez sur Propriétés.

Microsoft prend uniquement en charge la reconstruction des index de base de données pendant BizTalk Server temps d’arrêt. Vous devez arrêter toutes les instances d’hôte et SQL Server Agent avant de reconstruire un index. Lorsque vous exécutez la bts_RebuildIndexes procédure stockée dans BizTalk Server 2006 et versions ultérieures, vous pouvez recevoir l’un des messages d’erreur suivants :

  • Message d’erreur 1

    Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Unable to process object ID 674101442 (object 'TrackingData')
    Cette commande DBCC (Database Consistency Checker) ne prend pas en charge ce type d’objet.

  • Message d’erreur 2

    Msg 5239, Niveau 16, État 1, Procédure bts_RebuildIndexes, Ligne 4 Impossible de traiter l’ID d’objet 722101613 (objet « TrackingData ») car cette commande DBCC ne prend pas en charge les objets de ce type.

Ce problème se produit car l’objet TrackingData est une vue dans BizTalk Server 2006 et versions ultérieures. Pour résoudre ce problème, procédez comme suit, puis exécutez la bts_RebuildIndexes procédure stockée :

  1. Commentez la ligne suivante dans la bts_RebuildIndexes procédure stockée.

    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
    
  2. Ajoutez les lignes suivantes à la bts_RebuildIndexes procédure stockée.

    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