Sintomi
Se si esegue una stored procedure remota con parametri di output in un server collegato tramite un driver ODBC per SQL Server, il driver ODBC non può recuperare il parametro di output e potrebbe essere visualizzato il messaggio di errore seguente:
[Microsoft] [Driver SQL Server ODBC]Violazione dell'attributo tipo di dati con restrizioni
Risoluzione
Un hotfix supportato è disponibile da Microsoft. Tuttavia, questo hotfix ha lo scopo di correggere solo il problema descritto in questo articolo. Applica questo hotfix solo ai sistemi che stanno riscontrando questo problema specifico. Questo hotfix potrebbe ricevere ulteriori test. Pertanto, se non si è gravemente colpiti da questo problema, è consigliabile attendere il prossimo aggiornamento software che contiene questo hotfix.
Se l'hotfix è disponibile per il download, nella parte superiore di questo articolo della Knowledge Base è presente la sezione "Download di hotfix disponibile". Se questa sezione non viene visualizzata, contattare il supporto tecnico Microsoft per ottenere l'hotfix. Nota Se si verificano altri problemi o se è necessaria una risoluzione dei problemi, potrebbe essere necessario creare una richiesta di servizio separata. I soliti costi di supporto si applicano a ulteriori domande e problemi di supporto che non sono idonei per questo hotfix specifico. Per un elenco completo dei numeri di telefono del servizio clienti Microsoft e del supporto tecnico Microsoft o per creare una richiesta di servizio separata, visita il seguente sito Web Microsoft:http://support.microsoft.com/contactus/?ws=supportNota Il modulo "Download di hotfix disponibile" mostra le lingue per cui l'hotfix è disponibile. Se non vedi la tua lingua, è perché non è disponibile un hotfix per tale lingua. ' The english version of this hotfix has the file attributes (or later) that are listed in the following table. Le date e le ore di questi file sono elencate in formato UTC (Coordinated Universal Time). Quando esaminate le informazioni del file, viene convertito in orario locale. Per calcolare la differenza tra l'ora UTC e quella locale, utilizzare la scheda Fuso orario dello strumento Data e ora del Pannello di controllo.
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
Nota Per un elenco di tutti gli aggiornamenti rapidi disponibili per MDAC 2.8, fare clic sul numero dell'articolo seguente per visualizzare l'articolo della Microsoft Knowledge Base:
839801 FIX: Sono disponibili aggiornamenti rapidi per MDAC 2.8
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".
Ulteriori informazioni
Procedura per riprodurre il problema
-
Utilizzare il codice seguente per creare una stored procedure SQL Server con parametri di output in un server collegato:
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
Nota Non viene visualizzato il messaggio di errore elencato nella sezione "Sintomi" se la stored procedure restituisce un set di risultati.
-
Il codice di esempio dell'applicazione Microsoft Visual Basic seguente accede alla stored procedure remota in un server collegato. Nell'esempio di codice seguente srv1 e
srv2 sono i due server che eseguono SQL Server e si crea srv2 come server collegato in 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