Symptomer
Hvis du kører en lagret fjernprocedure med outputparametre på en sammenkædet server via en ODBC-driver til SQL Server, kan ODBC-driveren ikke hente outputparameteren, og du får muligvis vist følgende fejlmeddelelse:
[Microsoft] [ODBC SQL Server Driver]Attributovertrædelse for begrænset datatype
Løsning
Et understøttet hotfix er tilgængeligt fra Microsoft. Dette hotfix er dog kun beregnet til at rette det problem, der er beskrevet i denne artikel. Anvend kun dette hotfix på systemer, der oplever dette specifikke problem. Dette hotfix kan blive testet yderligere. Hvis du ikke er alvorligt berørt af dette problem, anbefaler vi derfor, at du venter på den næste softwareopdatering, der indeholder dette hotfix.
Hvis hotfixet kan downloades, er afsnittet "Hotfixdownload tilgængeligt" øverst i denne Knowledge Base-artikel. Hvis dette afsnit ikke vises, skal du kontakte Microsofts kundeservice og support for at få hotfixet.
Bemærk! Hvis der opstår yderligere problemer, eller hvis der kræves fejlfinding, kan det være nødvendigt at oprette en separat serviceanmodning. De sædvanlige supportomkostninger gælder for yderligere supportspørgsmål og -problemer, der ikke er berettiget til dette specifikke hotfix. Du kan finde en komplet liste over telefonnumre til Microsofts kundeservice og support eller oprette en separat serviceanmodning på følgende Microsoft-websted:
http://support.microsoft.com/contactus/?ws=supportBemærk! Formularen "Tilgængelig hotfixdownload" viser de sprog, som hotfixet er tilgængeligt for. Hvis du ikke kan se dit sprog, skyldes det, at et hotfix ikke er tilgængeligt for det pågældende sprog.
' Den engelske version af dette hotfix har de filattributter (eller nyere), der er angivet i følgende tabel. Datoerne og klokkeslættene for disse filer er angivet i UTC (Coordinated Universal Time). Når du får vist filoplysningerne, konverteres de til lokal tid. Du kan finde forskellen mellem UTC og lokal tid ved at bruge fanen Tidszone i værktøjet Dato og klokkeslæt i Kontrolpanel.
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
Bemærk! Du kan få en liste over alle de hotfixes, der er tilgængelige for MDAC 2.8, ved at klikke på nedenstående artikelnummer for at få vist artiklen i Microsoft Knowledge Base:
839801 RETTELSE: Hotfixes er tilgængelige til MDAC 2.8
Status
Microsoft har bekræftet, at problemet findes i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".
Flere oplysninger
Trin til at genskabe funktionsmåden
-
Brug følgende kode til at oprette en SQL Server lagret procedure med outputparametre på en sammenkædet server:
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
Bemærk! Du modtager ikke den fejlmeddelelse, der er angivet i afsnittet "Symptomer", hvis den lagrede procedure returnerer et resultatsæt.
-
Følgende Eksempelkode til Microsoft Visual Basic-programmet får adgang til den lagrede fjernprocedure på en sammenkædet server. I følgende kodeeksempel er srv1 og
srv2 de to servere, der kører SQL Server, og du opretter srv2 som en sammenkædet server på 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