KB2545989 - ИСПРАВЛЕНО: ошибка "A time-out occurred during waiting for buffer lockch" при одновременном обновлении базы данных множеством транзакций в SQL Server 2008 R2 или SQL Server 2008, если база данных использует уровень изоляции snapshot

Применяется к
SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Parallel Data Warehouse SQL Server 2008 Developer SQL Server 2008 Enterprise

Корпорация Майкрософт распространяет исправления Microsoft SQL Server 2008 R2 или Microsoft SQL Server 2008 в виде одного загружаемого файла. Поскольку исправления являются накопительными, каждый новый выпуск содержит все исправления и исправления для системы безопасности, которые были включены в предыдущий выпуск исправлений SQL Server 2008 R2 или SQL Server 2008.

Проблема

Рассмотрим следующий сценарий.

  • Функция управления версиями строк включена для базы данных в SQL Server 2008 R2 или SQL Server 2008.
  • База данных настраивается для использования уровня изоляции snapshot.
  • Вы выполняете множество транзакций, которые одновременно обновляют базу данных.

В этом случае сообщения об ошибках, похожие на следующие, записываются в файл журнала ошибок SQL Server.

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

Примечание

<SPID> даты><Тайм-аут при ожидании защелки буфера -- тип 2, bp 0000003DDEFCBC80, страница 3:58642854, 0xc0000b статистики, идентификатор базы данных: 6, идентификатор единицы размещения: 72057594048806912, 0x000000717CC2A748 задачи: 0, время ожидания 300, флаги 0x3a, владение задачей 0x00000062F0A6CE08. Не продолжая ждать.

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

Примечание

<Дата><SPID> Время ожидания блокировки: класс 'APPEND_ONLY_STORAGE_FIRST_ALLOC', идентификатор 0000006196214E30, тип 4, 0x000000002CA45948 задачи: 0, время ожидания 300, флаги 0x1a, владение задачей 0x00000062F0533288. Продолжаем ждать.

Сообщение об ошибке 3

Примечание

<Дата> spid#,Неизвестно,Ошибка: 845<c/> Серьезность: 17<c/> Состояние: 1.

Причина

Эта проблема возникает из-за того, что форматирование страниц хранилища версий начинается после выделения. Однако страницы защелкиваются. Поэтому возникает высокая конкуренция за страницы.

Решение

Сведения о накопительном пакете обновления

SQL Server 2008 с пакетом обновления 3 (SP3)

Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 4 для SQL Server 2008 с пакетом обновления 3 (SP3). Дополнительные сведения об этом накопительном пакете обновления см. в следующей статье базы знаний Майкрософт:

2673383 Накопительный пакет обновления 4 для SQL Server 2008 пакета обновления 3 Примечание Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые вошли в предыдущий выпуск исправления SQL Server 2008 г. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:

2629969 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 3 (SP3) Исправления для Microsoft SQL Server 2008 предназначены для определенных пакетов обновления SQL Server. Установите исправление пакета обновления 3 для SQL Server 2008 с пакетом обновления 3 (SP3) для SQL Server 2008 с пакетом обновления 3. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.

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

Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 1 для SQL Server 2008 R2 с пакетом обновления 1. Дополнительные сведения о том, как получить этот накопительный пакет обновления, см. в следующей статье базы знаний Майкрософт:

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

2567616 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2 с пакетом обновления 1

SQL Server 2008 R2

Исправление для этой проблемы впервые было выпущено в накопительном пакете обновления 8. Для получения дополнительной информации о том, как получить этот накопительный пакет обновления для SQL Server 2008 R2, откройте статью со следующим номером в базе знаний Майкрософт:

2534352 Накопительный пакет обновления 8 для SQL Server 2008 R2 Примечание. Поскольку сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления безопасности, которые были включены в предыдущий выпуск исправления SQL Server 2008 R2. Рекомендуется рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:

981356 Сборки SQL Server 2008 R2, выпущенные после выпуска SQL Server 2008 R2

Состояние

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

Дополнительные сведения

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

2154845 Рекомендации по снижению конкуренции за выделение в базе данных tempdb SQL Server

Ссылки

Дополнительные сведения об уровнях изоляции на основе управления версиями строк см. на следующем веб-сайте MSDN:

Общие сведения об уровнях изоляции на основе управления версиями строк
Дополнительные сведения о модели добавочного обслуживания для SQL Server см. в следующей статье базы знаний Майкрософт:

935897 Команда SQL Server предоставляет модель добавочного обслуживания для предоставления исправлений для обнаруженных проблем

Дополнительные сведения о схеме именования для обновлений SQL Server см. в следующей статье базы знаний Майкрософт:

822499 Новая схема именования пакетов обновления программного обеспечения Microsoft SQL Server Дополнительные сведения о терминологии обновления программного обеспечения см. в следующей статье базы знаний Майкрософт:

824684 Стандартные термины, используемые при описании обновлений программного обеспечения Майкрософт