2008-08-07 16 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アセンブリを使用します。これはプロセスの制御を最大限にするだけでなく、レポートのために意味のあるエラーメッセージをテーブルに記録することができます。

もう1つのオプションは、実行するコマンドのデータベースを読み取るコマンドラインアプリを作成することです。その後、分単位で、またはポーリング期間が必要なときに、コマンドラインアプリを呼び出すようにスケジュールされたタスクを定義することができます。これは、データベースサーバーでCLRサポートを有効にするよりも安全です。

3

また、DTSまたはIntegration Services(SQL Server 7または2000の場合はDTS、2005以降の場合はSSIS)を使用することもできます。どちらもMicrosoftのもので、Sql Serverインストールに含まれています(Standard Edition以上).Sql Serverからインポート/エクスポートジョブ用に設計されたFTPタスクがあります。

1

Kevは、「CLR統合アセンブリでこれを行い、System.Net名前空間のFTPクラスを使用して簡単なFTPクライアントを構築する」という提案を実装したover hereという例を投稿しました。

関連する問題