为SSIS包配置参数的最佳方法是什么? (即,什么是常见/简单/简单)
我正在开发一个SSIS包,我想指定一个文件夹的位置来监视源文件。我想让那些部署SSIS包的人尽可能简单。
例如,我发现使用dtexecui为连接管理器指定连接字符串很容易,但我没有看到参数的位置。即,没有任何变量显示在“设置值”选项卡中。
我查看了包配置,但似乎它们必须由SSIS开发人员而不是SSIS包运行器/部署者创建(我可能会遗漏某些内容)
答案 0 :(得分:5)
程序包配置由开发人员创建,但它们填充SQL表,XML文件,注册表或环境变量。因此,选择填充的值取决于开发人员,但实际值可以在部署时更改。
我发现最好的组合是在SQL表中使用包含该表的连接字符串的环境变量中的包配置。这样,您就可以维护不同的测试和生产环境。
答案 1 :(得分:3)
您可以将它们存储在表中,然后使用执行SQL任务从表中动态填充变量,这样您就不必修改包
添加变量视图 - >其他Windows - >变量,然后点击添加变量图标(左上角)
答案 2 :(得分:2)
我认为没有一种简单易用的方法可以让用户/部署者配置简单的可配置参数传递。以下是我几年前制作的半复杂的概述。
SQL代理作业定期调用执行某些检查的存储过程,并在必要时准备数据,启动SSIS包,并通过参数将准备好的数据传递到包中;这些值要么来自手头的工作,要么来自IT部门在每个环境中配置的数据库“配置表”。鉴于我们的扩展环境的性质,使用传递到包中的参数比尝试让包找出去哪里获取数据更简单。
调用包是通过构建一个复杂的脚本并将其作为参数传递给xp_cmdshell来完成的。 DTEXEC
是要调用的可执行文件,它有强制和可选的开关,例如/ File来指定包的位置。为了工作参数,我在包中定义了变量sich为“FilesFolder”和“EMail_SMTPServer”,然后使用/ Set开关将值传递给它们,如下所示:
SET @Command = 'DTEXEC'
+ ' /File "' + @PackageLocation + '\' + @PackageName + '"'
+ ' /Set \package.variables[FilesFolder].Value;"' + @FilesFolder + '"'
+ ' /Set \package.variables[EMail_SMTPServer].Value;' + @SMTPServer
/ Set用指定的值替换它们的Value属性。请注意FilesFolder的额外“引号,以说明名称中的嵌入空格。
这实现起来非常繁琐 - 我记得有很多乐趣让分号分隔的电子邮件收件人正常工作。事实上,它已经在几个环境中顺利运行了大约2年,而建立一个新环境是一个记录在案且相对无痛苦的过程。
有很多方法可以完成这种功能,这只是其中之一。
答案 3 :(得分:0)
SSMS中应该有一个变量选项卡,允许您指定变量来设置值。