0
我有一直擔任我很好的方法,但現在查詢已經改變,我需要添加的CommandTimeout允許的事實,一些客戶機上,這是執行有點動力不足。我遇到的問題是使用線路作爲添加CommandTimeout不起作用。C#的CommandTimeout使用的語句問題
程序本身每晚從SFTP服務器拉下查詢,然後對客戶端數據庫執行查詢,將結果寫入文件,然後將結果發送回SFTP服務器。
我無法提高客戶端計算機上查詢(只讀訪問)的效率,所以我堅持使用這種方法。
public void DumpTableToFile(string connection, string destinationFile, string QueryToExec)
{
string logDirectory = VariableStorage.logDirectory;
string Practice = VariableStorage.Practice;
try
{
SqlConnection conn = new SqlConnection(connection);
conn.Open();
using (var command = new SqlCommand(QueryToExec, conn))
using (var reader = command.ExecuteReader())
using (var outFile = File.CreateText(destinationFile))
{
string[] columnNames = GetColumnNames(reader).ToArray();
int numFields = columnNames.Length;
outFile.WriteLine(string.Join("\t", columnNames));
if (reader.HasRows)
{
while (reader.Read())
{
string[] columnValues =
Enumerable.Range(0, numFields)
.Select(i => reader.GetValue(i).ToString())
.Select(field => string.Concat("", field.Replace("\"", "\"\""), ""))
.ToArray();
outFile.WriteLine(string.Join("\t", columnValues));
}
}
}
}
catch (Exception e)
{
Program log = new Program();
log.WriteToLog(" Error: " + e);
SendEmailReport(Practice + " - Data Collection Error", " Error: " + e);
}
}