KB2498818-FIX: Error 7359 під час виконання запиту від визначеної користувачем функції або подання, яке використовує синонім на зв'язаному сервері в SQL Server 2005, SQL Server 2008 або SQL Server 2008 R2

Застосовується до: Microsoft SQL Server 2005 Service Pack 3Microsoft SQL Server 2005 Service Pack 4Microsoft SQL Server 2008 Service Pack 2

Корпорація Майкрософт поширює Microsoft SQL Server 2005, Microsoft SQL Server 2008 і Microsoft SQL Server 2008 R2 виправляє один файл для завантаження. Оскільки виправлення сукупно, у кожному новому випуску містяться всі виправлення та всі виправлення системи безпеки, які були включені до попередньої версії SQL Server 2005, Microsoft SQL Server 2008 і SQL Server 2008 R2 Fix Release.Виправлення, описане в цій статті, доступно для таких версій 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. Ім'я зв'язаної таблиці – це покажчик місця заповнення, яке відповідає імені таблиці, яка міститься на зв'язаному сервері.

Причина


Ця проблема виникає через те, що наявний план виконання не очищено належним чином. Це призводить до змінення версії схеми, тому що визначена користувачем функція або подання перекомпілюється під час запуску другого запиту. Таким чином, з'являється повідомлення про помилку.

Спосіб вирішення


Відомості про Сукупне оновлення

SQL Server 2008 R2 Service Pack 1

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 1 для SQL Server 2008 R2 Service Pack 1. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2544793 Сукупний пакет оновлень пакета 1 для SQL Server 2008 R2 Service Pack 1
Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2567616 Випущено пакет оновлень 1 для SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2 Service SP1

SQL Server 2008 R2

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 7. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 R2, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2507770 Сукупний пакет оновлень пакета 7 для SQL Server 2008 R2
Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 R2 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
981356 Випущено SQL Server 2008 R2, випущеній після випуску SQL Server 2008 R2

Для SQL Server 2005 SP3

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 15. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2005 SP3, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2507766 Сукупний пакет оновлень пакета 15 для SQL Server 2005 SP3
Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2005 SP3 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
960598 Інстальовано пакет SQL Server 2005, який було випущено після випуску сервера SQL Server 2005 SP3

Для SQL Server 2005 SP4

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 3. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета SQL Server 2005 SP4, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2507769 Сукупний пакет оновлень пакета 3 для SQL Server 2005 SP4
Примітка. Оскільки будує сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2005 SP4 Fix Release. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
937137 Випущено SQL Server 2005, що випущено після випуску сервера SQL Server 2005 SP4

Для SQL Server 2008 SP1

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 13. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 SP1, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2497673 Сукупний пакет оновлень пакета 13 для SQL Server 2008 SP1
Примітка. Оскільки пакет має сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 SP1. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
970365 Випущено пакет SQL Server 2008, який було випущено після випуску пакета оновлень 1 (SP1) для SQL Server 2008

Для SQL Server 2008 з пакетом оновлень 2 (SP2)

Виправлення для цієї проблеми уперше випущено в сукупному оновленні 3. Щоб отримати докладні відомості про отримання цього сукупного оновлення пакета для SQL Server 2008 SP2, клацніть цей номер статті, щоб переглянути статтю в базі знань Microsoft Knowledge Base:
2498535 Сукупний пакет оновлень пакета 3 для SQL Server 2008 з пакетом оновлень 2 (SP2)
Примітка. Оскільки пакет має сукупну версію, кожен новий випуск Fix містить всі виправлення та виправлення безпеки, які були включені до попередньої версії SQL Server 2008 SP2 для виправлення неполадок. Радимо застосувати найновішу версію виправлення, що містить це виправлення. Щоб отримати докладні відомості, клацніть номер цієї статті бази знань Microsoft:
2402659 Випущено пакет SQL Server 2008, який було випущено після випуску SQL Server 2008 SP2

Стан


Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "застосовується до".

Додаткові відомості


Щоб отримати додаткові відомості про те, як використовувати Transact-SQL для створення синоніма, перейдіть на веб-сайт MSDN (Microsoft):