C#SqlCommand字节传输大小

时间:2011-09-07 18:28:56

标签: c# sql

我正在用C#编写一个Sql客户端,并且希望能够在一个点上跟踪Sql命令的数据使用情况。据我所知,没有简单的方法可以做到这一点。

我从SqlCommand获取数据的功能如下所示:

private static void ExecuteReaderCallback(IAsyncResult async)
{
    DBReqWrapper RequestObject = (DBReqWrapper)async.AsyncState;
    SqlDataReader ResponseReader = command.EndExecuteReader(async);
    if (ResponseReader.HasRows)
    {
          while (ResponseReader.Read())
         {
              object[] NewResponse = new object[ResponseReader.FieldCount];
              ResponseReader.GetValues(NewResponse);

              // Processing omitted
         }
    }

    ResponseReader.Close();
}

我认为不会起作用:

  1. 序列化数据以找出大小。太慢了,特别是对于大量请求。
  2. 的sizeof。我们正在处理未知类型的物体。
  3. Marshal.sizeof。我们正在处理托管对象。
  4. 检查应用程序总内存。这是一个多线程应用程序,它将处理许多并发请求,并且内存总数将不可靠。
  5. SqlDataReader的:: GetBytes会()。此命令仅对类型的子集有效。
  6. 感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

如果您正在计算通过'网络传输的数据量,那么这些数据都不会真正起作用。 SQL Server使用称为TDS(Tabular Data Stream)的协议作为其应用程序级有线格式。

我认为性能指标可能是你的朋友。