ВИПРАВЛЕННЯ: SQL Server може аварійно завершувати роботу після того, як запит на виконання віддаленого збережену процедуру, містить неповні визначення параметрів

ВАЖЛИВО! Ця стаття перекладена засобами машинного перекладу Microsoft. Статтю можна редагувати в середовищі Community Translation Framework (CTF). Щоб якомога швидше перекласти всі статті у своїй базі знань різними мовами, компанія Microsoft не лише звертається до професійних перекладачів, але й вдається до машинного перекладу, який потім редагується спільнотою. Такі статті можуть містити лексичні, синтаксичні та граматичні помилки. Microsoft не несе відповідальності за будь-які неточності, помилки або збитки, до яких може призвести неправильний переклад статей або їх використання. Докладніше про CTF див. на веб-сторінці http://support.microsoft.com/gp/machine-translation-corrections/uk-ua.

Клацніть тут, щоб переглянути цю статтю англійською мовою: 3135750
Ознаки
На віддаленому сервері під керуванням Microsoft SQL Server 2012 немає або SQL Server 2014 у вас є збережену процедуру, із вихідного аргумент приблизно такого вигляду:

create procedure procExample @retVal varchar(10) outputas set @retVal = 'Goodbye';
Як правило, синтаксис для виклику віддалених процедур приблизно такого вигляду:

-- Declare a variable to hold a result, and have it initialized with a non-NULL valuedeclare @outputResult varchar(10) = 'Hello';execute ('MyDb.dbo.procExample ? OUTPUT', @outputResult OUTPUT) at [MyRemoteServer];print @outputResult;
Якщо пропустити на "? Частина ВИВОДУ"виклик синтаксис, локальний сервер під керуванням сервера SQL Server може аварійно завершувати роботу. Віддалений сервер як і раніше працювати, тому що виконання ніколи не досягає його через цей синтаксис, бездіяльності. Наприклад, синтаксис приблизно такого вигляду:

-- Declare a variable to hold a result, and have it initialized with a non-NULL valuedeclare @outputResult varchar(10) = 'Hello';execute ('MyDb.dbo.procExample', @outputResult OUTPUT) at [MyRemoteServer];
Змінні, які не ініціалізовано викликає локальний сервер аварійне завершення роботи. Проте генерує протокол IMAP про помилку на те, що не всі аргументи вказано для виклику (, як це має бути). Наприклад, у вас є такий синтаксис:

-- Declare a variable to hold a result, and initialize it with NULL, or leave uninitializeddeclare @outputResult varchar(10) = NULL;execute ('MyDb.dbo.procExample', @outputResult OUTPUT) at [MyRemoteServer];
У цьому випадку, з'являється протокол IMAP про помилку приблизно такого вигляду:

MSG 201, рівень 16, стан 4 процедури procExample, рядок 10

Процедура або функція "procExample" очікує, що параметр "@retVal", яка не надано.
Розв'язанн

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

Цю проблему, спочатку було усунуто в наступні накопичувальне оновлення для SQL Server:
Порада:, Інсталюйте останній сукупний пакет оновлень для SQL Server

Нові накопичувальне оновлення для SQL Server, містить усі виправлення, і усі виправлення безпеки, які увійшли в попередній сукупний пакет оновлень. Перевірте останні накопичувальне оновлення для SQL Server:

Примітка Ви можете знайти інформацію про останні SQL Server, збірки з Де знайти відомості про останні SQL Server збірки..
Стан
корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".
Посилання
Докладніше про у Термінологія Microsoft, що використовується для опису оновлень програмного забезпечення.

Попередження. Цю статтю переведено автоматично

Властивості

Ідентифікатор статті: 3135750 – останній перегляд: 05/31/2016 12:23:00 – виправлення: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3135750 KbMtuk
Зворотний зв’язок