从 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包不会运行