日期:2014-05-17  浏览次数:20491 次

请教一下大家获取获取SQL Server数据库文件的I/O统计信息失败!!
在SQL Server数据库巡检时,执行如下入语句获取数据库文件的I/O统计信息时:
select 
  @@IO_BUSY,--SQL自上次启动以来的用于执行输入和输出操作的时间
  @@timeticks, --每个时钟周期对应的微秒数
  @@IO_BUSY*@@timeticks as 'I/O 操作毫秒数',
  getdate() as '当前时间'

提示:消息 8115,级别 16,状态 2,第 1 行
将 expression 转换为数据类型 int 时出现算术溢出错误。

请各位大侠帮忙解释解决一下,不胜感激!
sql?server 数据库 io

------解决方案--------------------
原因@@IO_BUSY*@@timeticks超出了int的范围
------解决方案--------------------
select 
  @@IO_BUSY,--SQL自上次启动以来的用于执行输入和输出操作的时间
  @@timeticks, --每个时钟周期对应的微秒数
  CONVERT(bigint,@@IO_BUSY)*CONVERT(bigint,@@timeticks) as 'I/O 操作毫秒数',
  getdate() as '当前时间'
  
/*
(无列名) (无列名) I/O 操作毫秒数 当前时间
257002 31250 8031312500 2013-03-21 08:52:30.123
*/


int 2147483647 最大,8031312500超过最大了。