KB2413430 - ИСПРАВЛЕНО: сообщение об ошибке "Cannot locate version record and page is not allocated" возникает при перестроении индекса с помощью параметра ONLINE в SQL Server 2005, SQL Server 2008 или SQL Server 2008 R2

Применяется к
Microsoft SQL Server 2005 Enterprise Edition SQL Server 2008 Enterprise SQL Server 2008 R2 Enterprise

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

Проблема

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

  • Параметр ALLOW_SNAPSHOT_ISOLATION включается в базе данных Microsoft SQL Server 2005, Microsoft SQL Server 2008 или Microsoft SQL Server 2008 R2.
  • В таблице выполняется управление версиями. Например, нужно обновить таблицу.
  • Вы отключаете snapshot уровень изоляции в базе данных.
  • Обновляется ключевой столбец индекса в записи, содержащей сведения о версиях.
  • Вам нужно перестроить сетевой индекс в таблице.

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

Примечание

<Дата><и время><spid> * НАЧАТЬ ДАМП СТЕКА:
<Date><Time<>spid *<Date><Time><spid>>
<Дата><и время><spid> *
<Дата><и время><spid> * Местоположение: AppendOnlyVerStoreMgr.cpp:731
<Дата><и время><spid> * Выражение: 0
<Дата><и время><spid> * SPID:<spid>
<Дата><и время><spid> * Идентификатор процесса: 6328
<Дата><и время><spid> * Описание: не удается найти запись версии, страница не выделена. Состояние = 3
<Дата><и время><spid> *
<Дата><и время><spid> * Входной буфер 170 байт -
<Дата><и время<>spid> * ALTER INDEX <Имя> таблицы ON <Индекс> REBUILD WITH(O
<Дата><и время><spid> * NLINE = ON)

      

Причина

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

Решение

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

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 2005 с пакетом обновления 4 (SP4)

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

2464079 Накопительный пакет обновления 1 для SQL Server 2005 с пакетом обновления 4 (SP4) Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, включенные в предыдущий выпуск исправления SQL Server 2005 г. Корпорация Майкрософт рекомендует рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:

2485757 Сборки SQL Server 2005 г., выпущенные после выпуска SQL Server 2005 с пакетом обновления 4 (SP4) для Microsoft SQL Server 2005 предназначены для определенных пакетов обновления SQL Server. Необходимо установить исправление для SQL Server 2005 с пакетом обновления 4 (SP4) для установки SQL Server 2005 с пакетом обновления 4. По умолчанию все исправления, предоставляемые в пакете обновления для SQL Server, входят в следующий пакет обновления для SQL Server.

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

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

2345449 Накопительный пакет обновления 12 для SQL Server 2005 с пакетом обновления 3 (SP3) Примечание Так как сборки являются накопительными, каждый новый выпуск исправлений содержит все исправления и исправления для системы безопасности, включенные в предыдущий выпуск исправления SQL Server 2005 с пакетом обновления 3 (SP3). Рекомендуется рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:

960598 Сборки SQL Server 2005 г., выпущенные после выпуска SQL Server 2005 с пакетом обновления 3 (SP3)

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

Исправление для этой проблемы было впервые выпущено в накопительном пакете обновления 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 с пакетом обновления 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, перечисленных в разделе «Относится к».

Ссылки

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

Общие сведения об индексных операциях

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

Подробное описание операций с индексами в сети