C#CommandTimeout使用语句问题

时间:2017-10-06 00:27:54

标签: command-timeout

我有一个方法对我有用,但现在查询已经更改, 我需要添加一个CommandTimeout 以允许某些客户端的事实执行此操作的机器有点不足。我遇到的问题是使用行,因为添加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);
        }
    }

1 个答案:

答案 0 :(得分:0)

好的,找到了答案。我不得不删除使用语句。

            var command = new SqlCommand(QueryToExec, conn);
            command.CommandTimeout = 300;
            var reader = command.ExecuteReader();
            var outFile = File.CreateText(destinationFile);