Partager via


Blocage, conditions d’interblocage ou autres problèmes 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 du produit d’origine : BizTalk Server
Numéro de base de connaissances d’origine : 917845

Symptômes

Dans BizTalk Server, vous rencontrez des problèmes de blocage, de blocage 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 Créer automatiquement des statistiques 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 max degree of parallelism 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 lorsque BizTalk Server traite les données.

Résolution 1 : Désactiver l’option Créer automatiquement des statistiques et l’option Mettre à jour automatiquement les statistiques

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

Résolution 2 : Définir l’option max degree of parallelism sur 1

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

Résolution 3 : Ne régénérez pas d’index lorsque BizTalk Server traite les données

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

Note

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 GUID. De nombreux tests ont montré que tant que les tables ne sont pas analysées, les index basés sur GUID peuvent s’effectuer mieux 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 circulent et sortent des tables à un rythme stable, 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égénérer périodiquement 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 commande SQL, cliquez avec le DBCC DBREINDEX 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 le temps d’arrêt de BizTalk Server. Vous devez arrêter toutes les instances hôtes 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, Level 16, State 1, Procedure bts_RebuildIndexes, Line 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 parce que 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