SQL Server ストアド プロシージャから FTP コマンドを実行するための最良の方法は何ですか? 現在、次のようなものを使用しています。
EXEC master..xp_cmdshell 'ftp -n -s:d:\ftp\ftpscript.xmt 172.1.1.1'
問題は、FTP がエラーで終了したにもかかわらず、コマンドが成功したように見えることです。また、 の使用にxp_cmdshell
は特別な権限が必要であり、セキュリティ上の問題が生じる可能性があります。
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 エディション) に含まれており、FTP タスクがあり、Sql Server からのインポート/エクスポート ジョブ用に設計されています。
データベース内からFTPを実行する必要がある場合は、Kevinが提案したように.NETアセンブリを使用します。これにより、プロセスを最大限に制御できるほか、意味のあるエラーメッセージをテーブルに記録してレポートを作成できるようになります。
もう1つのオプションは、実行するコマンドのデータベースを読み取るコマンドラインアプリを作成することです。次に、そのコマンドラインアプリを毎分またはポーリング期間に必要なものを呼び出すようにスケジュールされたタスクを定義できます。これは、データベースサーバーでCLRサポートを有効にするよりも安全です。