Ich habe mit SSIS-Paketen gearbeitet, und ich bin derzeit in diesem Problem stecken. Ich habe mit einer Verbindungszeichenfolge entwickelt, die ich in eine Paketvariable geschrieben habe, und dieser Wert wird über einen Ausdruck an den Verbindungsmanager übergeben. Etwas wie dieses: @ [Benutzer :: Verbindung]Fehler XML-Konfigurationsdatei im SSIS-Paket
Es war großartig zum Debuggen. Da ich einige gespeicherte Prozeduren in Skriptaufgaben und Skriptkomponenten aufrufen musste, würde ich einfach die Paketvariable als String-Verbindung zur Datenbank aufrufen. Da ich neu in der ETL-Welt bin (weniger als einen Monat) und einige Pakete gemacht habe (6 tatsächlich), las ich erst kürzlich, dass ich meinen ConnectionString in einer XML-Datei speichern und Dinge wie Benutzer speichern sollte. Passwort da (Da Produktionsserver wird wahrscheinlich andere Benutzerkonto haben, wie erwähnt here und here)
Jetzt habe ich versucht zu tun, was es sagt, aber es funktioniert nicht für mich. Also habe ich ein neues SSIS-Paket zum Testen erstellt, es enthält eine Skript-Aufgabe und ruft eine einfache Stored Procedure auf. Das Paket Konfiguration enthält nur die Connectionstring-Eigenschaft aus dem Connection Manager, und es sieht so etwas wie diese:
<?xml version="1.0" ?>
- <DTSConfiguration>
- <DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="JohnSmith" GeneratedFromPackageName="Package" GeneratedFromPackageID="{2C421533-C76C-4583-841C-367C50DB61C1}" GeneratedDate="17/01/2017 --:--:-- p.m." />
</DTSConfigurationHeading>
- <Configuration ConfiguredType="Property" Path="\Package.Connections[OLEDB_CONNECTION].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=ServerName;User ID=UserName;Initial Catalog=DatabaseName;Provider=SQLNCLI10.1;Auto Translate=False;Application Name=SSIS-Package-{C24F1A69-A9A3-40D4-8A1E-7EA61E0EB57D}ServerName.DatabaseName.UserName;Use Encryption for Data=False;Password=abc123;</ConfiguredValue>
</Configuration>
</DTSConfiguration>
Ich hat das Passwort am Ende, ebenso wie die Verbindung zu Beginn vorgeschlagen, und versuchte zu erhalten die connetionString wie dies in der Task-Script:
String cn = Dts.Connections["OLEDB_CONNECTION"].ConnectionString;
und nannte es dann in der gespeicherten Prozedur, wie folgt aus:
using (OleDbConnection con = new OleDbConnection(cn))
{
using (OleDbCommand cmd = new OleDbCommand("dbo.usp_sgn_conseguirNumDoc", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@var_CODDOC", OleDbType.VarChar, 3).Value = "001";
cmd.Parameters.Add("@var_NUMDOC", OleDbType.BigInt).Direction = ParameterDirection.Output;
con.Open();
cmd.ExecuteNonQuery();
result = Int64.Parse(cmd.Parameters["@var_NUMDOC"].Value.ToString());
}
}
aber es schlägt in con.Open() so, wenn ich den ConnectionString überprüfen, ist es das gleiche, aber ohne das Passwort Wert, den ich schrieb. Es ist wie es nicht aus der XML-Konfigurationsdatei liest. Als ich die Nachricht Tab im Fenster Fehlerliste überprüfte, sehe ich:
<DTS:ConnectionManager>
<DTS:Property DTS:Name="DelayValidation">0</DTS:Property>
<DTS:Property DTS:Name="ObjectName">OLEDB_CONNECTION</DTS:Property>
<DTS:Property DTS:Name="DTSID">{C24F1A69-A9A3-40D4-8A1E-7EA61E0EB57D}</DTS:Property>
<DTS:Property DTS:Name="Description"></DTS:Property>
<DTS:Property DTS:Name="CreationName">OLEDB</DTS:Property><DTS:ObjectData><DTS:ConnectionManager>
<DTS:Property DTS:Name="Retain">0</DTS:Property><DTS:Password DTS:Name="Password" Sensitive="1"></DTS:Password>
<DTS:Property DTS:Name="ConnectionString">Data Source=ServerName;User ID=UserName;Initial Catalog=DatabaseName;Provider=SQLNCLI10.1;Auto Translate=False;Application Name=SSIS-Package-{C24F1A69-A9A3-40D4-8A1E-7EA61E0EB57D}ServerName.DatabaseName.UserName;Use Encryption for Data=False;</DTS:Property></DTS:ConnectionManager></DTS:ObjectData></DTS:ConnectionManager>
Im aus Idee, was zu tun ist, wird jede Hilfe
Im mit Visual Studio 2008 und SQL Server 2008 geschätzt werden
Haben Sie Ihr Paket mit der Konfigurationsdatei wie folgt verbunden: https://technet.microsoft.com/en-us/library/ms140213(v=sql.105).aspx –
@ Nick.McDermaid Ich tat, und verband nur die Connection String-Eigenschaft von Connection Managers – Mokz