0

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

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

4

2 回答 2

1

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

您没有提及哪个版本,但请阅读以下内容:

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

例如,对于 SQL 2005,配置按以下顺序进行:

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

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

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

于 2013-12-18T23:28:42.050 回答
1

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

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

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

于 2013-12-18T20:25:36.787 回答