【问题标题】:Is there an easy way to provide parameters to an SSIS package?有没有一种简单的方法可以为 SSIS 包提供参数?
【发布时间】:2011-05-05 17:40:39
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我发现最好的组合是将包配置放在一个 SQL 表中,并将该表的连接字符串放在一个环境变量中。这样您就可以维护不同的测试和生产环境。

    【讨论】:

    • 请注意,您的连接字符串和变量也可以在对包的调用中指定,即在要执行它的作业步骤中。我已经做了两种方式,如果包有一组源/目标位置,那么基于环境变量的该表的配置表和连接字符串效果很好。但是,如果需要使用不同的配置重复运行同一个包(将同一组数据分布到多个位置),那么在作业步骤中设置值通常效果更好,诀窍是让语法正确。
    • @Rowzel - 我曾经这样做过,但是当我遇到一个客户的标准安全设置非常奇怪并且由于某种原因我们无法从工作步骤中获取信息时停止了.
    【解决方案2】:

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

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

    【讨论】:

    • 我从没想过!我一定会考虑的。遗憾的是,没有比“更新此表中的值”更容易的 SSIS 解决方案了。
    • 还有其他方式,例如配置文件,但表对我来说似乎更容易,特别是如果有人需要更新值但无权访问 SQL 代理作业或包时
    【解决方案3】:

    我认为没有一种简单易行的方法可以让用户/部署者轻松配置可配置的参数传递。以下是我几年前制作的一个半复杂的大纲。

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

    调用包是通过构建一个复杂的脚本并将其作为参数传递给 xp_cmdshell 来完成的。 DTEXEC 是要调用的可执行文件,它具有强制和可选开关,例如 /File 来指定包的位置。为了工作参数,我在包中将变量定义为“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 年,并且设置一个新环境是一个记录在案的过程,因此相对来说没有痛苦。

    实现这种功能的方法有很多种,这只是其中一种。

    【讨论】:

    • 谢谢菲利普,当你说“我认为没有简单易行的方法......”时,我认为你一针见血。它最直接地回答了这个问题。 :-)
    • “如何让我的用户使用起来最简单”这个问题很重要,最终只有你能回答。希望我们的建议有所帮助!
    【解决方案4】:

    SSMS 中应该有一个变量选项卡,允许您指定要为其设置值的变量。

    【讨论】:

    • 我想我遗漏了一些明显的东西。我没看到。
    • 查看-->其他窗口-->变量
    • 是的,我在 BIDS(或我的情况下为 Visual Studio)中看到了变量选项卡。但我不知道如何让部署人员轻松提供这些值。 (他们会知道这些值,但我不会提前知道)。
    • 您是否尝试在通过 SQL 代理作业计划或通过命令行运行时设置它们设置值?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多