我如何在存储过程中使用 dtsExec 命令通过从 table 传递整个配置来执行 ssis 包?

How can i use dtsExec command in stored procedure to execute ssis package by passing entire configuration from a table?

我正在使用给定的命令行在 sql 服务器的 sp 中执行 ssis 包。

SET @dtsExecCmd = @DTSEXECCMDPATH + ltrim(rtrim(@ssisPkgFilePath)) + '" /CONFIGFILE "' + ltrim(rtrim(@ssisCommonConfigPath)) + '"'

EXEC @result = master..xp_cmdshell @dtsExecCmd  

其中,

@DTSEXECCMDPATH = 'G:\"Program Files (x86)"\"Microsoft SQL Server"0\DTS\Binn\dtexec /F "'


@ssisPkgFilePath = '\dtsx package path\package.dtsx'

@ssisCommonConfigPath =
'\CommonConfigurationpath\Configuration.dtsConfig'

现在我想通过从 table 传递配置(存在于 Configuration.dtsConfig 之前)来执行相同的包,如果 @config 包含,我该如何编辑此命令行来自 table.

的配置

我假设您不会升级到这些包的项目部署并坚持包部署。

没有 DTEXEC 命令行开关可让您定义 SQL 服务器 table 以从中加载配置。

从 SQL 服务器 table 使用包配置的最简单方法是在 SSDT 中打开包,进入 SSIS/Package 配置并进行设置。那么你根本不需要在 DTEXEC 命令行上传递任何东西。

https://docs.microsoft.com/en-us/sql/integration-services/package-configurations?view=sql-server-2014#sql-server

如果您不想更改包并坚持通过 DTEXEC 传递它,那么我想您可以编写一个包装器,将配置数据从 table 中提取出来,然后使用 /SET 开关一一应用这些配置。

但我真的鼓励并建议您将这些包升级到项目部署模型。不要用这种旧方法浪费你的时间。你只是在引入技术债务。

您还应该知道 xp_cmdshell 通常被认为是安全问题。