使用对 SQL 服务器的外部引用执行包任务

Execute package task with external reference to SQL Server

** 编辑:使用 T-SQL 脚本执行包会导致身份验证问题: “用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败。” **

** 编辑 2:此错误是由 Windows 凭据执行双跃点引起的。 是这个问题的解决方案**

我正在尝试执行之前已部署到 SQL 服务器实例的 SSIS 包。此 SQL 服务器实例的版本为 14.0.3281(SQL Server 2017)。

我无法使用项目引用,因为我想要的包在另一个项目中,我不想将它上传到服务器的文件系统。

真的是版本问题吗? 如何从另一个项目执行已部署的包?

我知道我可以 运行 使用 T-SQL 处理这个包的作业,但我希望只有在这个包成功执行后任务才能继续。

这是我得到的错误:

The attempted operation is not supported with this database version.

------------------------------ ADDITIONAL INFORMATION:

The attempted operation is not supported with this database version.

有一种方法可以通过 T-SQL 运行 一个包,然后使用内置程序等待它完成。

-- Create the execution object
DECLARE @execution_id BIGINT
EXEC [SSISDB].[catalog].[create_execution] 
    @package_name = @PackageName
    , @project_name = @ProjectName
    , @folder_name = @FolderName
    , @use32bitruntime = False
    , @reference_id = NULL
    , @execution_id = @execution_id OUTPUT

-- Configure execution
EXEC [SSISDB].[catalog].[set_execution_parameter_value] 
    @execution_id
    , @object_type = 50 -- System parameter
    , @parameter_name = N'SYNCHRONIZED'
    , @parameter_value = 1 -- set this to 1 to wait for completion

-- Start the execution
EXEC [SSISDB].[catalog].[start_execution] @execution_id

您可以将其包装到存储过程中,如“startPackage”,还包括使用执行 ID 检查结果:

-- Check package status, and fail script if the package failed
IF 7 <> (SELECT [status] FROM [SSISDB].[catalog].[executions] WHERE execution_id = @execution_id) AND @Syncronized = 1
        RAISERROR('The package failed!', 16, 1)