我们一直在将应用程序包从旧的存储和执行方法移到 SSIS 目录中。我们需要使用企业调度系统而不是 SQL Server 代理来执行批处理作业和 SSIS 包。基本上,调度程序在服务器上打开一个命令行并执行 Windows 命令。在我们的例子中,我们将使用 SQLCMD 来执行如下所示的存储过程。
这是我需要能够做的事情:
创建过程 usp_Execute_Packages @Package_name NVARCHAR(260) WITH EXECUTE AS 'Domain\User' AS DECLARE @execution_id bigint
EXEC [SSISDB].[catalog].[create_execution] @package_name=@Package_name, @execution_id=@execution_id OUTPUT, @folder_name=N'A 文件夹名称', @project_name=N'Test Deployment'
EXEC [SSISDB].[catalog].[start_execution] @execution_id
GO
但是,这似乎不起作用;我收到一条错误消息,告诉我无法使用 SQL Server 帐户开始执行。我认为 EXECUTE AS 语句有问题。任何想法如何在不使用 SQL Server 代理和代理帐户的情况下以其他用户身份启动包执行?
如果您在 SSISDB 中创建存储过程,然后在存储过程中添加
EXECUTE AS
语句,您可以将包作为必要的登录名执行,这就是您的目标。正如@sepupic 所指出的,EXECUTE AS
在 SP 的标题中添加仅适用于数据库用户。