SQL Server 2005 ストアド プロシージャからの FTP のベスト プラクティスは何ですか?

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

  •  08-06-2019
  •  | 
  •  

質問

SQL Server ストアド プロシージャから FTP コマンドを実行する最適な方法は何ですか?現在、次のようなものを使用しています。

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

問題は、FTP がエラーで終了した場合でもコマンドが成功したように見えることです。また、 xp_cmdshell 特別な権限が必要であり、セキュリティ上の問題が発生する可能性があります。

役に立ちましたか?

解決

SQL 2005 を実行している場合は、CLR 統合アセンブリでこれを実行し、System.Net 名前空間の FTP クラスを使用して単純な FTP クライアントを構築できます。

例外をトラップして処理できると、xp_cmdshell を使用する必要があるセキュリティ リスクを軽減できるという利点があります。

ちょっと考えてみます。

他のヒント

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

データベース内から FTP を実行する必要がある場合は、Kevin が提案したように .NET アセンブリを使用します。これにより、プロセスを最大限に制御できるほか、レポート用に意味のあるエラー メッセージをテーブルに記録できるようになります。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top