小编典典

使用SQL身份验证执行SSIS程序包

sql

我有一个SSIS包,可通过HTTP与远程服务器通信。我使用数据库中的存储过程(SQL Server
2012)执行SSIS包,该存储过程是从Web服务器调用的。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包。

我的问题是:

  1. 是否可以通过某种方式将SQL用户提升为Windows身份验证用户,然后执行存储过程。
  2. 是否有解决此问题的典型方法(例如CLR,队列表,对程序包的命令行调用)?

阅读 248

收藏
2021-05-05

共1个答案

小编典典

我认为您无法使用SQL Server身份验证执行此操作,您将收到以下异常:

该操作不能由使用SQL Server身份验证的帐户启动。使用使用Windows身份验证的帐户开始操作

2021-05-05