Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment écrire la sortie d'une procédure stockée directement dans un fichier sur un FTP sans utiliser de fichiers locaux ou temporaires ?

Si vous étiez autorisé à implémenter des assemblys d'intégration CLR, vous pourriez en fait utiliser FTP sans avoir à écrire de fichier temporaire :

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