我将以下代码写入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}
在我看来,您正在使用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.
有关详细信息,请参阅此文章
| 归档时间: |
|
| 查看次数: |
12482 次 |
| 最近记录: |