본문 바로가기

SQL Server/SQL Server Tip & Tech

SQL Server 2005 Performance Dashboard Reports에서 Difference of two datetime columns caused overflow at runtime 에러 Fix하기

오늘 갑자기 Performance dashboard report에서 아래와 같은 에러가 발생했다.

사용자 삽입 이미지

idle_connection_time을 구하는 과정에서 DATEDIFF함수로 두 날짜 사이의 차이를 Millisecond로 구하다보니... int값의 범위를 초과해 발생하는 에러였다.

처음 설치할때 사용한 setup.sql파일에서...

sum(convert(bigint, datediff(ms, login_time, getdate()))) - sum(convert(bigint, s.total_elapsed_time)) as idle_connection_time,


위 구문을 아래 구문처럼 수정해 주고...

sum(convert(bigint, cast(datediff(minute, login_time, getdate()) as bigint) * 60000 + datediff(millisecond, dateadd(minute, datediff(minute, login_time, getdate()), login_time), getdate()))) - sum(convert(bigint, s.total_elapsed_time)) as idle_connection_time,


이미 예전 버전으로 설치를 마친 경우라면 아래 첨부 파일을 실행하면 된다.
(MS_PerfDashboard.usp_Main_GetSessionInfo 만 Drop & Create하도록 했음...)