Ознаки
Якщо ви запускаєте віддалену збережену процедуру з параметрами виводу на зв'язаному сервері через драйвер ODBC для SQL Server, драйвер ODBC не зможе отримати параметр виводу, і може з'явитися таке повідомлення про помилку:
[Microsoft] [ODBC SQL Server Driver]Порушення атрибута обмеженого типу даних
Спосіб вирішення
Від корпорації Майкрософт доступне підтримуване виправлення. Однак, це виправлення, призначено для виправлення, лише проблема, описана в цій статті. Застосувати це виправлення лише до систем, які відчувають цю проблему. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, радимо дочекатися наступного оновлення програмного забезпечення, яке містить це виправлення.
Якщо виправлення доступне для завантаження, є розділ "Доступне завантаження виправлень" у верхній частині цієї статті бази знань. Якщо цей розділ не відображається, зверніться до служби підтримки клієнтів корпорації Майкрософт, щоб отримати виправлення.
Примітка. Якщо виникають додаткові проблеми або якщо потрібно виправити неполадки, можливо, доведеться створити окремий запит на обслуговування. Звичайні витрати на підтримку буде застосовуватися до додаткових питань і питань підтримки, які не мають права на це конкретне виправлення. Повний список номерів телефонів служби підтримки клієнтів і підтримки корпорації Майкрософт або створення окремого запиту на обслуговування відвідайте веб-сайт корпорації Майкрософт:
http://support.microsoft.com/contactus/?ws=supportПримітка Форма "Виправлення, завантаження доступний" відображає мови, для яких доступне виправлення. Якщо ваша мова не відображається, це тому, що виправлення недоступне для цієї мови.
' Англійська версія цього виправлення, має атрибути файлу (або пізнішої версії), перелічені в наведеній нижче таблиці. Дати й час для цих файлів перелічено за всесвітнім координованим часом (UTC). Коли ви переглядаєте відомості про файл, вони перетворюються на місцевий час. Щоб знайти різницю між UTC і місцевим часом, скористайтеся вкладкою Часовий пояс у засобі "Дата й час" у Панель керування.
MDAC 2.7 із пакетом оновлень 1
Date Time Version Size File name
----------------------------------------------------------
12-Nov-2002 02:42 2000.81.9031.12 24,576 Odbcbcp.dll
12-Nov-2002 02:41 2000.81.9031.12 385,024 Sqlsrv32.dll
MDAC 2.8
Date Time Version Size File name
---------------------------------------------------------
15-Jun-2004 00:22 2000.85.1045.0 28,672 Dbnmpntw.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msadds.dll
15-Jun-2004 00:21 2.80.1045.0 512,000 Msado15.dll
15-Jun-2004 00:21 2.80.1045.0 163,840 Msadomd.dll
15-Jun-2004 00:21 2.80.1045.0 184,320 Msadox.dll
15-Jun-2004 00:21 2.80.1045.0 53,248 Msadrh15.dll
15-Jun-2004 00:21 2.80.1045.0 225,280 Msdaora.dll
15-Jun-2004 00:21 2.80.1045.0 147,456 Msdart.dll
15-Jun-2004 00:21 2.575.1045.0 139,264 Msorcl32.dll
15-Jun-2004 00:21 3.525.1045.0 221,184 Odbc32.dll
15-Jun-2004 00:22 2000.85.1045.0 24,576 Odbcbcp.dll
15-Jun-2004 00:21 2.80.1045.0 442,368 Oledb32.dll
15-Jun-2004 00:21 2000.85.1045.0 503,808 Sqloledb.dll
15-Jun-2004 00:21 2000.85.1045.0 401,408 Sqlsrv32.dll
15-Jun-2004 00:08 2000.85.1045.0 208,896 Sqlxmlx.dll
Примітка. Список усіх виправлень, доступних для MDAC 2.8 клацніть номер статті в базі знань Microsoft Knowledge Base:
ВИПРАВЛЕННЯ 839801: Виправлення доступні для MDAC 2.8
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "Стосується".
Додаткові відомості
Кроки відтворення поведінки
-
Щоб створити збережену процедуру SQL Server з параметрами виводу на зв'язаному сервері, скористайтеся наведеним нижче кодом.
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
Примітка. Не з'являється повідомлення про помилку, наведене в розділі "Ознаки", якщо збережена процедура повертає набір результатів.
-
Наведений нижче зразок коду програми Microsoft Visual Basic дає доступ до віддаленої збереженої процедури на зв'язаному сервері. У наведеному нижче зразку коду srv1 і
srv2 є два сервери, на яких запущено SQL Server, і ви створюєте srv2 як зв'язаний сервер на srv1.Dim cn As new ADODB.Connection Dim cmd As new ADODB.Command Dim prm As ADODB.Parameter cn.Open "Driver={SQL Server};Server=srv1;UID=sa;PWD=sa_password;" cmd.ActiveConnection = cn cmd.CommandType = adCmdStoredProc cmd.CommandText = "srv2.pubs.dbo.sample_stored_procedure" Set prm = cmd.CreateParameter("op", adVarChar, adParamOutput, 20) cmd.Parameters.Append prm cmd.Execute Debug.Print prm.Value cn.Close Set cn = Nothing