我如何在存储过程中使用 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
命令行上传递任何东西。
如果您不想更改包并坚持通过 DTEXEC
传递它,那么我想您可以编写一个包装器,将配置数据从 table 中提取出来,然后使用 /SET
开关一一应用这些配置。
但我真的鼓励并建议您将这些包升级到项目部署模型。不要用这种旧方法浪费你的时间。你只是在引入技术债务。
您还应该知道 xp_cmdshell
通常被认为是安全问题。
我正在使用给定的命令行在 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
命令行上传递任何东西。
如果您不想更改包并坚持通过 DTEXEC
传递它,那么我想您可以编写一个包装器,将配置数据从 table 中提取出来,然后使用 /SET
开关一一应用这些配置。
但我真的鼓励并建议您将这些包升级到项目部署模型。不要用这种旧方法浪费你的时间。你只是在引入技术债务。
您还应该知道 xp_cmdshell
通常被认为是安全问题。