2013-09-30 146 views
1

在SSIS 05(VB.NET)脚本中,发生了一个有趣的异常。开发环境不会显示有关脚本的任何错误。如何避免/删除invalidcastexception

以下错误消息显示在ETL过程的脚本组件中。

Unable To Cast COM Object Of Type 'System.__ComObject' To Class Type 'System.Data.SqlClient.SqlConnection 

连接管理器正在使用中。

Dim connMgr As IDTSConnectionManager90 

这里应用CType命令。

公共覆盖子AcquireConnections(BYVAL交易为对象)

 connMgr = Me.Connections.Connection 
     sqlConn = CType(connMgr.AcquireConnection(Nothing), SqlConnection) 

End Sub 

任何经验如何避免这个问题?任何帮助将不胜感激。

btw 2012版本(在C#中)没有任何问题。 2005版本被手动降级/重写。

public override void AcquireConnections(object Transaction) 
{ 
    connMgr = this.Connections.Connection; 
    sqlConn = (SqlConnection)connMgr.AcquireConnection(null); 
} 

附录: 这是行不通的。

sqlConn =新的SqlConnection(connMgr.ConnectionString)

回答

0

演员的问题是一个问题,即使没有投(参见片段上方新的关键字)。

因此,陈述被重写。 主要观点 - 关于旧问题还没有问题。

oleDbConn = New OleDb.OleDbConnection(connMgr.ConnectionString) 
+1

有一点要注意的,如果你正在使用显式事务,这将不会在现有的连接管理器的事务中登记 – billinkc

+0

是,对于暗示的感谢。 – mnemonic