2012-08-08 14 views
12

Innerhalb einer Skriptaufgabe in SSIS muss ich eine SQL-Datenbank aufrufen. Ich habe eine Verbindungszeichenfolge, die erstellt wurde, als ich die Datenbank dem Datenquellenordner hinzufügte, aber jetzt bin ich nicht sicher, wie ich es innerhalb des C# -Codes referenziere. Ich weiß, wie man das im Code hinter einer ASP-Website macht, aber es scheint, dass SSIS eine direktere Methode haben sollte.Verbinden mit SQL-Datenbank innerhalb der Skriptaufgabe in SSIS

EDIT

Diese Codezeile tatsächlich windet sich eine Ausnahme zu werfen:

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

Dort heißt es: „Kann nicht COM-Objekt des Typs‚System._ComObject‘auf Klassentyp‚ werfen System.Data . .SqlClient.SqlConection '“

Antwort

18

man kann die Konfigurationen von einem Verbindungs-Manager aus dem Innern einer Skript-Task wie verwenden: conectionManager1.exceuteSQLStatment (...)

sobald Sie „innen“ die Skript Aufgabe sind müssen Sie wie eine Variable, die die CM zugreifen:

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); 
+0

Wenn ich (Ich versuche, einen Datetime zu bekommen in meinem Fall) aus dem Wert erhalten wollte sqlComm, würde ich einfach so etwas verwenden: DbDataReader reader = sqlComm.ExecuteReader() - und dann durch das was auch immer raus geht? – NealR

+2

Ja, wie Sie es bei C# tun würden – Diego

+2

Durch Ändern der Datenbankverbindung von OLEDB zu ADO.Net funktionierte der oben aufgeführte Code für mich. – Tequila