none
Ejecutar un paquete DTS mediantes Stored Procs desde C# RRS feed

  • Pregunta

  • Buenas tardes foro,


    Antes que todo debe decir que soy totalmente nuevo con el tema  de SSIS.

    Resulta que tengo un paquete DTSX dentro de  un catalogo y necesito ejecutarlo desde codigo meidiantes stores proc.

    Para pasar en limpio.

    1) Tengo un paquete DTSX en un catalogo llamado ConvertLifeaxCalculationFile.dtsx

    .

    2) Para poder ejecurtalo de acuerdo a los requerimientos necesito configurar algunos parametros. Entonces al hacer click derecho sobre el el dtsx y hacer click en ejecutar, me aparece un menu con varios parametros para poder modificar.

    De estos parametros necesito modificar "FolderImportSource y FolderImportCompleted. Al hacerlos y ejecutar "Script" (arriba sobre la izquierda) me aparece los stored prod que se ejecutan. En este caso es:

    Declare @execution_id bigint
    EXEC [SSISDB].[catalog].[create_execution] @package_name=N'ConvertLifeTaxCalculatorFiles.dtsx'
    					  ,@execution_id=@execution_id OUTPUT
                                              ,@folder_name=N'Insurance'
    					  ,@project_name=N'Insurance DB File Import ETL'
    					  ,@use32bitruntime=False, @reference_id=64
    Select @execution_id
    
    DECLARE @var0 sql_variant = N'D:\SSIS\Insurance\SourceFiles\Processed'
    EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id
                                                           ,@object_type=20
    						       ,@parameter_name=N'FolderImportCompleted'
    						      ,@parameter_value=@var0
    
    DECLARE @var1 sql_variant = N'D:\SSIS\Insurance\SourceFiles\ReadyToProcess'
    EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id  
                                                            ,@object_type=20
    						        ,@parameter_name=N'FolderImportSource'
    						       ,@parameter_value=@var1
                                                           DECLARE @var2 smallint = 1
    
    EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id
                                                           ,@object_type=50
    						      ,@parameter_name=N'LOGGING_LEVEL'
    						  ,@parameter_value=@var2
    
    EXEC [SSISDB].[catalog].[start_execution] @execution_id
    GO

    Necesito executar estos stored procs con sus respectivos parametros desde C#

    La idea una clase  que ejecute los stored procs automaticamente y solo tenga que espeficar los 3 paremetros ya que los demas paremetros son constantes y no cambian.

                         RunDtsPackage("ConvertLifeTaxCalculatorFiles", new Dictionary<string, object> {
                         { "FolderImportSource", @"D:\SSIS\Insurance\SourceFiles\ReadyToProcess\" },
                         { "FolderImportCompleted", @"D:\SSIS\Insurance\SourceFiles\Processed\" },
                         { "FolderExportTarget", @"D:\SSIS\Insurance\TargetFiles\Output\" }
                  });

    Alguien a echo esto antes o sabria como guiarme por que la verdad es que estoy bastante perdido.

    Desde ya muchas gracias y pido disculpas si no fui claro.

    Muchas gracias






    Ivan


    • Editado Ivan_Encina lunes, 31 de agosto de 2015 11:47
    lunes, 31 de agosto de 2015 3:56

Respuestas

  • Hola Ivan,  tienes un objeto que se llama SQLCommand, ese command tiene una colección de parameters, para poder pasar solamente esos 2 parámetros podrías hacer algo así
    create procedure EjecutaPaquete @foldera nvarchar(1000),@folderb nvarchar(1000) 
    as 
    begin
    Declare @execution_id bigint
    EXEC [SSISDB].[catalog].[create_execution] @package_name=N'ConvertLifeTaxCalculatorFiles.dtsx'
    					  ,@execution_id=@execution_id OUTPUT
                                              ,@folder_name=N'Insurance'
    					  ,@project_name=N'Insurance DB File Import ETL'
    					  ,@use32bitruntime=False, @reference_id=64
    Select @execution_id
    
    DECLARE @var0 sql_variant = @foldera
    EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id
                                                           ,@object_type=20
    						       ,@parameter_name=N'FolderImportCompleted'
    						      ,@parameter_value=@var0
    
    DECLARE @var1 sql_variant = @folderb
    EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id  
                                                            ,@object_type=20
    						        ,@parameter_name=N'FolderImportSource'
    						       ,@parameter_value=@var1
                                                           DECLARE @var2 smallint = 1
    
    EXEC [SSISDB].[catalog].[set_execution_parameter_value] @execution_id
                                                           ,@object_type=50
    						      ,@parameter_name=N'LOGGING_LEVEL'
    						  ,@parameter_value=@var2
    
    EXEC [SSISDB].[catalog].[start_execution] @execution_id
    end 

    para invocarlo llama a este nuevo procedimiento y pasale como parámetros solamente las dos carpetas.

    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    lunes, 31 de agosto de 2015 11:44
    Moderador