Ten en cuenta que en las ciencias un problema suele tener varias resoluciones, no obstante nosotros te mostramos lo más óptimo y eficiente.
Solución:
Creando tu carpeta
En el Catálogo de servicios de integración, en SSISDB, haga clic con el botón derecho y cree una carpeta dándole un nombre, pero no no haga clic en Aceptar. En su lugar, haga clic en Script, Nueva ventana del editor de consultas. Esto da una consulta como
DECLARE @folder_id bigint
EXEC [SSISDB].[catalog].[create_folder]
@folder_name = N'MyNewFolder'
, @folder_id = @folder_id OUTPUT
SELECT
@folder_id
EXEC [SSISDB].[catalog].[set_folder_description]
@folder_name = N'MyNewFolder'
, @folder_description = N''
Ejecute eso, pero luego guárdelo para que pueda crear la misma carpeta en el servidor 2 y el servidor 3. Este será un tema, por cierto
Creando tu entorno
Actualice el menú desplegable debajo de SSISDB y busque la carpeta que acaba de crear. Expanda y en Entornos, haga clic con el botón derecho y Crear nuevo entorno. Déle un nombre y una descripción, pero NO HAGA CLIC EN ACEPTAR. En su lugar, haga clic en Script, Nueva ventana del editor de consultas.
Ahora tenemos este código
EXEC [SSISDB].[catalog].[create_environment]
@environment_name = N'DatabaseConnections'
, @environment_description = N''
, @folder_name = N'MyNewFolder'
Ejecútelo y guárdelo para implementarlo en los servidores 2 y 3.
Agregar valores a un entorno
Actualice el árbol de entornos y, en la ventana Propiedades del entorno recién creado, haga clic en la pestaña Variables y agregue sus entradas para sus cadenas de conexión o lo que sea. Aquí es donde realmente De Verdad no quiero hacer clic en Aceptar. En su lugar, haga clic en Script, Nueva ventana del editor de consultas.
DECLARE @var sql_variant = N'ITooAmAConnectionString'
EXEC [SSISDB].[catalog].[create_environment_variable]
@variable_name = N'CRMDB'
, @sensitive = False
, @description = N''
, @environment_name = N'DatabaseConnections'
, @folder_name = N'MyNewFolder'
, @value = @var
, @data_type = N'String'
GO
DECLARE @var sql_variant = N'IAmAConnectionString'
EXEC [SSISDB].[catalog].[create_environment_variable]
@variable_name = N'SalesDB'
, @sensitive = False
, @description = N''
, @environment_name = N'DatabaseConnections'
, @folder_name = N'MyNewFolder'
, @value = @var
, @data_type = N'String'
GO
Ejecute esa consulta y luego guárdela. Ahora, cuando vaya a implementar en el entorno 2 y 3, simplemente cambiará el valor de @var
Configuración
Hasta este punto, simplemente nos hemos posicionado para tener éxito en tener un conjunto consistente de Carpetas, Entornos y Variables para nuestros paquetes. Ahora necesitamos realmente usar ellos contra un conjunto de paquetes. Esto supondrá que sus paquetes se han implementado en la carpeta entre el paso anterior y ahora.
Haga clic derecho en el paquete / proyecto a configurar. Lo más probable es que desee el proyecto.
- Haga clic en la pestaña Referencias. Agregue … y use DatabaseConnections, o lo que sea que haya llamado suyo
- Vuelva a hacer clic en Parámetros. Haga clic en la pestaña Administradores de conexiones. Busque un Administrador de conexión y en la Cadena de conexión, haga clic en los puntos suspensivos y cámbielo a “Usar variable de entorno” y encuentre su valor.
- ¡NO HAGA CLIC EN ACEPTAR! Script -> Nueva ventana del editor de consultas
En este punto, tendrá una secuencia de comandos que agrega una referencia a la variable de entorno (para que pueda usarla) y luego superpone el valor del paquete almacenado con el del entorno.
DECLARE @reference_id bigint
EXEC [SSISDB].[catalog].[create_environment_reference]
@environment_name = N'DatabaseConnections'
, @reference_id = @reference_id OUTPUT
, @project_name = N'HandlingPasswords'
, @folder_name = N'MyNewFolder'
, @reference_type = R
SELECT
@reference_id
GO
EXEC [SSISDB].[catalog].[set_object_parameter_value]
@object_type = 30
, @parameter_name = N'CM.tempdb.ConnectionString'
, @object_name = N'ClassicApproach.dtsx'
, @folder_name = N'MyNewFolder'
, @project_name = N'HandlingPasswords'
, @value_type = R
, @parameter_value = N'SalesDB'
GO
Esta secuencia de comandos debe guardarse y utilizarse para los servidores 2 y 3.
Trabajo
Todo eso hace que tenga las configuraciones disponibles para usted. Cuando programe la ejecución del paquete desde un trabajo, terminará con un paso de trabajo como el siguiente
EXEC msdb.dbo.sp_add_jobstep
@job_name = N'Demo job'
, @step_name = N'SSIS job step'
, @subsystem = N'SSIS'
, @command = N'/ISSERVER ""SSISDBMyNewFolderHandlingPasswordsClassicApproach.dtsx"" /SERVER "".dev2014"" /ENVREFERENCE 1 /Par ""$ServerOption::LOGGING_LEVEL(Int16)"";1 /Par ""$ServerOption::SYNCHRONIZED(Boolean)"";True /CALLERINFO SQLAGENT /REPORTING E'
- El Comando es obviamente la pieza importante.
- Estamos ejecutando el paquete
ClassicApproach
- Ejecute esto en el servidor actual con una instancia de Dev2014
- Usar referencia de entorno 1
- Usamos el nivel de registro estándar.
- Esta es una llamada síncrona, lo que significa que el agente esperará hasta que se complete el paquete antes de pasar al siguiente paso.
Referencia de entorno
Notará que todo lo anterior fue agradable y cadenas de texto especificadas en lugar de valores enteros aleatorios, excepto por nuestra Referencia de entorno. Eso es porque puede tener el mismo nombre textual para un entorno en varias carpetas. De manera similar a cómo se puede implementar el mismo proyecto en varias carpetas, pero por alguna razón, los desarrolladores de SSIS optaron por proporcionar rutas de acceso completamente calificadas a un paquete mientras nosotros usamos valores enteros “aleatorios”. Para determinar el ID de su entorno, puede ejecutar la siguiente consulta
SELECT
ER.reference_id AS ReferenceId
, E.name AS EnvironmentName
, F.name AS FolderName
, P.name AS ProjectName
FROM
SSISDB.catalog.environments AS E
INNER JOIN
SSISDB.catalog.folders AS F
ON F.folder_id = E.folder_id
INNER JOIN
SSISDB.catalog.projects AS P
ON P.folder_id = F.folder_id
INNER JOIN
SSISDB.catalog.environment_references AS ER
ON ER.project_id = P.project_id
ORDER BY
ER.reference_id;
O explore el Catálogo de servicios de integración en Carpeta / Entornos y haga doble clic en el Entorno deseado. En la ventana Propiedades del entorno resultante, el nombre y el identificador aparecerán atenuados y es el Identifier
valor de propiedad que necesita usar en el comando de paso de trabajo de su Agente SQL para el /ENVREFERENCE
valor.
Envolver
Si tiene cuidado y guarda todo lo que el asistente hace por usted, solo tiene 1 cosa que debe cambiarse cuando migre los cambios en su entorno. Esto conducirá a procesos de migración limpios, fluidos y repetibles y te preguntarás por qué querrías volver a los archivos XML o cualquier otro enfoque de configuración.
Eres capaz de animar nuestra función mostrando un comentario o puntuándolo te damos las gracias.