2008-08-07 11 views
10

Was ist die beste Methode zum Ausführen von FTP-Befehlen aus einer gespeicherten SQL Server-Prozedur? Wir verwenden derzeit so etwas wie diese:Was ist die empfohlene Vorgehensweise für FTP aus einer gespeicherten SQL Server 2005-Prozedur?

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

Das Problem ist, dass der Befehl, auch wenn der FTP endete Fehler erfolgreich zu sein scheint. Außerdem erfordert die Verwendung von xp_cmdshell spezielle Berechtigungen und kann Sicherheitslücken verursachen.

Antwort

4

Wenn Sie SQL 2005 ausführen, können Sie dies in einer CLR-Integrationsassembly durchführen 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, xp_cmdshell verwenden zu müssen, zu reduzieren.

Nur ein paar Gedanken.

2

Wenn Sie FTP innerhalb der Datenbank tun müssen, würde ich mit einer .NET-Assembly gehen, wie Kevin vorgeschlagen hat. Dies würde die meiste Kontrolle über den Prozess bieten, und Sie wären in der Lage, aussagekräftige Fehlermeldungen in einer Tabelle für die Berichterstattung zu protokollieren.

Eine andere Option wäre, eine Befehlszeilenanwendung zu schreiben, die die Datenbank nach auszuführenden Befehlen liest. Sie könnten dann eine geplante Aufgabe definieren, um diese Befehlszeilen-App jede Minute oder zu jedem gewünschten Zeitpunkt aufzurufen. Dies wäre sicherer als die Aktivierung der CLR-Unterstützung auf dem Datenbankserver.

3

Eine andere Möglichkeit ist die Verwendung 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 (mindestens in der Standard Edition) enthalten und haben eine FTP-Aufgabe und sind für Import/Export-Jobs von Sql Server ausgelegt.

1

Kev schrieb ein Beispiel over here, das seinen Vorschlag implementiert, dies in einer CLR-Integrationsassembly zu tun und die FTP-Klassen im System.Net-Namespace zu verwenden, um einen einfachen FTP-Client zu erstellen.

Verwandte Themen