c#中的SQL Server客户端执行时间

时间:2013-12-04 20:07:52

标签: c# sql-server

我正在创建一个测试SQL查询性能的工具。该工具需要测量客户端结果返回时间,如果他们运行查询并将结果返回到控制台时将会遇到。但是,因为此工具将多次运行查询并最终跨多个线程,所以我不想在屏幕上显示查询结果。

如果我将结果显示在屏幕上,但是如果重定向到变量,则时间不正确(快速),我可以正确地获得时间。

有什么想法吗?

以下是我所拥有的测试代码部分。我测量开始和结束时间的差异,以找到毫秒数。谢谢。

    DateTime beginTime = DateTime.Now;
    cn2.Open();

    try
    {
        SqlCommand comm = new SqlCommand(cmd, cn2);
        SqlDataReader reader = comm.ExecuteReader();

        IDictionary d = cn2.RetrieveStatistics();
        string[] keys = new string[d.Count];
        d.Keys.CopyTo(keys, 0);

        for (int x = 0; x < d.Count; x++)
        {
            Console.WriteLine("{0}\t{1}", keys[x], (long)d[keys[x]]);
        }

        Int32.TryParse(d["ExecutionTime"].ToString(), out actualTimeMilliseconds);

        do
        {
            int count = reader.FieldCount;
            while (reader.Read())
            {
                for (int i = 0; i < count; i++)
                {
                    Console.WriteLine(reader.GetValue(i));
                }
            }
        } while (reader.NextResult());

    }
    catch (Exception)
    {

        throw;
    }

    cn2.Close();
    DateTime endTime = DateTime.Now;
    TimeSpan clientTime = endTime.Subtract(beginTime);

1 个答案:

答案 0 :(得分:0)

输出重定向可能是一个问题,因为有人必须记住这样做。作为替代方案,在控制台应用程序中打开文件,并在运行结束时添加值。

  // Create a new file 
  using (StreamWriter sw = File.CreateText(fileName))
  {
      sw.WriteLine("New file created: {0}", DateTime.Now.ToString());
  }