Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como gravar a saída do procedimento armazenado diretamente em um arquivo em um FTP sem usar arquivos locais ou temporários?


Se você tivesse permissão para implementar assemblies de integração CLR, você poderia realmente usar o FTP sem ter que escrever um arquivo temporário:
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();
    }
}