multiple errors error código 0x80004005 sql-server ssis

sql server - errors - ¿Cómo soluciono los errores de operación OLE DB de varios pasos en SSIS?



error de ole db código de error 0x80004005 (10)

Estoy intentando crear un paquete DTS para transferir datos entre dos bases de datos en el mismo servidor y obtengo los siguientes errores. Leí que el error generado por la operación OLE DB de múltiples pasos puede ocurrir cuando está transfiriendo entre diferentes tipos de bases de datos y hay pérdida de precisión, pero este no es el caso aquí. ¿Cómo examino los metadatos de la columna?

Error: 0xC0202009 en la tarea de flujo de datos, piTech [183]: se ha producido un error OLE DB. Código de error: 0x80040E21. Un registro OLE DB está disponible. Origen: "Microsoft SQL Native Client" Hresult: 0x80040E21 Descripción: "Operación OLE DB de varios pasos generó errores. Revise cada valor de estado de OLE DB, si está disponible. No se realizó ningún trabajo".

Error: 0xC0202025 en la tarea de flujo de datos, piTech [183]: No se puede crear un descriptor de acceso OLE DB. Verifique que los metadatos de la columna sean válidos.

Error: 0xC004701A en Data Flow Task, DTS.Pipeline: el componente "piTech" (183) falló la fase de pre-ejecución y devolvió el código de error 0xC0202025.


Esta consulta debe identificar las columnas que son posibles problemas ...

SELECT * FROM [source].INFORMATION_SCHEMA.COLUMNS src INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH


Puede usar SELECT * FROM INFORMATION_SCHEMA.COLUMNS pero sospecho que creó la base de datos de destino a partir de un script de la base de datos de origen, por lo que es muy probable que sus columnas sean las mismas.

Sin embargo, algunas comparaciones pueden aportar algo.

Este tipo de errores a veces provienen de intentar insertar demasiados datos en columnas varchar también.


Cuando estaba transfiriendo datos de una base de datos antigua a una nueva, tuve un problema similar. Recibí el error anterior. Luego ejecuté el siguiente script

SELECT * FROM [source].INFORMATION_SCHEMA.COLUMNS src INNER JOIN [dest].INFORMATION_SCHEMA.COLUMNS dst ON dst.COLUMN_NAME = src.COLUMN_NAME WHERE dst.CHARACTER_MAXIMUM_LENGTH < src.CHARACTER_MAXIMUM_LENGTH

y encontré que mis columnas eran ligeramente diferentes en términos de tamaños de caracteres, etc. Intenté modificar la tabla con la nueva estructura de la tabla que no funcionaba. Luego transferí los datos de la antigua base de datos a Excel e importé los datos de Excel al nuevo DB que funcionó al 100%.


Eche un vistazo a las propiedades de los campos (tipo, longitud, valor predeterminado, etc.), deben ser los mismos.

Tuve este problema con SQL Server 2008 R2 porque la longitud de los campos no es igual.


Este error es común cuando la tabla fuente contiene una columna TEXTO y el objetivo es cualquier cosa que no sea una columna TEXTO. Puede ser un verdadero devorador de tiempo si no se ha encontrado (¡u olvidado!) Esto antes.

Convierta la columna de texto a cadena y establezca la condición de error en truncamiento para ignorar. esto usualmente servirá como una solución para este error.


Este error también ocurrirá al intentar hacer una inserción y un campo codificado no nulo y los nulos intentan insertarse.


Tuve este error al transferir un csv a mssql. Convertí las columnas a DT_NTEXT y algunas columnas en mssql se establecieron en nvarchar (255).

configurándolos en nvarchar (max) lo resolvió.


También verifique si el script no tiene comandos de separador de lotes (elimine los enunciados ''IR'' en una sola línea).


''-2147217887'' message ''IDispatch error #3105'' source ''Microsoft OLE DB Service Components'' description ''Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.''."

Esto es a lo que también me enfrentaba. El problema vino del hecho de que cambié mi proveedor de SQLOLEDB.1 a SQLNCLI11 sin mencionar el modo de compatibilidad en la cadena de conexión. Cuando configuro este DataTypeCompatibility=80; en la cadena de conexión, obtuve el problema resuelto.


Este problema vendrá principalmente debido a las filas vacías al final del archivo, eliminarlas y ejecutar el trabajo.