Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SSIS-Verbindungsfehler – Dateiname ungültig

Basierend auf den präsentierten Informationen machen Sie alles richtig. Wenn Sie neu bei SSIS sind, würde ich vorschlagen, dass Sie sich eine Kopie des hervorragenden Add-Ins BIDSHelper . Es hat großartige Funktionen, die Ihnen wirklich Zeit sparen können, insbesondere im Hinblick auf Konfigurationen und Ausdrücke.

Ich habe ein Referenzpaket erstellt, das einen Excel Connection Manager hatte, der auf C:\ssisdata\so_paulsmithjr.xls verweist und alles verkabelt.

An diesem Punkt weiß ich, dass die Dinge funktionieren, also war es an der Zeit, das Paket zu bewegen. Ich habe die folgenden Variablen und ihre Werte erstellt

  • Aktuelle Datei - C:\ssisdata\so_paulsmithjr.xls
  • Platzhalter - ##FILE_PATH##
  • TemplateConnection - Provider=Microsoft.Jet.OLEDB.4.0;Data Source=##FILE_PATH##;Extended Properties="Excel 8.0;HDR=YES";

Eine vierte Variable wird als Ausdruck festgelegt (Rechtsklick auf Variable, Eigenschaftsfenster. Als Ausdruck auswerten =True festlegen &Ausdruck ist unten)

  • CurrentConnection - REPLACE(@[User::TemplateConnection], @[User::PlaceHolder], @[User::CurrentFile])

Ich habe den CurrentConnection-Wert mit dem ReferenceConnection (dem ursprünglichen Wert der Verbindungszeichenfolge des Excel-Verbindungs-Managers) verglichen, und die Dinge stimmten überein. Wenn ich an dieser Stelle den Wert von CurrentFile in C:\ssisdata\so_paulsmithjr - Copy.xls ändern würde, würde sich das automatisch im Wert von CurrentConnection widerspiegeln.

Der letzte Trick wäre, einen Ausdruck im Excel Connection Manager zu verwenden. Klicken Sie erneut mit der rechten Maustaste auf das CM und unter Eigenschaften wird es Ausdrücke geben. Es wird nicht erweitert, da nichts darunter ist. Klicken Sie stattdessen auf die Auslassungspunkte und wählen Sie dann die ConnectionString-Eigenschaft aus, wählen Sie die Auslassungspunkte erneut aus und ziehen Sie dieses Mal @[User::CurrentFile] nach unten Variable. Klicken Sie zweimal auf OK, und jetzt ist Ihr Verbindungsmanager so eingestellt, dass er überall dort verwendet wird, wo die CurrentConnection-Variable angegeben ist.

Geht das besser?