Se ignoran las configuraciones de paquetes de SSIS 2008

10

Con el cambio a las configuraciones del paquete en 2008 en comparación con 2005 cuando especifico / ConfigFile something.dtsConfig en la línea de comando, las variables definidas en el paquete mantienen sus valores de tiempo de diseño en lugar de usar la configuración del archivo de configuración.

No estoy muy seguro de entender CÓMO obtener el archivo de configuración externo para ser utilizado. He leído artículos que dicen que solo las configuraciones de tiempo de diseño que se establecen sobrescribirán la carga del archivo externo. ¿Significa esto que puedo cambiar las variables a cadenas en blanco y luego se sobrescribirán? ¡No puedo eliminar la variable por completo! ¿Qué hay de los enteros?

He visto artículos que mencionan apagar usando configuraciones de paquete en el paquete.

Puedo usar el editor de paquetes SSIS o un editor XML para cambiar la ruta del archivo de configuración en el paquete, y luego usaré la configuración de ese archivo "último" (independientemente de la opción externa / ConfigFile), pero no quiero ser cambiando el paquete Quiero un paquete con Test.dtsConfig y Production.dtsConfig y poder cambiar de un lado a otro sin cambiar el paquete.

¿Cuál es la forma recomendada de hacer esto ahora?

Cade Roux
fuente
1
Puede encontrar su alivio aquí , en el foro SQLServerCentral. Aquí encontrará alguna explicación del cambio de comportamiento : sección Cambios de comportamiento relacionados con las configuraciones de paquetes.
Marian
Consulte los siguientes archivos para tener una idea de los paquetes y configuraciones de los que estoy hablando: configuración y lotes , paquete de prueba y archivo Léame .
Marian

Respuestas:

10

Debe tener en cuenta que cuando se ejecuta con BIDS, el paquete tomará primero el valor variable del archivo de configuración, y solo si el archivo de configuración no existe, lanzará una advertencia y el valor se tomará del paquete.

Ahora, la situación en la línea de comando es un poco diferente. Puede tener las siguientes situaciones:

  1. ejecute el paquete en línea cmd sin ningún archivo de configuración elegido:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx"
    • Si el archivo de configuración original (por ejemplo, Prod) no existe en la misma ruta definida en los metadatos del paquete, se utilizan valores del interior del paquete y recibirá una advertencia de que falta el archivo de configuración;
    • si el archivo de configuración original existe y es válido, se utilizarán los valores del archivo de configuración (se omitirán los valores internos);
  2. ejecute el paquete en línea cmd sin ningún archivo de configuración elegido, pero con la variable establecida en la llamada:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /SET \Package.Variables[checkMe];"outside the package in cmd line"
    • si el archivo de configuración original no existe, entonces el valor se toma de la llamada del paquete / SET;
    • si el archivo de configuración original existe, entonces el valor se toma del archivo de configuración e incluso se ignora / SET (esto se usa solo en el caso anterior);
  3. ejecute el paquete en línea cmd con un nuevo archivo de configuración (digamos DEV en lugar de Prod):

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig"
    • si el nuevo archivo de configuración (Dev) existe y el antiguo (Prod) no existe, entonces se utilizan valores de él;
    • si existen el archivo de configuración de Dev y Prod, solo se utilizan los valores de Prod (se omite DEV incluso si se especifica en la llamada a la línea de comandos);
  4. ejecute el paquete en línea cmd con un nuevo archivo de configuración y una instrucción SET en la llamada:

    dtExec /file "e:\Work\TestPackageConfiguration\TestPackageConfiguration\TestPackage.dtsx" /configFile "c:\ETL Config\TestPackage_config_Dev.dtsConfig" /SET \Package.Variables[checkMe];"outside the package in cmd line - DEV config"
    • si existen ambos archivos de configuración, se utilizará Prod, se ignorarán todos los demás, incluso el SET;
    • si no existe un archivo de configuración, se usará el valor SET;

En resumen, si desea utilizar un nuevo archivo de configuración, deberá cambiar el nombre / mover el antiguo y llamar al paquete con / configFile. Si eso no es suficiente y desea anular incluso el nuevo archivo de configuración, use la variable / SET. O puede omitir cualquier archivo de configuración y simplemente usar declaraciones / SET en la llamada por lotes.

Esperemos que eso arroje algo de luz sobre tus posibilidades.

Mariana
fuente
Parece que uno de los grandes problemas es que mi ruta en el cuadro de desarrollo es idéntica a la del servidor durante la ejecución, de modo que la ruta a la configuración en el paquete siempre es válida.
Cade Roux
Así que creo que debería tener Dev, Test y Prod, hacer que el paquete siempre apunte a Dev y nunca tener una configuración de Dev en mi Servidor y luego puedo hacer múltiples configuraciones en el servidor y poder ejecutar contra diferentes configuraciones a voluntad desde el La configuración de desarrollo en el paquete nunca se encontrará. Así que puedo depurar usando la configuración de desarrollo, pero luego tendré problemas para ejecutarlo desde la línea de comandos en el cuadro de desarrollo porque encontrará esa configuración de desarrollo.
Cade Roux
Supongo que está de acuerdo en que esto es realmente mucho más complejo de lo que debería ser, ¿verdad? Como si tuvieran una nueva característica pequeña (la recarga) en el cambio a 2008, pero eliminó el escenario de uso más común de las configuraciones de paquetes.
Cade Roux
Bueno, sí, estoy de acuerdo en que es mucho más feo de lo que debería ser. Me costó mucho resolver esto, porque siempre me he olvidado de cambiar el nombre del archivo de configuración original :-). Me hubiera gustado más estar en el siguiente orden: SET, / configFile, configuración original, valor del paquete interno. Hubiera tenido más sentido para mí ...
Marian
Ninguno de los artículos que leí realmente menciona que es accesible el archivo de configuración original, que es un gran problema. Ahora veo por qué publicaron ese Editor de paquetes SSIS para que pueda cambiar eso dentro del paquete sin tener que abrir BIDS.
Cade Roux