请问如何 如何监测mssql2000返回结果集的字节数?比如执行了一个“select * from 表”查询,我们需要知道,这个查询到底返回了多大的数据……
性能监视器 是不行的,只有内存,磁盘;事件探查器 里也没这一列;有人说,直接把返回的数据集用adodb存为文件,计算大小,这个估计是可以,不过效率也太低了一些,而且不便于统计……求更先进的办法

解决方案 »

  1.   

    select sum( datalength(col1)+ datalength(col2)+  datalength(col3)+ ...) from [表]
      

  2.   

    可用Recordset的CacheSize属性,
    参考 http://msdn.microsoft.com/en-us/library/ee266249(v=bts.10).aspx
      

  3.   


    CacheSize 只是记录数量吧,而不是“字节数”
      

  4.   


    要的不是记录数量,是要监测某个SQL查询到底产生了多少字节的数据
      

  5.   

    对一个确定的表,记录数多少决定返回的数据长度,
    在select * from 表之前,
    可用select count(*) from 表,查看查询到底可返回多少条记录,
    根据返回的结果,就可确定
    select * from 表 会返回多少数据.
      

  6.   

    select sum( len(col1)+ len(col2)+  len(col3)+ ...) from [表]这种只能查询到固定表的字段长度之和吧
      

  7.   

    你如果只看传输量的话可以监控网络,只要挑选客户端与SQL Server交互的部分就可以了。 
      

  8.   

    问题是你的数据库真的是遇到网络瓶颈了吗?一般来讲,数据库语句传输都不是问题,因为语句SIZE还是非常小的。如果你真的觉得是由于语句引起的,可以用存储过程。  
      

  9.   

    如果是.net,可以试一下SqlConnection.RetrieveStatistics()方法.
    http://msdn.microsoft.com/en-us/library/7h2ahss8(VS.80).aspx
    一个简单的例子: http://highoncoding.com/Articles/145_Retrieving_Statistics_Using_SqlConnection.aspx我承认自己没有试用过所以不知道效果如何.不过可以用一个公用方法将命令和统计结果写入一个日志文件里.
      

  10.   

    换个思路 查询最多IO的SQL 是不是也是同样的效果?