SSIS连接错误

Nea*_*alR 7 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);
Run Code Online (Sandbox Code Playgroud)

不过这一行:

 sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);
Run Code Online (Sandbox Code Playgroud)

返回以下异常:

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

Nea*_*alR 13

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


pra*_*een 6

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

试试这个 :

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

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

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