从 Java 调用目录过程执行 SSIS 包

Posted

技术标签:

【中文标题】从 Java 调用目录过程执行 SSIS 包【英文标题】:Execute SSIS package from Java calling Catalog procedures 【发布时间】:2017-03-13 16:23:35 【问题描述】:

所以我想做的是调用一个存储过程usp_Something,其中包含类似这样的内容

EXEC [SSISDB].[catalog].[create_execution]
    @folder_name = @f_name,
    @project_name = @pro_name,
    @package_name = @pack_name,
    @execution_id = @exec_id output

EXEC [SSISDB].[catalog].[set_execution_parameter_value] @exec_id,  @object_type=50, @parameter_name=N'SYNCHRONIZED', @parameter_value=1

EXEC [SSISDB].[catalog].[start_execution] @exec_id
--SET @output_execution_id = @exec_id

在 Java 中,我使用 SQL Server 身份验证尝试调用 usp_Something 过程与 JDBC 驱动程序建立连接。但我得到一个错误

使用 SQL Server 的帐户无法启动该操作 验证。使用使用 Windows 的帐户启动操作 身份验证。

现在,我知道您需要使用 Windows 身份验证来运行包,但有什么解决方法吗?有人告诉我不要使用 Windows 身份验证,所以我需要一种方法来使用 SQL Server 身份验证

【问题讨论】:

我猜这是不可能的。然而,这可能是在 dba.stackexchange.com 上提出的更好的问题 【参考方案1】:

我在项目中所做的是使用 IntegratedSecurity:

jdbc:sqlserver://$db.server;databaseName=$db.name;instanceName=$db.instance;integratedSecurity=true;

将使用运行您的 java 应用程序的同一用户完成与 db 的连接。在我的例子中,我以域用户身份运行我的 spring-boot 应用程序,该应用程序也被配置为连接到 SQLServer 并执行存储过程。

【讨论】:

以上是关于从 Java 调用目录过程执行 SSIS 包的主要内容,如果未能解决你的问题,请参考以下文章

从SQL Server代理作业步骤调用时,SSIS包不会运行

使用 SQL 身份验证执行 SSIS 包

您如何通过和 SSMS 存储过程调用和 SSIS 包?

从 SSIS 包访问 netezza 的系统目录视图不起作用

SSIS 包未启动 - 待执行

为啥从目录执行 ssis 包时访问文件路径被拒绝消息