Breaking News
Loading...
27/07/2013

Về vấn đề thực thi SSIS package từ Stored Procedure

Từ phiên bản SQL Server 2008R2 trở về trước, Microsoft không hỗ trợ gọi trực tiếp một SSIS package từ Stored Procedure.

Nếu bạn tìm hiểu về vấn đề, sẽ thấy nhiều bài viết hướng dẫn rằng ta có thể làm điều đó bằng cách gọi một Extended Stored Procedure gọi là xp_cmdshell.

Tuy nhiên từ phiên bản SQL Server 2012, Microsoft đã chính thức hỗ trợ thực thi trực tiếp một SSIS package từ stored procedure.

Sau đây là toàn bộ code để gọi SSIS Package từ Stored Procedure, có vẻ nó khá dài.

DECLARE @exec_id BIGINT

    EXEC [SSISDB].[catalog].[create_execution] 
        --SSIS package name TABLE:(SELECT * FROM [SSISDB].internal.packages)
        @package_name=N'Test.dtsx',     
        --Folder were the package lives TABLE:(SELECT * FROM [SSISDB].internal.folders)
        @folder_name=N'Warehouse ETLs', 
        --Project name were SSIS package lives TABLE:(SELECT * FROM [SSISDB].internal.projects)
        @project_name=N'ImportPackages',
        @use32bitruntime=FALSE, 
        --Environment reference, if null then no environment configuration is applied.
        @reference_id=NULL,             
        --The paramter is outputed and contains the execution_id of your SSIS execution context.
        @execution_id=@exec_id OUTPUT   

    SELECT @exec_id

SELECT [STATUS] FROM [SSISDB].[internal].[operations] WHERE operation_id = @exec_id

DECLARE @IntParam sql_variant = 2 --Some random parameter value, needs to be in sql_variant format

EXEC [SSISDB].[catalog].[set_execution_parameter_value] 
-- The execution_id value we received by calling [create_execution]
@exec_id,  
--30 is Package Parameters, you can also use 20 for Project parameters or 50 for Environment
@object_type=30,  
--Parameter name
@parameter_name=N'ParamDateOffset',  
@parameter_value=@IntParam

EXEC [SSISDB].[catalog].[start_execution] @exec_id

Để biết thêm chi tiết về thực thi package từ Stored Procedure ở SSIS 2012, tham khảo:http://thinknook.com/execute-ssis-via-stored-procedure-ssis-2012-2012-08-13/

Để biết thêm chi tiết về thực thi package từ Stored Procedure ở SSIS 2008, tham khảo:http://www.mssqltips.com/sqlservertip/2135/run-ssis-using-xpcmdshell-in-a-sql-server-stored-procedure/



0 comments:

Post a Comment

 
Toggle Footer