Was ist die beste Vorgehensweise für FTP aus einer gespeicherten SQL Server 2005-Prozedur?

StackOverflow https://stackoverflow.com/questions/4246

  •  08-06-2019
  •  | 
  •  

Frage

Was ist die beste Methode zum Ausführen von FTP-Befehlen aus einer gespeicherten SQL Server-Prozedur?Wir verwenden derzeit so etwas:

EXEC master..xp_cmdshell 'ftp -n -s:d:\ftp\ftpscript.xmt 172.1.1.1'

Das Problem besteht darin, dass der Befehl offenbar auch dann erfolgreich ist, wenn der FTP fehlerhaft beendet wurde.Auch die Verwendung von xp_cmdshell erfordert besondere Genehmigungen und lässt möglicherweise Raum für Sicherheitsprobleme.

War es hilfreich?

Lösung

Wenn Sie SQL 2005 ausführen, können Sie dies in einer CLR-Integrationsassembly tun und die FTP-Klassen im System.Net-Namespace verwenden, um einen einfachen FTP-Client zu erstellen.

Sie würden davon profitieren, Ausnahmen abfangen und behandeln zu können und das Sicherheitsrisiko durch die Verwendung von xp_cmdshell zu verringern.

Nur ein paar Gedanken.

Andere Tipps

Eine weitere Möglichkeit ist die Nutzung von DTS oder Integration Services (DTS für SQL Server 7 oder 2000, SSIS für 2005 oder höher).Beide stammen von Microsoft, sind in der SQL Server-Installation enthalten (zumindest in der Standard Edition), verfügen über eine FTP-Aufgabe und sind für Import-/Exportaufträge von SQL Server konzipiert.

Wenn Sie FTP aus der Datenbank heraus ausführen müssen, würde ich eine .NET-Assembly verwenden, wie Kevin vorgeschlagen hat.Dies würde die größtmögliche Kontrolle über den Prozess ermöglichen und außerdem könnten Sie aussagekräftige Fehlermeldungen zur Berichterstellung in einer Tabelle protokollieren.

Eine andere Möglichkeit wäre, eine Befehlszeilen-App zu schreiben, die die Datenbank auf auszuführende Befehle liest.Anschließend können Sie eine geplante Aufgabe definieren, um diese Befehlszeilen-App jede Minute oder in jedem gewünschten Abfragezeitraum aufzurufen.Das wäre sicherer, als die CLR-Unterstützung im Datenbankserver zu aktivieren.

Kev hat ein Beispiel gepostet hier drüben Damit wird sein Vorschlag umgesetzt, „dies in einer CLR-Integrationsassembly zu tun und die FTP-Klassen im System.Net-Namespace zu verwenden, um einen einfachen FTP-Client zu erstellen“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top