Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a resolver el error 0xC0202009 que se produce cuando Microsoft SQL Server Integration Services (SSIS) realiza una conversión de parámetros en SQL Server.
Versión del producto original: SQL Server
Número de KB original: 3001293
Síntomas
Al ejecutar un paquete SSIS, se produce un error en la ejecución debido a un error de conversión de parámetros y recibe el siguiente mensaje de error:
Código: 0xC0202009
Origen: tarea Flujo de datos
Descripción: código de error de SSIS DTS_E_OLEDBERROR. Error de OLE DB. Código de error: 0x80040E21.
Hay un registro OLE DB disponible. Origen: "Microsoft SQL Server Native Client 11.0"
Hresult: 0x80040E21 Descripción: "Valor de carácter no válido para la especificación de conversión".
En el caso de un componente de origen OLE DB, cuando tiene una tarea de flujo de datos que contiene una consulta con parámetros, puede experimentar este problema. Por ejemplo, tiene la siguiente consulta:
SELECT mydate
FROM dbo.myTable
WHERE mydate >= convert (char, dateadd(year,-1,cast( ? as datetime)))
Nota:
Este problema solo se produce si intenta usar un componente de origen OLE DB junto con parámetros en la cadena de consulta. Un marcador ?
de parámetro se asigna a una variable de usuario de SSIS parameter1 que se define como cadena de SSIS 20080122
.
Causa
El problema se produce debido al cambio de comportamiento en la forma en que OLE DB controla los parámetros. En Microsoft SQL Server 2012, el nuevo procedimiento almacenado de , el reemplazo del sp_describe_undeclared_parameters
conjunto fmtonly
devuelve un resultado diferente para el tipo de parámetro. Este cambio es por diseño.
En la consulta de ejemplo de la sección Síntomas , el comportamiento original es describir ?
como char(8)
. Sin embargo, el nuevo sp_describe_undeclared_parameters dice que ?
debe ser datetime
. Por lo tanto, la conversión interna de cadena a datetime
la que controla el proveedor OLE DB devuelve el mensaje de error.
Solución
Para resolver este problema, vuelva a escribir la consulta para agregar una conversión explícita adicional al tipo de datos original. A continuación, sp_describe_undeclared_parameters
devuelve el tipo correcto esperado. Para resolver este problema en la consulta de ejemplo que se describe en la sección Síntomas , actualice la consulta de la siguiente manera:
SELECT mydate
FROM dbo.myTable
WHERE mydate >= convert(char ,dateadd(year,-1, cast( cast( ? as char(8)) as datetime)))