SSIS连接错误

时间:2012-08-08 22:31:08

标签: sql ssis bids

我将以下代码写入SSIS脚本任务以连接到我的SQL数据库:

 ConnectionManager cm;
 System.Data.SqlClient.SqlConnection sqlConn;
 System.Data.SqlClient.SqlCommand sqlComm;

 cm = Dts.Connections["QUAHILSQ03"];

 sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);

然而这一行:

 sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);

返回以下异常:

{“无法将类型为'System .__ ComObject'的COM对象强制转换为类类型'System.Data.SqlClient.SqlConnection'。表示COM组件的类型的实例不能转换为不代表COM组件的类型;但是只要底层的COM组件支持对接口的IID的QueryInterface调用,它们就可以转换为接口。“} System.Exception {System.InvalidCastException}

2 个答案:

答案 0 :(得分:13)

非常简单的修复:我创建了QUAHILSQ03连接管理器作为OLE DB连接。只需将其更改为ADO.NET,我的代码运行正常。

答案 1 :(得分:6)

在我看来,您正在使用OLEDB连接。在oledb连接管理器上获取连接方法会返回一个COM对象,因此您将收到错误。

试试这个:

   ConnectionManager cm = Dts.Connections["QUAHILSQ03"];
   IDTSConnectionManagerDatabaseParameters100 cmParams = cm.InnerObject 
   as IDTSConnectionManagerDatabaseParameters100;
   OleDbConnection conn = cmParams.GetConnectionForSchema() as OleDbConnection;

您需要使用Microsoft.SqlServer.Dts.Runtime.Wrapper命名空间使用上述方法,您无法保留transaction

有关详细信息,请参阅this文章