Симптоми
Ако изпълните отдалечена съхранена процедура с изходни параметри на свързан сървър чрез ODBC драйвер за SQL Server, ODBC драйверът не може да извлече изходния параметър и може да получите следното съобщение за грешка:
[Microsoft] [ODBC SQL Server Driver]Restricted data type attribute violation
Решение
Поддържана актуална корекция е налична от Microsoft. Въпреки това тази актуална корекция е предназначена да коригира само проблема, описан в тази статия. Приложете тази актуална корекция само за системи, които изпитват този конкретен проблем. Тази актуална корекция може да получи допълнително тестване. Следователно, ако не сте сериозно засегнати от този проблем, препоръчваме да изчакате следващата актуализация на софтуера, която съдържа тази актуална корекция.
Ако актуалната корекция е налична за изтегляне, има секция "Налична е гореща поправка за изтегляне" в горната част на тази статия от базата знания. Ако този раздел не се появи, свържете се с отдела за обслужване на клиенти и поддръжка на Microsoft, за да получите актуалната корекция.
Забележка Ако възникнат допълнителни проблеми или ако е необходимо отстраняване на неизправности, може да се наложи да създадете отделна заявка за обслужване. Обичайните разходи за поддръжка ще се прилагат за допълнителни въпроси за поддръжка и проблеми, които не отговарят на условията за тази конкретна актуална корекция. За пълен списък на телефонните номера за обслужване на клиенти и поддръжка на Microsoft или за създаване на отделна заявка за обслужване посетете следния уеб сайт на Microsoft:
http://support.microsoft.com/contactus/?ws=supportЗабележка Формулярът "Предлага се изтегляне на гореща поправка" показва езиците, за които е налична актуалната корекция. Ако не виждате вашия език, причината е, че не е налична актуална корекция за този език.
' Версията на английски език на тази актуална корекция има файлови атрибути (или по-нови), които са изброени в таблицата по-долу. Датите и часовете за тези файлове са изброени в координирано универсално време (UTC). Когато преглеждате информацията за файла, тя се конвертира в локално време. За да намерите разликата между UTC и локалното време, използвайте раздела Часова зона в инструмента за дата и час в Контролен панел.
MDAC 2.7 Service Pack 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:
839801 КОРЕКЦИЯ: Налични са горещи поправки за MDAC 2.8
Статут
Microsoft потвърди, че това е проблем в продуктите на 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