es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo ejecutar SqlCommand utilizando una conexión OLEDB en el componente de script de SSIS.

Estoy utilizando SSIS 2019 y puedo ejecutar el comando SQL con el administrador de conexiones ADO.Net.
Quiero usar el administrador de conexiones OLEDB en un componente Script dentro de una tarea de flujo de datos y estoy obteniendo el siguiente error:

System.InvalidCastException: No se puede convertir el objeto COM de tipo ‘System.__ComObject’ al tipo de clase ‘System.Data.SqlClient.SqlConnection’. Las instancias de tipos que representan componentes COM no se pueden convertir a tipos que no representan componentes COM; sin embargo, se pueden convertir a interfaces siempre que el componente COM subyacente admita llamadas QueryInterface para el IID de la interfaz.

Enlace de la imagen de referencia: aquí
Alguien por favor, ¿me puede informar si podemos usar la conexión OLEDB en un componente de script SSIS en un flujo de datos?

Aquí está el código para las cadenas de conexión

public override void PreExecute()
{
string conn = this.Connections.Connection.ConnectionString;
}

No estoy obteniendo errores de compilación en el código de script C#, pero obtengo un error en el componente de script.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando convertir un objeto SqlConnection en un objeto OleDbConnection, lo cual no es posible ya que son dos tipos de conexiones diferentes. Para utilizar una conexión OLEDB en un componente de script dentro de una tarea de flujo de datos, primero debes crear una instancia de la clase OleDbConnection y luego usarla para ejecutar tus comandos SQL.

    Puedes hacer esto agregando el siguiente código al método PreExecute de tu componente de script:

    public override void PreExecute()
    {
        base.PreExecute();
        // Crear objeto de conexión OLEDB
        OleDbConnection oleDbConnection = new OleDbConnection();
        // Establecer la cadena de conexión
        oleDbConnection.ConnectionString = "tu_cadena_de_conexión_aquí";
        // Abrir la conexión
        oleDbConnection.Open();
        // Utilizar la conexión para ejecutar tus comandos SQL
        // ...
    }
    

    Reemplaza “tu_cadena_de_conexión_aquí” con la cadena de conexión real de tu Administrador de conexiones OLEDB. Una vez que hayas creado el objeto OleDbConnection y abierto la conexión, puedes utilizarlo para ejecutar comandos SQL de la misma manera que lo harías con el Administrador de conexiones ADO.Net.

    Ten en cuenta que es posible que debas importar el espacio de nombres System.Data.OleDb en la parte superior del archivo de código de tu componente de script para poder utilizar la clase OleDbConnection.

Comments are closed.