【发布时间】:2023-03-04 09:40:01
【问题描述】:
我有一个通过 HTTP 与远程服务器通信的 SSIS 包。我使用从 Web 服务器调用的数据库 (SQL Server 2012) 中的存储过程执行 SSIS 包。 Web 服务器使用 Windows 身份验证连接到数据库。我现在需要从不支持 Windows 身份验证的客户端运行存储过程(以及因此 SSIS 包)。 SSIS 包非常复杂,无法迁移到其他解决方案。
SSIS 包具有传递的复杂变量。运行包的存储过程如下所示:
CREATE PROCEDURE [dbo].[SSISPackage]
@Parameter1 XML
AS
BEGIN
SET NOCOUNT ON;
DECLARE @execution_id BIGINT
EXEC [SSISDB].[catalog].[create_execution]
@package_name=N'Package.dtsx',
@execution_id=@execution_id OUTPUT,
@folder_name=N'API',
@project_name=N'APIProject',
@use32bitruntime=False,
@reference_id=Null
EXEC [SSISDB].[catalog].[set_execution_parameter_value]
@execution_id,
@object_type=30,
@parameter_name=N'Parameter1',
@parameter_value=@Parameter1
EXEC [SSISDB].[catalog].[start_execution] @execution_id
END
根据我一直在阅读的内容,使用 SQL Server 身份验证对用户进行身份验证是不可能运行 SSIS 包的。
我的问题是:
- 是否可以以某种方式将 SQL 用户提升为 Windows 身份验证用户,然后执行存储过程。
- 是否有处理此问题的典型方法(例如 CLR、队列表、命令行调用包)?
【问题讨论】:
标签: sql sql-server ssis etl sql-server-data-tools