Symptômes
Si vous exécutez une procédure stockée distante avec des paramètres de sortie sur un serveur lié via un pilote ODBC pour SQL Server, le pilote ODBC ne peut pas récupérer le paramètre de sortie et vous pouvez recevoir le message d’erreur suivant :
[Microsoft] [ODBC SQL Server Driver]Violation d’attribut de type de données restreint
Résolution
Un correctif logiciel pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif est destiné à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif logiciel uniquement aux systèmes qui rencontrent ce problème spécifique. Ce correctif peut recevoir des tests supplémentaires. Par conséquent, si vous n’êtes pas gravement affecté par ce problème, nous vous recommandons d’attendre la prochaine mise à jour logicielle qui contient ce correctif logiciel.
Si le correctif logiciel est disponible en téléchargement, une section « Téléchargement de correctif logiciel disponible » est disponible en haut de cet article de la Base de connaissances. Si cette section n’apparaît pas, contactez le service clientèle microsoft et le support technique pour obtenir le correctif logiciel.
Remarque Si des problèmes supplémentaires se produisent ou si un dépannage est nécessaire, vous devrez peut-être créer une demande de service distincte. Les coûts de support habituels s’appliqueront aux questions et problèmes de support supplémentaires qui ne sont pas éligibles à ce correctif logiciel spécifique. Pour obtenir la liste complète des numéros de téléphone du service clientèle et du support technique Microsoft ou pour créer une demande de service distincte, visitez le site Web Microsoft suivant :
http://support.microsoft.com/contactus/?ws=supportNotez que le formulaire « Téléchargement du correctif logiciel disponible » affiche les langues pour lesquelles le correctif logiciel est disponible. Si vous ne voyez pas votre langue, c’est qu’un correctif logiciel n’est pas disponible pour cette langue.
' La version anglaise de ce correctif logiciel contient les attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations des fichiers, les données sont converties en heure locale. Pour trouver la différence entre l’heure UTC et l’heure locale, utilisez l’onglet Fuseau horaire dans l’outil Date et heure dans Panneau de configuration.
Service Pack 1 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
Remarque Pour obtenir la liste de tous les correctifs logiciels disponibles pour MDAC 2.8, cliquez sur le numéro d’article suivant pour afficher l’article dans la Base de connaissances Microsoft :
839801 CORRECTIF : Des correctifs logiciels sont disponibles pour MDAC 2.8
État
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Informations supplémentaires
Étapes de reproduction du comportement
-
Utilisez le code suivant pour créer une procédure stockée SQL Server avec des paramètres de sortie sur un serveur lié :
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
Notez que vous ne recevez pas le message d’erreur répertorié dans la section « Symptômes » si la procédure stockée renvoie un jeu de résultats.
-
L’exemple de code d’application Microsoft Visual Basic suivant accède à la procédure stockée distante sur un serveur lié. Dans l’exemple de code suivant, srv1 et
srv2 sont les deux serveurs qui exécutent SQL Server, et vous créez srv2 en tant que serveur lié sur 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