SSIS 2008 Ejecutar SQL parámetro de salida problema mapeo datetime2
-
22-08-2019 - |
Pregunta
Estoy tratando de utilizar una tarea Ejecutar SQL en SSIS 2008 para asignar un parámetro de salida de proceso de almacenamiento a una variable de paquete.
La variable de paquete es SSIS tipo DateTime y el parámetro de proceso de almacenamiento es de tipo SQL DATETIME.
La instrucción SQL es EXEC GetCurrentDate @CurrentDate=?
y en la pantalla de asignación de parámetros, el parámetro se asigna a la variable de paquete con la dirección de salida y tipo de datos DBTIMESTAMP especificado.
Al ejecutar el paquete me sale el siguiente error:
[Tarea de ejecución SQL] Error: Ejecución la consulta "EXEC GetCurrentDate @ CurrentDate =? "Fallado con el error siguiente: "El tipo de la valor que se asigna a la variable "Usuario :: CurrentDate" difiere de la Tipo de variable actual. Las variables pueden No cambie el tipo durante la ejecución. Los tipos de variables son estrictas, a excepción de variables de tipo de objeto. ". Posible razones de fracaso: Problemas con el consulta, "ResultSet" no establece la propiedad correctamente, no establecen parámetros correctamente, o no conexión establecida correctamente.
Si ejecuta un seguimiento en la consulta que se ejecuta veo está siendo asumido el tipo datetime2:
declare @p3 datetime2(7)
set @p3=NULL
exec sp_executesql N'EXEC GetCurrentDate @CurrentDate=@P1 ',N'@P1 datetime2(7) OUTPUT',@p3 output
select @p3
¿Alguien sabe por qué se está asumiendo el tipo es datetime2?
Gracias
Solución
Se han encontrado la respuesta en un informe de error Micorsoft conexion:
Estamos cerrando este caso ya que este es el comportamiento esperado y es el resultado del nuevo cambio de fecha y hora tipo SQL. Está utilizando un administrador de conexión OLEDB nativo para la tarea SQL, en el proceso de interoperabilidad COM, utilizamos VARIANTE para mantener el valor y la única manera de prevenir la pérdida de datos es almacenar el valor como variante BSTR. Si cambia de usuario :: dateParam de tipo String que va a funcionar, o puede cambiar a utilizar el gestor de conexión administrada para eludir la interoperabilidad COM.
http://connect.microsoft.com/SQLServer/feedback /ViewFeedback.aspx?FeedbackID=307835
Otros consejos
Trate de especificar los parámetros inout / salida como DATE
en lugar de DBTIMESTAMP
en la tarea de SSIS.
Esto ciertamente funciona en SSIS 2005 paquetes que he trabajado.
También vale la pena echar un vistazo a este enlace , que cubre esto, así como un par de otros problemas con SSIS y fechas.