Symptomy
Jeśli uruchomisz zdalną procedurę składowaną z parametrami wyjściowymi na serwerze połączonym za pośrednictwem sterownika ODBC dla SQL Server, sterownik ODBC nie będzie mógł pobrać parametru wyjściowego i może zostać wyświetlony następujący komunikat o błędzie:
[Microsoft] [ODBC SQL Server Driver]Naruszenie atrybutu ograniczonego typu danych
Rozwiązanie
Obsługiwana poprawka jest dostępna od firmy Microsoft. Jednak ta poprawka ma na celu naprawienie tylko problemu opisanego w tym artykule. Zastosuj tę poprawkę tylko do systemów, w których występuje ten konkretny problem. Ta poprawka może wymagać dodatkowych testów. Dlatego jeśli ten problem cię nie dotyczy poważnie, zalecamy zaczekanie na kolejną aktualizację oprogramowania zawierającą tę poprawkę.
Jeśli poprawka jest dostępna do pobrania, u góry tego artykułu z bazy wiedzy znajduje się sekcja "Dostępne do pobrania poprawki". Jeśli ta sekcja nie jest wyświetlana, skontaktuj się z działem obsługi klienta firmy Microsoft i pomocą techniczną w celu uzyskania poprawki.
Uwaga Jeśli wystąpią dodatkowe problemy lub jest wymagane jakiekolwiek rozwiązywanie problemów, może być konieczne utworzenie oddzielnego żądania usługi. Typowe koszty pomocy technicznej będą miały zastosowanie do dodatkowych pytań dotyczących pomocy technicznej i problemów, które nie kwalifikują się do danej poprawki. Aby uzyskać pełną listę numerów telefonów działu obsługi klienta i pomocy technicznej firmy Microsoft lub utworzyć oddzielne żądanie obsługi, odwiedź następującą witrynę internetową firmy Microsoft:
http://support.microsoft.com/contactus/?ws=supportUwaga W formularzu "Dostępne do pobrania poprawki" są wyświetlane języki, dla których jest dostępna poprawka. Jeśli nie widzisz swojego języka, oznacza to, że poprawka nie jest dostępna dla tego języka.
' Angielska wersja tej poprawki ma atrybuty pliku (lub nowsze), które są wymienione w poniższej tabeli. Daty i godziny dla tych plików są wymienione w uniwersalnym czasie koordynowanym (UTC). Podczas wyświetlania informacji o pliku są konwertowane na czas lokalny. Aby znaleźć różnicę między czasem UTC a czasem lokalnym, użyj karty Strefa czasowa w narzędziu Data i godzina w Panel sterowania.
Dodatek Service Pack 1 dla MDAC 2.7
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
Uwaga Aby poznać listę wszystkich poprawek dostępnych dla języka MDAC 2.8, kliknij następujący numer artykułu, aby wyświetlić ten artykuł w bazie wiedzy Microsoft Knowledge Base:
839801 POPRAWKA: Dostępne są poprawki dla MDAC 2.8
Stan
Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych w sekcji "Dotyczy".
Więcej informacji
Procedura odtwarzania zachowania
-
Użyj następującego kodu, aby utworzyć procedurę składowaną SQL Server z parametrami wyjściowymi na serwerze połączonym:
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
Uwaga Jeśli procedura składowana zwraca zestaw wyników, nie jest wyświetlany komunikat o błędzie wymieniony w sekcji "Objawy".
-
Poniższy przykładowy kod aplikacji języka Microsoft Visual Basic uzyskuje dostęp do zdalnej procedury składowanej na serwerze połączonym. W poniższym przykładzie kodu srv1 i
srv2 to dwa serwery, na których działa SQL Server, i tworzysz srv2 jako serwer połączony na 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