sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo escribir la salida del procedimiento almacenado directamente en un archivo en un FTP sin usar archivos locales o temporales?

Si se le permitiera implementar ensamblajes de integración CLR, podría usar FTP sin tener que escribir un archivo temporal:

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