KB2535705 — ИСПРАВЛЕНО: нарушение прав доступа происходит при одновременном восстановлении базы данных и выполнении хранимой процедуры sp_replcounters на сервере, работающем под управлением SQL Server 2008 или SQL Server 2008 R2

Применяется к
SQL Server 2008 SQL Server 2008 R2

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

Проблема

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

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

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

Причина

Эта проблема возникает из-за того, что хранимая процедура sp_replcounters выполняется на сервере, где репликация отключена или не установлена. Когда sp_replcounters пытается получить доступ к кэшу статей, операция восстановления базы данных уже вызвала clear_db_repl_cache для удаления базы данных из кэша статей перед добавлением базы данных обратно в кэш статей.

Решение

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

SQL Server 2008 R2

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

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

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

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

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

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

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

SQL Server 2008

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

2527180 Накопительный пакет обновления 4 для SQL Server 2008 с пакетом обновления 2 (SP2) Так как сборки являются накопительными, каждый новый выпуск исправления содержит все исправления и исправления для системы безопасности, которые вошли в предыдущий выпуск исправления SQL Server 2008 г. Рекомендуется рассмотреть возможность применения последнего выпуска исправления, содержащего это исправление. Для просмотра статьи в базе знаний Майкрософт щелкните следующий номер статьи:

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

Состояние

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

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

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

2527180 Накопительный пакет обновления 4 для SQL Server 2008 с пакетом обновления 2

Ссылки

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

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

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

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

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

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