Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 и Microsoft SQL Server 2008 R2 в виде одного загружаемого файла. Поскольку исправления являются накопительными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 или SQL Server 2008 R2.
Проблема
Рассмотрим следующий сценарий.
Вы запускаете приложение Microsoft SQL Server с настроенным координатором распределенных транзакций (DTC) или несколькими активными результирующими множествами (MARS).
Например, вы запускаете службы интеграции Microsoft SQL Server, которые запускают транзакцию DTC или MARS.
Операция BULK LOAD (Массовая загрузка) запускается в рамках транзакции DTC или MARS в целевую таблицу. Параметр FIRE_TRIGGERS не указан в операторе BULK INSERT операции BULK LOAD.
Примечание. Операция BULK LOAD выполняет инструкцию BULK INSERT.
Во время выполнения первой операции BULK LOAD (Массовая загрузка) запускается другая операция BULK LOAD (Массовая загрузка) или стандартная операция языка обработки данных (DML) для другой целевой таблицы. Эти параллельные операции находятся в одной и той же транзакции DTC или MARS. .
В этом сценарии может появиться следующее сообщение об ошибке:
Примечание
Ошибка: 595, Серьезность: 16, Состояние: 1
Массовую вставку с другим невыполненным набором результатов следует выполнять с включенной XACT_ABORT.
Причина
Эта проблема возникает из-за того, что SQL Server неправильно обнаруживает взаимоблокировку MARS. SQL Server позволяет избежать взаимоблокировок, которые могут возникнуть при запуске транзакции MARS или DTC. Однако SQL Server не проверка, указан ли параметр FIRE_TRIGGERS в инструкции BULK INSERT.
Примечание
Дополнительные сведения о том, как избежать взаимоблокировки MARS в SQL Server, см. в разделе "Попеременное выполнение" статьи "Множественные активные результирующие наборы (MARS) в SQL Server 2005" на веб-сайте Microsoft Developer Network (MSDN).
Дополнительные сведения о статье "Множественные активные результирующие наборы (MARS) в SQL Server 2005" см. на следующем веб-сайте Microsoft Developer Network (MSDN):
Статья "Множественные активные результирующие множества (MARS) в SQL Server 2005"
Решение
Сведения о накопительном пакете обновления
SQL Server 2008
Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 11 для SQL Server 2008 с пакетом обновления 1. Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:
2413738 Накопительный пакет обновления 11 для SQL Server 2008 с пакетом обновления 1Примечание Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 г. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
970365 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 1 (SP1) Исправления для Microsoft SQL Server 2008 предназначены для определенных пакетов обновления SQL Server. Необходимо установить исправление для SQL Server 2008 с пакетом обновления 1 (SP1) для установки SQL Server 2008 с пакетом обновления 1. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.
SQL Server 2008 R2
Исправление этой проблемы впервые выпущено в накопительном пакете обновления 5. Для получения дополнительной информации о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, откройте статью со следующим номером в базе знаний Майкрософт:
Накопительный пакет обновления 2438347 5 для SQL Server 2008 R2 Примечание. Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые вошли в предыдущий выпуск исправления SQL Server 2008 R2. Рекомендуется рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2
SQL Server 2008 с пакетом обновления 2 (SP2)
Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 2 для SQL Server 2008 с пакетом обновления 2. Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:
2467239 Накопительный пакет обновления 2 для SQL Server 2008 с пакетом обновления 2 (SP2) Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 г. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:
2402659 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 2 (SP2) Исправления для Microsoft SQL Server 2008 предназначены для определенных пакетов обновления для SQL Server. Необходимо применить исправление SQL Server 2008 с пакетом обновления 2 (SP2) для установки SQL Server 2008 с пакетом обновления 2. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.
Состояние
Корпорация Майкрософт подтвердила, что это проблема продуктов Microsoft, перечисленных в разделе «Относится к».
Ссылки
Дополнительные сведения об инструкции BULK INSERT см. на следующем веб-сайте MSDN:
Общие сведения об операторе BULK INSERT Дополнительные сведения о назначении OLE DB см. на следующем веб-сайте MSDN:
Общие сведения о назначении OLE DB Дополнительные сведения о модели добавочного обслуживания для SQL Server см. в следующей статье базы знаний Майкрософт:
935897 Команда SQL Server предоставляет модель добавочного обслуживания для предоставления исправлений для обнаруженных проблем
Дополнительные сведения о схеме именования для обновлений SQL Server см. в следующей статье базы знаний Майкрософт:
822499 Новая схема именования пакетов обновления программного обеспечения Microsoft SQL Server Дополнительные сведения о терминологии обновления программного обеспечения см. в следующей статье базы знаний Майкрософт:
824684 Стандартные термины, используемые при описании обновлений программного обеспечения Майкрософт