问题
Inside of a Script Task in SSIS, I need to make a call to an SQL database. I have a connection string that was created when I added the database to the data sources folder, however now I'm not sure how to reference it inside the C# code. I know how to do this in the code behind of an ASP website, however it seems that SSIS should have a more direct method.
EDIT
This line of code actually winds up throwing an exception:
sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);
It reads: "Unable to cast COM object of type 'System._ComObject' to class type 'System.Data.SqlClient.SqlConection.'"
回答1:
you cant use the configurations from a connection manager from inside a script task like: conectionManager1.exceuteSQLStatment(...)
once you are "inside" the script task you need to access the CM like a variable:
ConnectionManager cm;
System.Data.SqlClient.SqlConnection sqlConn;
System.Data.SqlClient.SqlCommand sqlComm;
cm = Dts.Connections["conectionManager1"];
sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction);
sqlComm = new System.Data.SqlClient.SqlCommand("your SQL Command", sqlConn);
sqlComm.ExecuteNonQuery();
cm.ReleaseConnection(sqlConn);
回答2:
You must check the privider of the connection that your are trying to instantiate.
You can't cast a OleDb.OleDbConnection
connection as a SQLClient.SQLConnection
, the parameters are different.
来源:https://stackoverflow.com/questions/11867639/connect-to-sql-database-inside-script-task-in-ssis