有没有简单的方法为SSIS包提供参数?

时间:2011-05-05 17:40:39

标签: sql-server sql-server-2008 ssis

为SSIS包配置参数的最佳方法是什么? (即,什么是常见/简单/简单)

我正在开发一个SSIS包,我想指定一个文件夹的位置来监视源文件。我想让那些部署SSIS包的人尽可能简单。

例如,我发现使用dtexecui为连接管理器指定连接字符串很容易,但我没有看到参数的位置。即,没有任何变量显示在“设置值”选项卡中。

我查看了包配置,但似乎它们必须由SSIS开发人员而不是SSIS包运行器/部署者创建(我可能会遗漏某些内容)

4 个答案:

答案 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中应该有一个变量选项卡,允许您指定变量来设置值。