我有一个ssis包,变量由数据库表设置。为了重用代码,该软件包将每周运行一次。但是也需要使用它来临时运行它。现在我有了从命令行运行包的代码,我知道如何使用开关/Set \Package.Variables[User::FileName].Properties[Value];"aaab"
设置变量名称
我的问题:有没有办法设置是否使用表格或传入值的首选项?或者有没有办法确定执行者是什么,如果我可以确定它是从.net vs作业还是存储过程运行然后我可以说使用传入的值?这可能会有所帮助?
答案 0 :(得分:1)
尝试查看System :: UserName。如果这是DOMAIN \ SomeSpecialSQLServerAgentAccount运行的每周作业,您可以编写一个将User :: FileName设置为单向的表达式,否则如果该程序包由DOMAIN \ JohnQPublic手动执行,则设置User :: FileName。
您可以为文件名的两个版本使用变量,例如User :: FileNameFromTable和User :: FileNameFromCommandLine,然后根据System :: UserName选择一个或另一个。
恐怕我找不到影响变量设置方式的方法(设计时初始化,配置文件,命令行配置,作业属性配置)。
答案 1 :(得分:1)
有很多方法可以实现包的运行时配置(这就是你正在做的事情)
你没有提到什么版本,但读了这个:
http://msdn.microsoft.com/en-us/library/cc671625.aspx
这个示例说明配置按SQL 2005的顺序发生:
- 应用设计时配置 - 应用-Command行选项 - 应用了包裹配置
这意味着如果使用标准配置从标准SSIS配置表中分配变量,那么任何命令行选项都将在之后覆盖它们。
您是否认为您的用户需要安装SSIS,并且该软件包将在其本地计算机上执行,包括数据往返?