2011-05-05 53 views
3

为SSIS包配置参数的最佳方法是什么? (即什么是常见/简单/简单)有没有一种简单的方法向SSIS包提供参数?

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

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

我看着包配置,但似乎他们必须通过SSIS开发人员创建,而不是SSIS包亚军/部署(我可能失去了一些东西)

回答

5

包配置由开发人员创建,但它们填充SQL表,XML文件,注册表或环境变量。所以填充哪些值的选择取决于开发者,但实际值可以在部署时更改。

我发现最好的组合是在一个SQL表中使用环境变量中该表的连接字符串进行包配置。这样你可以维护不同的测试和生产环境。

+0

谢谢杰夫,这是很好的信息! – 2011-05-05 18:01:20

+0

请注意,您的连接字符串和变量也可以在对包的调用中指定,即在要执行它的作业步骤中。我已经完成了这两种方式,如果软件包有一组源/目标位置,则基于环境变量的该表的配置表和连接字符串运行良好。但是,如果需要使用不同的配置重复运行相同的包(将同一组数据分发到多个位置),那么在作业步骤中设置值通常效果更好,诀窍是使语法正确。 – Rozwel 2011-05-05 18:54:16

+0

@Rowzel - 我曾经这样做过,但当我遇到一个客户,他的标准安全设置非常奇怪,并且由于某种原因我们无法从工作步骤中获取信息时停止了。 – 2011-05-06 02:25:44

0

应该有SSMS一个变量选项卡允许你指定变量来设置值。

+0

我想我错过了一些明显的东西。我没看到它。 – 2011-05-05 17:46:18

+0

查看 - >其他窗口 - >变量 – SQLMenace 2011-05-05 17:48:39

+0

是的,我在BIDS(或Visual Studio中看到变量)选项卡。但我不知道如何让部署人员容易提供价值。 (他们会知道价值,但我不提前)。 – 2011-05-05 17:59:20

3

,你可以将它们存储在一个表中,然后动态地从表的执行SQL任务填充在运行时的变量,这样你就不必修改包

要添加变量View-- >其他窗口 - >变量,然后点击添加变量图标(左上角)

+0

我从来没有想到这一点!我一定会考虑这一点。很遗憾,没有SSIS解决方案比“更新此表中的值”更容易。 – 2011-05-05 17:49:40

+0

还有其他一些配置文件的方法,但是表格对我来说似乎更容易,尤其是当有人需要更新值但无法访问SQL代理作业或包时 – SQLMenace 2011-05-05 17:51:34

2

我不认为有一个简单而简单的方法可以使配置参数传递简单,供用户/部署者配置。以下是几年前我做的一个半复杂的概述。

SQL代理作业定期调用存储过程,该存储过程执行一些检查,并在必要时准备数据,启动SSIS包并将准备好的数据通过参数传递到包中;这些值要么来自手头的工作,要么来自数据库“配置表”,这是IT在每个环境基础上配置的。鉴于我们的扩展环境的性质,使用传递到包中的参数比试图让包找出其数据的位置更简单。

通过构建一个复杂的脚本并将其作为参数传递给xp_cmdshell来调用该包。 DTEXEC是要调用的可执行文件,它具有强制性和可选开关,例如/ File来指定软件包的位置。工作参数,我定义的变量SICH为“FilesFolder”和“EMail_SMTPServer”包内,然后在价值观传递给它们的使用/设置开关,像这样:

SET @Command = 'DTEXEC' 
    + ' /File "' + @PackageLocation + '\' + @PackageName + '"' 
    + ' /Set \package.variables[FilesFolder].Value;"' + @FilesFolder + '"' 
    + ' /Set \package.variables[EMail_SMTPServer].Value;' + @SMTPServer 

/集替换他们自己的Value属性与指定的值。注意FilesFolder额外的引号,以解释名称中的嵌入空格。

这实现起来相当繁琐 - 我记得有很多乐趣让分号分隔的电子邮件地址正常工作。事情是,它一直在运行现在在几个环境中顺利地运行了大约2年,并且建立一个新的程序是一个记录并因此相对无痛的过程。

有很多方法可以完成这种功能,这只是其中之一。

+0

谢谢菲利普,我认为当你说“我不认为有一种简单而简单的方法......”时,你碰到了头脑,最直接地回答了这个问题。 :-) – 2011-05-05 18:51:37

+1

“如何让*我的*用户使用最简单”这个问题非常重要,最终只有您能够回答。希望我们的建议帮助! – 2011-05-05 19:44:14

相关问题