【发布时间】:2018-11-16 06:25:20
【问题描述】:
我正在使用给定的命令行在 sql server 的 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"\110\DTS\Binn\dtexec /F "'
@ssisPkgFilePath = '\\dtsx package path\package.dtsx'
@ssisCommonConfigPath =
'\\CommonConfigurationpath\Configuration.dtsConfig'
现在我想通过传递表中的配置(之前存在于Configuration.dtsConfig 中)来执行相同的包,如果@config 包含表中的配置,我该如何编辑此命令行。
【问题讨论】:
-
什么版本的 SSIS? 从 SQL 2012 开始,有一个更复杂的 T-SQL API,这意味着您无需求助于不安全的
xp_cmdshellhack。 -
如果你还在使用
.dtsConfig,那么我猜它是一个旧版本。您需要更改 package 以从数据库表中读取其配置,而不是从 dtsConfig 文件中读取。这是在包中进行的更改。但实际上,这是现在非常古老的技术。你绝对不应该在这个版本中构建任何新东西。 -
哦.. 我在您的 bin 路径中看到
110所以这是 SQL 2012?您确实需要升级到 SSISDB 和项目部署。 -
是的,尼克这是 sql server 2012 并且 ssis 也很老了......它已经使用了很长时间
-
尼克到目前为止,我将只使用 sql server 2012(或不久的将来的 2017),您能否建议在 ssis 包中实际需要更新的内容,以便我可以读取配置表中的 dtexec 命令(加密),这种变化会有多大?在此先感谢!
标签: .net sql-server ssis msdn dtexec