2016-06-09 1 views
0

Ich versuche zu finden, wie ich den Server-Namen als Variable zu Skript-Aufgabe in SSIS-Lösung übergeben kann. Ich benutze VS 2010 und C#.Wie übergeben Variable an Skript Aufgabe SSIS, Visual Studio 2010, C#

Innerhalb meines SSIS habe ich Name (String) Variable definiert und ich habe diese Variable als ReadOnlyVariable innerhalb meiner Skriptaufgabe hinzugefügt.

C# Code sieht wie folgt aus:

enter image description here

Problem beginnt (ich glaube), wenn ich versuche, die lokale Server auf die OleDbDataAdapter zu passieren, die perfekt mit strConn funktioniert, aber funktioniert nicht mit meine ServerName-Variable

Ich habe versucht, es in einer Form "Benutzer :: Name" übergeben, aber es hat nicht funktioniert.

würde Jeder Vorschlag geschätzt werden :)

Beste

+0

Sie die gleiche veritable mit tun können und Eigentum EvaluateAsExpression ändern. –

+0

Hallo, danke für deinen Kommentar, aber leider sagt es mir nichts - könntest du es ein bisschen mehr erklären oder ein paar Beispiele zeigen? – user2433705

Antwort

1

Haben Sie genau diesen Code zu schreiben versuchen? (Ich nehme an, dass Sie Variable Name als Zeichenfolge definiert haben). Und Sie können auch Ihren DB-Namen parametrisieren.

string strConn = Dts.Connections[Dts.Variables["Name"].Value + "\\MY_DB_NAME"].ConnectionString; 

UPDATE: Wenn Sie möchten Ihre DB über ein Skript Aufgabe verbinden, die beste Praxis ist es, neue Verbindungsmanager zu konfigurieren (siehe Bild) enter image description here. Der wichtigste ist der Name Ihrer Verbindung (in meinem Fall "MY_NEW_CM")

Wenn Sie Ihren Servernamen oder DB-Namen in einer Variablen gespeichert haben, können Sie den Ausdruckseditor in den Eigenschaften des Verbindungsmanagers verwenden (siehe Abbildung). enter image description here

Später können Sie diese projektierte Verbindung im Code innerhalb Skripttask verwenden, wie folgt:

ConnectionManager cm = Dts.Connections["MY_NEW_CM"]; 

ich gehe davon aus, dass Sie einige SQL-Befehl ausführen möchte diese Verbindungs-Manager verwenden.

Sie können es so machen:

System.Data.SqlClient.SqlConnection sqlConn; 
System.Data.SqlClient.SqlCommand sqlComm; 
ConnectionManager cm = Dts.Connections["MY_NEW_CM"]; 

// Request an open connection 
sqlConn = (System.Data.SqlClient.SqlConnection)cm.AcquireConnection(Dts.Transaction); 

// Do your work 
sqlComm = new System.Data.SqlClient.SqlCommand("UPDATE YourTable SET YourColumn = 'SomeValue'", sqlConn); 
int rowsAffected = sqlComm.ExecuteNonQuery(); 
+0

Vielen Dank für Ihre Eingabe - es ist aufgetreten, dass es ein Problem mit \\ gab. Im Moment frage ich mich, wie ich die Verbindung zu db übergeben, die ich im Verbindungsmanager definiert habe, anstatt db in Variablen zu übergeben. Ich habe versucht, mehrere Methoden zu verwenden, aber keine funktionierte. Irgendwelche Hinweise? – user2433705

+0

Ich habe ein Update meiner vorherigen Antwort ... Ich hoffe, es wird dir helfen. :) – Lkor