2012-05-02 100 views
5

Estoy tratando de ejecutar una consulta en Oracle con la cláusula where incluyendo0x80040e51 Descripción: "El proveedor no puede derivar información de parámetros y no se ha llamado a SetParameterInfo".

BETWEEN date AND date2 

Primera ronda de la investigación muestra que el proveedor OLEDB de Oracle no permite consultas con parámetros, y éstas se fijará de variables. Así que he creado 3 variables. 2 para sujetar las fechas que se rellenan correctamente, y una para sujetar la consulta con la expresión termina en:

BETWEEN to_date('" + (DT_WSTR, 30)@[User::lastRun] + "','DD/MM/YYYY HH:MI:SS AM') AND to_date('" + (DT_WSTR, 30) @[User::thisRun] + "','DD/MM/YYYY HH:MI:SS AM')" 

Al hacer clic en "evaluar la expresión" en el generador de expresiones, se evalúa correctamente para

BETWEEN to_date('1/1/1900','DD/MM/YYYY HH:MI:SS AM') AND 
to_date('1/1/2010','DD/MM/YYYY HH:MI:SS AM') 

Y puedo ejecutar esto contra Oracle de forma exitosa con otras herramientas.

Pero cuando trato de ejecutar el paquete, recibo:

[mySource 1 ] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E51. An OLE DB record is available. Source: "OraOLEDB" Hresult: 0x80040E51 Description: "Provider cannot derive parameter information and SetParameterInfo has not been called.".

Dónde miFuente es el origen de OLE DB. Tiene su modo de acceso establecido en "Comando SQL de la variable" y SQLCommandVariable establecido en mi variable de consulta.

También intentado fijar manualmente todas las columnas externas de salida, y cambiar algunos de los valores que me seleccionando en la consulta de esparcir el tipo de datos Oracle FECHA:

to_char(PT.CREATED_DTTM,'DD/MM/YYYY HH:MI:SS AM') 

Todavía soy bastante nuevo en SSIS, así que ni siquiera estoy seguro de estar buscando en el lugar correcto la raíz de este error. Alguien tiene ideas de dónde ir desde aquí?

Capturas de pantalla según se solicite. Como puede ver, la consulta "de variable" funciona como se espera en el modo de vista previa, pero cuando intento ejecutarla obtengo el error.

Control Flow Data Source Debug error

+0

Sí, la primera 2 están pobladas por ejecutar tareas de SQL. Como mostré la variable se evalúa correctamente (pero con los valores predeterminados de las dos primeras variables de fecha) "Cuando hago clic en 'Evaluar expresión' en el generador de expresiones, se evalúa correctamente como" – slipsec

+0

Voy a agregar capturas de pantalla mañana cuando estoy de vuelta de esa computadora. Por ahora, puedo decir que la vista previa muestra que la consulta se ejecuta correctamente; el problema tiene que ver con agregarlo a la fuente OLEDB. – slipsec

+0

Se agregaron capturas de pantalla según lo solicitado. Solo estoy mapeando una columna de salida por ahora hasta que esto funcione. – slipsec

Respuesta

1

que terminaron configurando esto en las "expresiones" en el flujo de datos y no en la fuente VIEJO DB, asegurándose de que la variable todavía tiene "EvaluateAsExpression" = True.

También puede ver que he actualizado desde OLE DB a usar el Attunity Oracle connector.

DataFlowSource

+0

Hola, si estás configurando expresión para [Oracle Source]. [SqlCommand] en Data Flow, ¿qué debes establecer en "Oracle Source" dentro de la tarea Data Flow? ¿Cómo obtengo las columnas de salida y realizo las transformaciones? –

Cuestiones relacionadas