11

ストアド プロシージャの結果を取得し、それらを FTP の場所にある CSV ファイルに配置したいと考えています。

ただし、問題は、FTP 経由で転送できるローカル/一時ファイルを作成できないことです。

私が取っていたアプローチは、SSISパッケージを使用して一時ファイルを作成し、パック内にファイルをFTP転送するFTPタスクを含めることでしたが、DBAは一時ファイルをサーバーに作成することを許可していません.

Yaakov Ellis への返信

DBA が動作していないサーバー上の共有を少なくとも使用できるように DBA を説得するか、DBA がどのように使用するかを尋ねる必要があると思います。

への返信で Kev

私はCLR統合のアイデアが好きですが、DBAはそれが何であるかさえ知らないと思いますそしておそらく彼らもそれを許可しないでしょう. しかし、おそらくスケジュール可能な SSIS パッケージのスクリプト タスク内でこれを行うことができます。

4

6 に答える 6

15
于 2011-07-23T12:40:36.217 に答える
9

CLR 統合アセンブリの実装が許可されている場合は、一時ファイルを作成しなくても実際に FTP を使用できます。

public static void DoQueryAndUploadFile(string uri, string username, string password, string filename)
{
    FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(uri + "/" + filename);
    ftp.Method = WebRequestMethods.Ftp.UploadFile;
    ftp.Credentials = new System.Net.NetworkCredential(username, password);

    using(StreamWriter sw = new StreamWriter(ftp.GetRequestStream()))
    {
        // Do the query here then write to the ftp stream by iterating DataReader or other resultset, following code is just to demo concept:
        for (int i = 0; i < 100; i++)
        {
            sw.WriteLine("{0},row-{1},data-{2}", i, i, i);
        }
        sw.Flush();
    }
}
于 2008-08-21T18:09:52.473 に答える
1

一時ファイルを作成できるサーバーはありますか? その場合は、ファイルの内容を含む配列を返す Web サービスを作成します。一時ファイルを作成できるコンピューターから Web サービスを呼び出し、配列の内容を使用して一時ファイルを作成し、それを ftp します。

一時ファイルを作成できる場所がまったくない場合、FTP で何かを送信する方法がわかりませ

于 2008-08-21T17:25:44.357 に答える
0

ただし、問題は、FTP 経由で転送できるローカル/一時ファイルを作成できないことです。

この制限は意味がありません。DBA とうまく話し、説明してください。Windows プロセスまたはジョブが適切な場所 (%TEMP% フォルダーなど) に一時ファイルを作成することは、まったく合理的です。実際、SSIS ランタイム自体がそこに一時ファイルを作成することがよくあります。そのため、DBA が SSIS の実行を許可している場合、一時ファイルの作成を許可しています :)。

DBA が、これらの一時ファイルが問題や追加の作業負荷を引き起こさないことを理解している限り (特別な権限を設定したり、バックアップしたりする必要がないことを説明してください)、一時ファイルの作成を許可することに同意する必要があります。

DBA の唯一のメンテナンス タスクは、SSIS ジョブが失敗してファイルが残った場合に備えて、定期的に %TEMP% ディレクトリをクリーンアップすることです。ただし、他の多くのプロセスが同じことを行う可能性があるため、とにかくこれを行う必要があります。単純な SQL エージェント ジョブがこれを行います。

于 2008-09-21T08:36:39.667 に答える
0

CLR ストアド プロシージャを使用してみてください。何か思いつくかもしれませんが、最初に一時ファイルを作成しないと難しいかもしれません。別のマシンに共有を設定して書き込み、そこから ftp できますか?

于 2008-08-21T17:23:51.693 に答える
0

FTP サーバーからスクリプトを作成し、ストアド プロシージャを呼び出すだけです。

于 2008-08-31T23:08:07.013 に答える