2008-08-07 78 views
10

從SQL Server存儲過程執行FTP命令的最佳方法是什麼?我們目前使用的是這樣的:來自SQL Server 2005存儲過程的FTP的最佳做法是什麼?

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

的問題是,該命令似乎成功,即使在FTP中出錯而結束。此外,使用xp_cmdshell需要特殊權限,並可能爲安全問題留出空間。

回答

4

如果您正在運行SQL 2005,則可以在CLR集成程序集中執行此操作,並使用System.Net命名空間中的FTP類來構建簡單的FTP客戶端。

您將受益於能夠捕獲和處理異常並降低必須使用xp_cmdshell的安全風險。

只是有些想法。

2

如果您需要從數據庫內部進行FTP操作,那麼我會像Kevin建議的那樣使用.NET程序集。這將提供對流程的最大控制,並且您可以將有意義的錯誤消息記錄到表格中進行報告。

另一種選擇是編寫一個命令行應用程序,該應用程序讀取要運行的命令的數據庫。然後,您可以定義一個計劃任務,每分鐘或任何輪詢週期都需要調用該命令行應用程序。這比在數據庫服務器中啓用CLR支持更安全。

3

另一種可能性是使用DTS或Integration Services(DTS用於SQL Server 7或2000,SSIS用於2005或更高版本)。兩者都來自Microsoft,包含在Sql Server安裝中(至少在標準版中),並且具有FTP任務,並且專爲從Sql Server導入/導出作業而設計。

1

Kev發佈了一個示例over here,它實現了他的建議「在CLR集成程序集中執行此操作,並使用System.Net命名空間中的FTP類來構建簡單的FTP客戶端。

相關問題