【问题标题】:SSIS Package Variable Set OrderSSIS 包变量集顺序
【发布时间】:2013-12-18 18:43:10
【问题描述】:

我有一个 ssis 包,其中的变量由数据库表设置。为了重用代码,这个包将每周运行一次。但是也需要使用它来临时运行它。现在我有了从命令行运行包的代码,我知道如何使用开关/Set \Package.Variables[User::FileName].Properties[Value];"aaab"设置变量名

我的问题:有没有办法设置是否使用表格或传入值的首选项?或者有没有办法确定执行者是什么,如果我可以确定它是从 .net 运行还是从作业还是存储过程运行,这可能会有所帮助,然后我可以说使用传入的值?

【问题讨论】:

  • 你可以有一个变量(比如执行器),并根据包的调用方式传递不同的值。

标签: ssis ssis-2008


【解决方案1】:

有很多方法可以实现包的运行时配置(这就是你正在做的)

你没有提到是什么版本,但读过这个:

http://msdn.microsoft.com/en-us/library/cc671625.aspx

例如,这表示 SQL 2005 的配置按此顺序进行:

-应用设计时配置 - 应用命令行选项 - 应用父包配置

这意味着如果您的变量是使用标准配置从标准 SSIS 配置表中分配的,那么任何命令行选项都会在之后覆盖它们。

您是否考虑过您的用户需要安装 SSIS,并且包将在他们的本地计算机上执行,包括数据往返?

【讨论】:

  • 谢谢。现在是 2008 年,现在用户会填写信息,点击一个按钮。该应用程序将运行一个 SP,该 SP 将调用 xp_cmdShell 或动态创建一个 sql 作业并运行它。
【解决方案2】:

尝试查看 System::UserName。如果这是由 DOMAIN\SomeSpecialSQLServerAgentAccount 运行的每周作业,您可以编写一个表达式以一种方式设置 User::FileName,或者如果包由 DOMAIN\JohnQPublic 手动执行,则以不同方式设置 User::FileName。

您可以为文件名的两个版本使用变量,例如,User::FileNameFromTable 和 User::FileNameFromCommandLine,然后根据 System::UserName 选择其中一个。

恐怕我还没有找到影响变量设置方式的方法(设计时初始化、配置文件、命令行配置、作业属性配置)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多