我有关于ssis包的问题。我想在运行我的ssis包时动态地填充一个变量。该变量应该是正在执行的当前步骤/任务的连接字符串。例如,如果我有一个包含两个步骤的ssis包,则第一步的连接是Server1DB1,第二步的连接是Server2DB2。当我在运行程序包时,第一步忙于执行变量应该是Server1DB1,一旦完成并且第二步正在执行,变量应该是Server2DB2。我试图找到答案,但所有文章都讲述了如何根据变量改变连接,而不是反之。任何帮助都感激不尽。提前感谢你。如何从connectionstring ssis设置变量
回答
在脚本任务中,从Dts.Connections
获取ConnectionManager的适当连接,然后将其ConnectionString属性分配给ReadWrite变量。
如果ConnectionString由表达式设置,则需要让连接管理器获取连接,以便使用表达式的当前值更新ConnectionString属性。
例如:
public void Main()
{
// Where "MyOLEDBConn" is the connection's name
var connectionManager = Dts.Connections["MyOLEDBConn"];
// AcquireConnection/ReleaseConnection is unnecessary if ConnectionString isn't set by an expression
var rawConnection = connectionManager.AcquireConnection(Dts.Transaction);
// "User::ConnectionString" is configured as a ReadWrite variable for the Script Task
Dts.Variables["User::ConnectionString"].Value = connectionManager.ConnectionString;
connectionManager.ReleaseConnection(rawConnection);
Dts.TaskResult = (int)ScriptResults.Success;
}
任务获取连接字符串的当前值的基础上,其表达,因此它需要在表达式的值是相同的,因为它要在一个点执行当被记录的任务获得了连接时。这个任务可能直接放在你想要记录的每一步之前或之后,或者(更好的是)在事件处理程序之前或之后执行。
一种替代
另一种方法将是使用表达式任务配置连接字符串,并将其分配给一个变量。连接(通过表达式)和您的日志记录过程都可以使用此变量,从而无需从ConnectionManager中获取连接字符串。这将消除对上述脚本任务的需要。
嗨,谢谢你的回答。只是一个问题什么是MyOLEDBConn?我在那里使用哪个连接名称? – 2014-09-29 09:23:23
@LiamDomingo,将“MyOLEDBConn”替换为您的连接名称。您可以在创建连接时选择该名称。 – 2014-09-30 12:58:32
连接是一个普通的SSIS连接,就像创建任何其他SSIS连接一样。 – 2014-09-30 14:03:42
- 1. 运行时SSIS设置变量
- 2. 在SSIS中设置字符串变量
- 3. 从变量设置变量?
- 4. SSIS:如何设置
- 5. 如何在SSIS中将数据库名称设置为变量?
- 6. 如何将XML节点值设置为SSIS中的变量
- 7. 如何在SQL中设置多个SSIS变量任务
- 8. 如何从os变量设置变量为supervisor和gunicorn配置?
- 9. 如何设置的ConnectionString为DbExtensions/SqlBuilder?
- 10. 从JAMS调度程序设置SSIS变量
- 11. SSIS从数据流设置结果集到变量
- 12. SSIS - 从查询中设置多个包变量导致
- 13. SSIS - 从变量中设置数据流派生列的值
- 14. 如何从NSMutableArray设置实例变量?
- 15. 如何从主类设置Install4j变量?
- 16. 如何从Scala设置环境变量?
- 17. 如何从Java设置系统变量?
- 18. 如何从Perl设置Windows PATH变量?
- 19. 如何从gtk_entry设置变量值?
- 20. 如何从SSIS中的脚本任务重置对象变量?
- 21. 如何设置$ _GET变量
- 22. 如何设置NSManaged变量?
- 23. 如何设置defcustom变量
- 24. 如何设置变量SQLCMD
- 25. 如何设置变量PHANTOMJS_BIN
- 26. 如何从asp.net中的C#变量设置javascript变量?
- 27. 从变量设置类(自)变量?
- 28. 在运行时设置ConnectionString
- 29. 从变量设置* args?
- 30. 设置在从变量
动态部分在哪里起作用?任务A在Server1DB1上执行某些操作,任务B在Server2DB2上执行某些操作 – billinkc 2014-09-25 13:41:38
嗯,也许我使用了错误的单词......但是在运行时,当每个步骤都在执行时,变量会被更新/更改为正在执行的当前步骤/任务的连接。 – 2014-09-25 13:44:29
我还没有“明白”。任务A在Server1B1上执行X.该执行的结果是否以任何方式确定执行任务B的位置? – billinkc 2014-09-25 13:46:18