SSIS cómo establecer la cadena de conexión de forma dinámica desde un archivo de configuración

Estoy usando SQL Server Integration Services (SSIS) en SQL Server Business Intelligent Development Studio.

Necesito hacer una tarea que sea la siguiente. Debo leer desde una base de datos fuente y ponerlo en un archivo plano de destino. Pero al mismo tiempo, la base de datos fuente debe ser configurable.

Eso significa que en el Administrador de conexión OLEDB, la cadena de conexión debe cambiar dinámicamente. Esta cadena de conexión debe tomarse de un archivo de configuración / XML / plano.

Leí que puedo usar variables y expresiones para cambiar dinámicamente la cadena de conexión. Pero, ¿cómo leo el valor de la cadena de conexión desde un archivo config / XML / flat y configuro la variable?

Esta parte no puedo hacer. ¿Es esta la manera correcta de lograr esto? ¿Podemos agregar archivos web.config a un proyecto SSIS?

Primero agregue una variable a su paquete SSIS (Package Scope) – Usé FileName, OleRootFilePath, OleProperties, OleProvider. El tipo para cada variable es “cadena”. Luego creo un archivo de configuración (seleccione cada variable – valor) – llene los valores en el archivo de configuración – Por ejemplo: para OleProperties – Microsoft.ACE.OLEDB.12.0; para OleProperties – Excel 8.0; HDR =, OleRootFilePath – Su ruta de archivo de Excel, FileName – FileName

En el administrador de conexión, configuro dinámicamente la expresión de cadena de propiedades-> expresiones-> conexión, por ejemplo:

 "Provider =" + @ [User :: OleProvider] + "Data Source =" + @ [User :: OleRootFilePath]
 + @ [User :: FileName] + "; Propiedades extendidas = \" "+ @ [User :: OleProperties] +" NO \ "" + ";"

De esta forma, una vez que establezca los valores de las variables y los cambie en su archivo de configuración, la cadena de conexión cambiará dinámicamente, esto ayuda especialmente al pasar del desarrollo a los entornos de producción.

Algunas opciones:

  1. Puede usar la Utilidad de paquete de ejecución para cambiar su fuente de datos antes de ejecutar el paquete.

  2. Puede ejecutar su paquete usando DTEXEC y cambiar su conexión pasando un parámetro / CONNECTION. Probablemente lo guarde como un lote, así que la próxima vez no necesita escribir todo y simplemente cambiar el origen de datos según sea necesario.

  3. Puede usar el archivo de configuración del paquete XML de SSIS. Aquí hay una caminata .

  4. Puede guardar sus configuraciones en una tabla de base de datos.

Aquí hay algunos antecedentes sobre el mecanismo que debe usar, denominados Configuraciones de paquete: Descripción de las configuraciones del paquete de Integration Services . El artículo describe 5 tipos de configuraciones:

  • Archivo de configuración XML
  • Variable ambiental
  • Entrada de registro
  • Variable del paquete principal
  • servidor SQL

Aquí hay un tutorial de configuración de Connection Manager: SQL Server Integration Services Configuración del paquete SSIS : me doy cuenta de que esto está usando una variable de entorno para la cadena de conexión (no es una gran idea), pero los conceptos básicos son idénticos a usar un XML archivo. El único paso (s) que debe cambiar en ese tutorial es el tipo de configuración y luego una ruta.

Goto Package properties-> Configurations-> Enable Package Configurations-> Add-> xml configuration file-> Specify dtsconfig file-> click next-> En OLEDB Properties, marque la cadena de conexión-> connection string value se mostrará-> haga clic en next y el paquete de acabado está configurado.

Puede agregar la variable de entorno también en este proceso

Estas respuestas son correctas, pero antiguas y funcionan para el Depoloyement Package Model . Lo que realmente necesito es cambiar el nombre del servidor, el nombre de la base de datos de un administrador de conexión y encontré esto muy útil:

https://www.youtube.com/watch?v=_yLAwTHH_GA

Mejor para las personas que usan SQL Server 2012-2014-2016 … con el Deployment Project Model