Блокировка, взаимоблокировка или другие проблемы SQL Server при подключении к базе данных BizTalkMsgBoxDb в BizTalk Server

В этой статье содержатся сведения об устранении SQL Server проблем при подключении BizTalkMsgBoxDb к базе данных в Microsoft BizTalk Server.

Исходная версия продукта: BizTalk Server
Исходный номер базы знаний: 917845

Симптомы

В BizTalk Server при попытке подключения к BizTalkMsgBoxDb базе данных возникают блокировки, взаимоблокировки или другие проблемы Microsoft SQL Server.

Причина

Эта проблема может возникнуть, если выполняются одно или несколько из следующих условий:

  • В базе данных включен параметр Auto Create Statistics (Автоматическая Create статистика).BizTalkMsgBoxDb
  • В базе данных включен параметр Автоматическое обновление статистикиBizTalkMsgBoxDb.
  • Параметр max degree of parallelism имеет значение, отличное от 1 для BizTalkMsgBoxDb базы данных или экземпляра SQL, в котором размещается эта база данных.
  • Дефрагментация или перестройка индекса в BizTalkMsgBoxDb базе данных, когда BizTalk Server обрабатывает данные.

Решение 1. Отключение параметра Автоматическое Create Статистика и Автоматическое обновление статистики

Чтобы устранить эту проблему, отключите параметры Автоматическое Create Статистика и Автоматическое обновление статистики в BizTalkMsgBoxDb базе данных в SQL Server.

Решение 2. Задайте для параметра max degree of parallelism значение 1

Чтобы устранить эту проблему, задайте параметру max degree of parallelism значение 1 в параметре BizTalkMsgBoxDb базы данных или экземпляре SQL, в котором размещается эта база данных.

Решение 3. Не перестраивайте индекс, когда BizTalk Server обрабатывает данные

Чтобы устранить эту проблему, не запускайте хранимую bts_RebuildIndexes процедуру или любую команду SQL, которая перестраивает индекс в базе данных BizTalk Server, когда BizTalk Server обрабатывает данные.

Примечание.

Дефрагментация индекса в базе данных BizTalk Server не поддерживается.

Хранимая процедура bts_RebuildIndexes

Единственный поддерживаемый метод перестроения индекса в BizTalkMsgBoxDb базе данных — выполнение хранимой bts_RebuildIndexes процедуры. В BizTalk Server 2006 и более поздних версиях можно выполнить хранимую dtasp_RebuildIndexes процедуру для перестроения индексов в BizTalkDTADb базе данных.

Большинство индексов BizTalk основаны на GUID. Многие тесты показали, что до тех пор, пока таблицы не сканируются, индексы на основе GUID могут работать лучше, чем индексы на основе удостоверений для рабочих нагрузок BizTalk. Это может привести к фрагментации. Тем не менее, поскольку данные поступают в таблицы и из нее устойчивыми темпами, фрагментация может не вызывать никаких проблем. Если ожидается, что в BizTalkMsgBox базе данных будет накапливаться большое количество данных, можно периодически перестраивать индексы во время запланированного простоя. Те же рекомендации применяются и к базе данных отслеживания.

Команду SQL можно использовать для DBCC DBREINDEX перестроения индекса в других базах данных BizTalk Server. Чтобы получить пример использования DBCC DBREINDEX команды SQL, щелкните правой кнопкой мыши хранимую bts_RebuildIndexes процедуру и выберите пункт Свойства.

Корпорация Майкрософт поддерживает перестроение индексов базы данных только во время BizTalk Server простоя. Перед перестроением индекса следует остановить все экземпляры узла и агент SQL Server. При выполнении хранимой bts_RebuildIndexes процедуры в BizTalk Server 2006 и более поздних версиях может появилось одно из следующих сообщений об ошибке:

  • Сообщение об ошибке 1

    Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Не удалось обработать идентификатор объекта 674101442 (объект TrackingData)
    Эта команда средства проверки согласованности базы данных (DBCC) не поддерживает объект такого типа.

  • Сообщение об ошибке 2

    Msg 5239, Level 16, State 1, Procedure bts_RebuildIndexes, Line 4 Не удалось обработать идентификатор объекта 722101613 (объект TrackingData), так как эта команда DBCC не поддерживает объекты этого типа.

Эта проблема возникает из-за того, TrackingData что объект является представлением в BizTalk Server 2006 и более поздних версиях. Чтобы устранить эту проблему, выполните следующие действия, а затем выполните хранимую bts_RebuildIndexes процедуру:

  1. Закомментируйте следующую строку в хранимой bts_RebuildIndexes процедуре.

    DBCC DBREINDEX ('[dbo].[TrackingData]') WITH NO_INFOMSGS
    
  2. Добавьте следующие строки в хранимую bts_RebuildIndexes процедуру.

    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