ИСПРАВЛЕНИЕ: Снижение производительности при выполнении триггера AFTER на секционированной таблице в SQL Server 2008 R2 или 2012 SQL Server

Переводы статьи Переводы статьи
Код статьи: 2606883 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

Рассмотрите следующие сценарии:
  • Создание разделов для таблицы в Microsoft SQL Server 2008 R2 или 2012 Microsoft SQL Server.
  • Можно создать ПОСЛЕ триггер для любой ВСТАВКА или УДАЛИТЬ Операция, выполняемая в таблице.
  • Выполнить ВСТАВКА или УДАЛИТЬ операция в таблице.

В этом случае может произойти снижение быстродействия. Кроме того множество логических операций чтения могут возникнуть при запуске профайлера SQL.

Причина

Данная проблема возникает по следующим причинам:
  • Подсистема хранилища содержит цепочку одной версии для каждой инструкции.
  • Выполнение запроса поиск разделов версии всей цепочки для поиска строк, которые вставляются в один из разделов.

Решение

Для решения этой проблемы установите указанное ниже исправление, а затем с помощью флага трассировки T2470

Накопительное обновление информации

SQL Server 2012 Исправление этой уязвимости первого выпуска в накопительное обновление 1 для SQL Server 2012. Дополнительные сведения о этот накопительный пакет обновления щелкните следующий номер статьи базы знаний Майкрософт:
2679368 Накопительный пакет обновления 1 для SQL Server 2012
Примечание Поскольку сборки являются накопительными, каждый новый выпуск исправлений содержит все исправления и исправить все исправления безопасности, которые были включены в предыдущие 2012 SQL Server выпуска. Корпорация Майкрософт рекомендует рассмотреть применение самую последнюю версию исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
2692828 Строит 2012 SQL Server, выпущенных после 2012 SQL Server
Необходимо установить исправление SQL Server 2012 установки 2012 SQL Server.

SQL Server 2008 R2 с пакетом обновления 1

Накопительное обновление информации

Исправление этой уязвимости первого выпуска накопительного обновления 3 SQL Server 2008 R2 с пакетом обновления 1. Дополнительные сведения о том, как получить этот накопительный пакет обновления, щелкните следующий номер статьи базы знаний Майкрософт:
2591748 Накопительный пакет обновления 3 для SQL Server 2008 R2 с пакетом обновления 1
Примечание Поскольку построения являются накопительными, каждый новый выпуск исправлений содержит все исправления и исправить все исправления безопасности, которые были включены в предыдущие 2008 R2 SQL Server выпуска. Мы рекомендуем рассмотреть применение самую последнюю версию исправления, содержащего это исправление. Для получения дополнительных сведений щелкните следующий номер статьи базы знаний Майкрософт:
2567616 SQL Server 2008 R2 построений, выпущенных после пакета обновления 1 (SP1) для SQL Server 2008 R2

Сведения об исправлении

Исправление от корпорации Майкрософт. Однако данное исправление предназначено для устранения проблемы, описанной в этой статье. Данное исправление только в тех системах, где наблюдается вышеописанная проблема.

Если исправление доступно для загрузки, имеется раздел «Исправление доступно для загрузки» в верхней части статьи базы знаний. Если этот раздел не отображается, отправьте запрос для поддержки и службу поддержки для получения исправления.

Примечание Если возникают другие проблемы или необходимо устранить неполадки, возможно создать отдельный запрос на обслуживание. Затраты на поддержку обычно будет применяться к Дополнительные вопросы и проблемы, которые не соответствуют требованиям конкретного исправления. Полный список телефонов поддержки и обслуживания клиентов корпорации Майкрософт или создать отдельный запрос посетите следующий веб-узел корпорации Майкрософт:
условиям обслуживания
Примечание В форме «Исправление доступно для загрузки» отображаются языки, для которых доступно исправление. Если язык не отображается, это потому, что исправление для данного языка отсутствует.

Необходимые условия

Это исправление необходимо иметь Microsoft SQL Server 2008 R2 пакетом обновления 1 (SP1) установлен.

Необходимость перезагрузки

После установки данного исправления перезагружать компьютер не требуется.

Сведения о замене исправлений

Это исправление не заменяет ранее выпущенные исправления.

Сведения о файле

Общая версия имеет атрибуты файла (или более поздними), приведенные в следующей таблице. Дата и время для файлов указаны в формате общего скоординированного времени (UTC). При просмотре сведений о файле преобразуются в местное время. Чтобы узнать разницу между временем UTC и местным временем, следует использовать Часовой пояс Вкладка в Дата и время элемент панели управления.

Для всех поддерживаемых 32 разрядных версий SQL Server 2008 R2 SP1
Свернуть эту таблицуРазвернуть эту таблицу
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Sqlservr.exe2009.100.2776.043,053,92015 Сентября 201101: 47x 86

Для всех поддерживаемых 64-разрядных версийSQL Server 2008 R2 SP1

Свернуть эту таблицуРазвернуть эту таблицу
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Sqlservr.exe2009.100.2776.062,176,60815 Сентября 201100: 57x 64

Для всех поддерживаемых версийна основе IA-64SQL Server 2008 R2 SP1

Свернуть эту таблицуРазвернуть эту таблицу
Имя файлаВерсия файлаРазмер файлаДатаВремяПлатформа
Sqlservr.exe2009.100.2776.0122,105,69615 Сентября 201100: 23IA-64


Временное решение

Чтобы обойти эту проблему, измените триггер AFTER триггер INSTEAD OF INSERT или триггер INSTEAD OF DELETE .

Например выполните следующие инструкции, чтобы создать триггер AFTER :
CREATE TRIGGER TR_Test ON Test FOR INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED END GO
В этом случае изменение триггера AFTER для INSTEAD OF INSERT с помощью следующих операторов:
CREATE TRIGGER TR_Test ON Test INSTEAD OF INSERT AS BEGIN DECLARE @groupe INT SELECT TOP 1 @groupe=Groupe FROM INSERTED INSERT INTO Test (Groupe) SELECT @groupe FROM INSERTED END

Статус

Корпорация Майкрософт подтверждает, что это проблема в продуктах корпорации Майкрософт, перечисленных в разделе «Относится к».

Свойства

Код статьи: 2606883 - Последний отзыв: 16 апреля 2012 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2012 Developer
Ключевые слова: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbautohotfix kbmt KB2606883 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:2606883

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com