KB2498818 - ИСПРАВЛЕНО: Ошибка 7359 при выполнении запроса к пользовательской функции или представлению, использующему синоним на связанном сервере в SQL Server 2005, SQL Server 2008 или SQL Server 2008 R2

Применяется к
Microsoft SQL Server 2005 Service Pack 3 Microsoft SQL Server 2005 Service Pack 4 SQL Server 2008 Service Pack 2 Microsoft SQL Server 2005 SQL Server 2008 SQL Server 2008 R2

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

Исправление, описанное в этой статье, доступно для следующих версий SQL Server:

  • Microsoft SQL Server 2005 с пакетом обновления 3 (SP3)
  • Microsoft SQL Server 2005 с пакетом обновления 4 (SP4)
  • Microsoft SQL Server 2008 с пакетом обновления 1 (SP1)
  • Microsoft SQL Server 2008 с пакетом обновления 2 (SP2)

Проблема

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

  • Связанный сервер создается на компьютере под управлением Microsoft SQL Server 2005, Microsoft SQL Server 2008 или Microsoft SQL Server 2008 R2. Связанный сервер указывает на источник данных OLE DB на удаленном сервере.

  • Вы создаете синоним таблицы на связанном сервере.

  • Вы создаете пользовательскую функцию, в которой используется синоним, или представление, использующее синоним. Затем выполняется запрос к пользовательской функции или представлению.

    Примечание. При выполнении запроса план выполнения кэшируется.

  • На удаленном сервере выполняется операция, чтобы обновить версию схемы таблицы на связанном сервере. Например, можно перестроить индекс таблицы на удаленном сервере, чтобы обновить версию схемы таблицы на связанном сервере.

  • Выполняется еще один запрос к пользовательской функции или представлению.

В этом сценарии появляется сообщение об ошибке, подобное приведенному ниже.

Примечание

Сервер: MSG 7359, номер уровня, номер состояния состояния, номер строки
Поставщик OLE DB "Имя поставщика" для связанного сервера "Имя связанного сервера" сообщил об изменении версии схемы между временем компиляции ("Время компиляции") и временем выполнения ("Время выполнения") для таблицы "Имя связанной таблицы".

Примечание. Имя поставщика — это заполнитель, представляющий имя поставщика OLE DB. Имя связанной таблицы — это заполнитель, представляющий имя таблицы на связанном сервере.

Причина

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

Решение

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

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

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

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

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

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

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

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

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

Для SQL Server 2005 с пакетом обновления 4 (SP4)

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

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

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

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

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

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

970365 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 1 (SP1)

Для SQL Server 2008 с пакетом обновления 2 (SP2)

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

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

2402659 Сборки SQL Server 2008 г., выпущенные после выпуска SQL Server 2008 с пакетом обновления 2 (SP2)

Состояние

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

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

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

Создание синонима с помощью Transact-SQL