Síntomas
Si ejecuta un procedimiento almacenado remoto con parámetros de salida en un servidor vinculado a través de un controlador ODBC para SQL Server, el controlador ODBC no puede recuperar el parámetro de salida y puede recibir el siguiente mensaje de error:
[Microsoft] [Controlador SQL Server ODBC]Infracción de atributos de tipo de datos restringidos
Solución
Microsoft dispone de una revisión compatible. Sin embargo, esta revisión está pensada para corregir solo el problema que se describe en este artículo. Aplique esta revisión solo a los sistemas que experimentan este problema específico. Esta revisión podría recibir pruebas adicionales. Por lo tanto, si no se ve gravemente afectado por este problema, le recomendamos que espere a la siguiente actualización de software que contiene esta revisión.
Si la revisión está disponible para su descarga, hay una sección "Descarga de revisiones disponible" en la parte superior de este artículo de Knowledge Base. Si esta sección no aparece, póngase en contacto con el servicio de asistencia al cliente de Microsoft para obtener la revisión.
Nota Si se producen problemas adicionales o si es necesario solucionarlos, es posible que deba crear una solicitud de servicio independiente. Los costos de soporte técnico habituales se aplicarán a preguntas y problemas de soporte técnico adicionales que no reúnan los requisitos para esta revisión específica. Para obtener una lista completa de los números de teléfono de atención al cliente y soporte técnico de Microsoft o para crear una solicitud de servicio independiente, visite el siguiente sitio web de Microsoft:
http://support.microsoft.com/contactus/?ws=supportNota El formulario "Descarga de revisiones disponible" muestra los idiomas para los que está disponible la revisión. Si no ve su idioma, es porque una revisión no está disponible para ese idioma.
' La versión en inglés de esta revisión tiene los atributos de archivo (o posterior) que se enumeran en la tabla siguiente. Las fechas y horas de estos archivos se muestran en la hora universal coordinada (UTC). La información del archivo se convertirá a la hora local cuando la vea. Para buscar la diferencia entre UTC y la hora local, use la pestaña Zona horaria de la herramienta Fecha y hora de Panel de control.
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 Para obtener una lista de todas las revisiones disponibles para MDAC 2.8, haga clic en el siguiente número de artículo para verlo en Microsoft Knowledge Base:
839801 CORRECCIÓN: Las revisiones están disponibles para MDAC 2.8
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Más información
Pasos para reproducir este comportamiento
-
Utilice el código siguiente para crear un procedimiento almacenado de SQL Server con parámetros de salida en un servidor vinculado:
USE pubs GO CREATE PROCEDURE dbo.sample_stored_procedure @op varchar(20) output AS set @op = 'demo string' return 0 GO
Nota No recibe el mensaje de error que aparece en la sección "Síntomas" si el procedimiento almacenado devuelve un conjunto de resultados.
-
El siguiente código de ejemplo de la aplicación de Microsoft Visual Basic tiene acceso al procedimiento almacenado remoto en un servidor vinculado. En el ejemplo de código siguiente, srv1 y
srv2 son los dos servidores que ejecutan SQL Server y está creando srv2 como un servidor vinculado en 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