Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie schreibe ich die Ausgabe gespeicherter Prozeduren direkt in eine Datei auf einem FTP, ohne lokale oder temporäre Dateien zu verwenden?

Wenn Sie CLR-Integrationsassemblys implementieren dürften, könnten Sie tatsächlich FTP verwenden, ohne eine temporäre Datei schreiben zu müssen:

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();
    }
}