sql-server - error code 0x80004005 ssis
La tarea de flujo de datos de SSIS se bloquea en la ejecuciĆ³n de la fase de ejecuciĆ³n previa (9)
Espero que esto ayude a alguien. Estaba intentando usar esta fuente OLE DB para ejecutar un SP con un parámetro. No lo necesitaba para devolver nada, así que dejé esa parte fuera. Pero no me lo permitió, gritó "no se devolvió ninguna información de columna por el sql". Así que configuré una declaración de sql ficticio en mi SP, que establecí en nunca verdadero. Pero nunca obtuvo esa columna como salida y el trabajo simplemente se colgó en la fase de ejecución previa. Así que cambié esa prueba para que siempre fuera verdadera, devolví la columna y listo. No hago nada con la columna, pero creo que se necesita allí.
Tengo una tarea de flujo de datos que se cuelga en ejecución.
El flujo es simple, hace dos consultas a diferentes tablas (ambas con un par de uniones), luego ordena y combina los elementos a través de una identificación común, agrega una columna estática a todos los registros, guarda el conteo de filas en una variable de usuario para más adelante utilizar y finalmente inserta en una tabla en otro DB. Estamos utilizando orígenes y destino OLE DB. La fuente es MSSQL 2000 y el destino es MSSQL 2012
Los síntomas:
Información: 0x40043006 en la tabla Load Sandbox, SSIS. Canalización: Comienza la preparación para la fase de ejecución.
Información: 0x40043007 en la tabla Load Sandbox, SSIS.Pipeline: Comienza la fase de ejecución previa.
Y nada más hasta que se detenga la ejecución.
Soluciones fallidas:
CONFIGURAR FMTONLY APAGADO;
CONFIGURAR NOCOUNT ENCENDIDO;
añadido al principio.
Bits extra: Realmente espero que alguien me pueda ayudar. Soy bastante nuevo en SSIS, esta es la primera vez que lo uso. Normalmente trabajo con Pentaho para mi ETL, pero el cliente necesita la solución que se implementará en SSIS. He estado luchando contra este problema durante un par de días y estoy empezando a quedarme sin ideas para resolverlo.
Cuando se ejecuta a través de la línea de comandos, también se atasca y obtengo el siguiente resultado:
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.23
Source: Load Sandbox Table
Validating: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 100% complete
End Progress
Warning: 2013-03-19 14:36:26.26
Code: 0x80047076
Source: Load Sandbox Table SSIS.Pipeline
Description: The output column "ITEM_OID (1)" (47) on output "Merge Join Outp
ut" (28) and component "Merge Join" (11) is not subsequently used in the Data Fl
ow task. Removing this unused output column can increase Data Flow task performa
nce.
End Warning
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 100% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.34
Source: Load Sandbox Table
Pre-Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:45.69
Source: Load Sandbox Table
Pre-Execute: 50% complete
End Progress
Después de eso se congela de nuevo.
SOLUCIÓN (Publicando esto aquí porque no puedo responder mi propia pregunta por otras 5 horas, lo haré cuando se me permita).
Finalmente lo tengo
Resulta que hay un problema con la validación, pero no solo los elementos de SSIS pasan por esa validación, como se indica en la cuarta solución fallida de la pregunta.
Las CONEXIONES también se validan y tienen su propia propiedad de Validación de retardo, que debe establecerse en verdadero.
Después de eso, el tiempo de ejecución pasó de más de 40 minutos o no se ejecutó a menos de un minuto para el proceso completo (Esto es solo un paso de un proceso mucho más grande)
Espero que las personas con este mismo problema puedan encontrar esta solución fácilmente porque hay muchas personas que se encuentran con este problema y casi no hay soluciones publicadas en línea.
En pocas palabras: compruebe que todos los elementos que participan en la tarea, incluidas las conexiones DB, tengan la propiedad de verificación de retraso establecida en Verdadero.
Este problema sigue activo con SQL Server 2012/2014.
Ninguna de las soluciones mencionadas anteriormente ayudó. De hecho, nada cambió retrasando la validación, cambiando la configuración del destino OLD DB o la conexión OLE DB.
Leyendo el hilo desde este enlace: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/35a484c7-4850-4f86-b14a-5dfb50491ab2/long-duration-preexecute-phase?forum=sqlintegrationservices
Se sugiere que el problema sea con el plan de ejecución.
Esto fue cierto para mi caso y al agregar una condición 1 = 1 a mi configuración OLE DB Source, el servidor SQL forzado generó un nuevo plan de ejecución que solucionó el problema para mí.
Finalmente lo tengo Resulta que hay un problema con la validación, pero no solo los elementos de SSIS pasan por esa validación, como se indica en la cuarta solución fallida de la pregunta. Las CONEXIONES también se validan y tienen su propia propiedad de Validación de retardo, que debe establecerse en verdadero. Después de eso, el tiempo de ejecución pasó de más de 40 minutos o no se ejecutó a menos de un minuto para el proceso completo (esto es solo un paso de un proceso mucho más grande). Espero que las personas con este mismo problema puedan encontrar esta solución fácilmente porque hay mucho. de personas que se encuentran con este problema y casi no hay soluciones publicadas en línea.
En pocas palabras: compruebe que todos los elementos que participan en la tarea, incluidas las conexiones DB, tengan la propiedad de verificación de retraso establecida en Verdadero.
Me encontré con el mismo problema hace unos minutos y las sugerencias anteriores no me funcionaron (la validación de retardo = verdadero parece ser la respuesta). Recientemente descubrimos algunos problemas con la detección de parámetros y, una vez que lo solucioné, en mis procedimientos almacenados, mi paquete se ejecutó en <1 min. Considere revisar sus procedimientos almacenados para ver si esta puede ser la causa.
Obtuve los mismos síntomas pero configuré la validación de retardo en Verdadero en cada componente que no resolvió mi problema
Lo resolví cambiando el método OLE DB de la tabla o vista al comando sql.
Saludos.
Otra cosa que hay que intentar, aparentemente, es marcar la casilla de verificación "Usar tiempo de ejecución de 32 bits": esto es si ve el problema cuando ejecuta el paquete como un trabajo en su servidor DB (que es de 64 bits, y en mi caso en menos, SQL Server 2008R2). Vaya al trabajo, haga clic con el botón derecho en> Propiedades ...> Pasos> haga clic con el botón derecho en el paso de su paquete SSIS> Propiedades ...> General> Opciones de ejecución (pestaña)> Use 32 bit runtime.
Estaba viendo este problema, pero solo una vez implementé el paquete en el servidor (tenía un proveedor de registro habilitado para poder verlo atascado después de la fase "Pre-Ejecutar"). Siempre funcionó bien en BIDS (y bien en otro servidor, curiosamente… todavía no estoy seguro de por qué).
Un hilo here me dio una idea de esta solución que parece funcionar, aunque mi problema aparece intermitentemente, así que YMMV. También hay otras posibles soluciones en ese hilo.
Sé que esto es viejo, pero acabo de encontrar un enlace sobre esto que puede ayudar. Personalmente, estoy usando una vista para exportar solo datos a una base de datos externa, y la validación de los datos lleva mucho tiempo validando la vista.
La parte importante de esto es la respuesta de Microsoft.
Publicado por Microsoft el 4/28/2008 a las 2:45 PM
Este es un problema conocido y el resultado del diseño actual.
Hay 2 formas de extraer datos de una vista en el origen de OLE DB:
Utilice el método de acceso "Tabla o vista"
Utilice el método de acceso "Comando SQL" e ingrese una consulta "seleccionar * de ***"
Un plan de ejecución diferente se genera en los dos enfoques.
El usado en el primero no es tan eficiente como el segundo.
Si encuentra el problema de rendimiento al utilizar el primer enfoque, puede cambiar al segundo enfoque como una solución alternativa.
También hemos publicado este problema en el blog: http://blogs.msdn.com/sqlperf/archive/2007/04/29/set-up-ole-db-source-to-read-from-view-efficiently.aspx .
Debido a que este es un artículo ''Por diseño'' y creemos que hay una solución alternativa, no proporcionaremos ningún cambio en este momento. Como resultado, estamos cerrando el caso asociado con su presentación. Si no está de acuerdo, no dude en volver a enviarlo.
Apreciamos su tiempo, esfuerzo y apoyo de SSIS.
Solucioné mi problema cambiando el modo de acceso a datos al comando SQL y pegando mi vista en el texto del comando SQL en el origen de OLE DB.
Ya teníamos nuestras Validaciones demoradas configuradas en True
y no podíamos / no queríamos cambiarlo a una declaración SQL.
Encontré ValidateExternalMetadata
en los flujos de datos que cambié a False
y que parecen funcionar como un campeón.
Revisé los pasos de OP y él menciona que hicieron eso en el Paso 5