Objawy
W przypadku uruchomienia zdalnej procedury składowanej z parametrami wyjściowymi na serwerze połączonym za pośrednictwem sterownika ODBC dla programu SQL Server sterownik ODBC nie może pobrać parametru wyjściowego i może zostać wyświetlony następujący komunikat o błędzie:
Uwaga
[Microsoft][ODBC SQL Server Driver]Naruszenie atrybutu ograniczonego typu danych
Rozwiązanie
Obsługiwana poprawka jest dostępna w firmie Microsoft. Jednak ta poprawka ma na celu rozwiązanie tylko problemu opisanego w tym artykule. Tę poprawkę należy stosować tylko do systemów, w których występuje ten konkretny problem. Ta poprawka może zostać poddana dodatkowym testom. Dlatego jeśli ten problem nie dotyczy użytkownika, zaleca się zaczekać na następną 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 zostanie wyświetlona, skontaktuj się z działem pomocy technicznej i pomocy technicznej firmy Microsoft w celu uzyskania poprawki.
Uwaga W przypadku wystąpienia dodatkowych problemów lub konieczności rozwiązania problemu może być konieczne utworzenie osobnego zgłoszenia serwisowego. Normalne koszty pomocy technicznej będą dotyczyć dodatkowych pytań oraz problemów, które nie kwalifikują się do objęcia tą poprawką. 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ę firmy Microsoft w sieci Web:
http://support.microsoft.com/contactus/?ws=support Uwaga: W formularzu "Dostępne do pobrania poprawki" są wyświetlane języki, dla których poprawka jest dostępna. Jeśli nie widzisz odpowiedniego języka, oznacza to, że nie ma dla niego dostępnej poprawki.
' 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ą podawane według uniwersalnego czasu koordynowanego (UTC). Informacje 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 Panelu sterowania.
MDAC 2.7 z dodatkiem 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
Uwaga Aby uzyskać listę wszystkich poprawek dostępnych dla programu MDAC 2.8, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:
839801 POPRAWKA: Dostępne są poprawki dla pakietu MDAC 2.8
Stan
Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.
Więcej informacji
Kroki prowadzące do odtworzenia problemu
Użyj poniższego kodu, aby utworzyć procedurę składowaną programu 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 GOUwaga Jeśli procedura składowana zwróci zestaw wyników, komunikat o błędzie wymieniony w sekcji "Objawy" nie zostanie zwrócony.
Poniższy przykładowy kod aplikacji 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 program SQL Server, a Ty 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