none
ConnectionString en SSIS RRS feed

  • Pregunta

  • Buenas noches

    Antes que nada, permitanme extenderles un cordial saludo, el motivo de este mensaje es para solicitar su apoyo con un problema que tengo, estoy desarrollando un paquete de SSIS que permite generar scripts de las estructuras de "n" numero de base de datos, esto incluye crear las tablas (sin datos), defaults, indices, triggers, etc.

    He generado un paquete de Script Task, y despues de configurarlo, logre generar el script de una base del mismo servidor, sin embargo, si me intento conectar a otro servidor, me genera error de inicio de sesion y esto es porque me toma como inicio de sesion por default, el usuario de Windows, sin embargo, necesito que me tome un usuario de SQL Server y su respectiva contraseña y asi mismo, poder pasarle con una variable, el nombre del servidor, ya que el detalle es que este paquete, se va a conectar por red y va a generar los scripts del servidor principal en uno de respaldo, y el usuario y la contraseña seria la misma en todos los servidores, lo unico que requiero es poder configurar la cadena de conexion, pero no se como hacerlo, he leido y me han recomendado usar AcquireConnection del Connection Manager, crear una conexion de OLEDB, pero por mas que he intentado, no me ha quedado como requiero y me sigue generando error de inicio de sesion.

    Este es mi codigo que he generado, pero no logro cambiar la conexion:

    Server oServer = new Server("MISERVIDOR");

    bool bOtraVez = false;

    string sRutaArchivo = @"D:\EstructurasBD" + @"\";


    if (Directory.Exists(sRutaArchivo))
    {
        Directory.Delete(sRutaArchivo, true);
    }


    Directory.CreateDirectory(sRutaArchivo);


    ScriptingOptions oScriptingOptions = new ScriptingOptions();
    oScriptingOptions.AppendToFile = true;
    oScriptingOptions.IncludeDatabaseContext = true;
    oScriptingOptions.Indexes = true;
    oScriptingOptions.DriForeignKeys = true;
    oScriptingOptions.Indexes = false;
    oScriptingOptions.DriPrimaryKey = true;
    oScriptingOptions.ClusteredIndexes = true;
    oScriptingOptions.NonClusteredIndexes = false;


    ScriptingOptions oScriptingOptions = new ScriptingOptions();


    foreach (Database oDatabase in oServer.Databases)
    {
        if ((!oDatabase.IsSystemObject) && (!oDatabase.Name.StartsWith("Report")))
        {
            Dts.Events.FireInformation(0, string.Empty, "Procesando BBDD: " + oDatabase.Name, string.Empty, 0, ref bOtraVez);
            oScriptingOptions.FileName = sRutaArchivo + oDatabase.Name + ".sql";
            oDatabase.Script(oScriptingOptions);



            foreach (Table oTable in oDatabase.Tables)
            {
                Dts.Events.FireInformation(0, string.Empty, "Procesando tabla: " + oDatabase.Name + '-' + 
                    oTable.Schema + '.' + oTable.Name, string.Empty, 0, ref bOtraVez);
                oTable.Script(oScriptingOptions);
            }

    foreach (View oView in oDatabase.Views)
            {
            Dts.Events.FireInformation(0, string.Empty, "Procesando vista: " + oDatabase.Name + '-' + 
               oView.Schema + '.' + oView.Name, string.Empty, 0, ref bOtraVez);
            oView.Script(oScriptingOptions);
            }


        foreach (StoredProcedure oStoredProcedure in oDatabase.StoredProcedures)
        {
            if (!oStoredProcedure.IsEncrypted)
            {
                Dts.Events.FireInformation(0, string.Empty, "Procesando procedimiento almacenado: " + oDatabase.Name + '-' + 
                    oStoredProcedure.Schema + '.' + oStoredProcedure.Name, string.Empty, 0, ref bOtraVez);
                oStoredProcedure.Script(oScriptingOptions);
            }
        }


        foreach (UserDefinedFunction oUserDefinedFunction in oDatabase.UserDefinedFunctions)
        {
            if (!oUserDefinedFunction.IsEncrypted)
            {
                Dts.Events.FireInformation(0, string.Empty, "Procesando función: " + oDatabase.Name + '-' + 
                    oUserDefinedFunction.Schema + '.' + oUserDefinedFunction.Name, string.Empty, 0, ref bOtraVez);
                oUserDefinedFunction.Script(oScriptingOptions);
            }
        }

        }
    }

    Quedo en espera de su amable respuesta y les deseo un excelente dia...

    Gracias

    Saludos


    Diego Berra Suarez

    jueves, 15 de noviembre de 2012 4:54

Respuestas