SQL Server 2005 Performance Dashboard Reports — Now Available!


Have you ever noticed one of your SQL Server instances running unusually slowly?


Have you had difficulty quickly identifying what areas could be affecting its performance?


One of our customer support Escalation Engineers, Keith Elmore, specializes in understanding these types of problems.  He has worked with customers all over the world on diagnosing their toughest and most critical performance bottlenecks.  Keith has put together a set of Reporting Services reports that will help DBAs diagnose potential performance problems.  These reports were designed to leverage the new Custom Reports functionality in SQL Server Management Studio (Service Pack 2).


The SQL Server 2005 Performance Dashboard Reports only use Dynamic Management Views and Catalog Views.  They do not poll performance counters from the OS, nor do they store a history of your server’s performance over time.  These are very light-weight reports that will help diagnose performance problems as they are occurring.


I encourage you to check them out.  Feel free to comment here with your thoughts and questions.


SQL Server 2005 Performance Dashboard Reports:
http://www.microsoft.com/downloads/details.aspx?FamilyId=1D3A4A0D-7E0C-4730-8204-E419218C1EFC&displaylang=en


Paul A. Mestemaker II
Program Manager
Microsoft SQL Server Manageability

Comments (50)

  1. Keith Elmore, an escalation engineer at Microsoft, has created a "Performance Dashboard" for SQL Server…

  2. Excellent job .. it’s very useful for look where is the problem.  One feature that i suggest is if you can indicate the T-SQL that have table scans or index scans in a dashboards, its a good information when have performance problems.

  3. Jerry Hung says:

    Great report

    I wish MS releases more of these for free

    I like the "Missing Index" best thus far

    but the word "Dashboard" just turns me on 😛

    or Business Scorecard

  4. Matt says:

    This is awesome stuff!!!

  5. Rick says:

    I’m getting an error message when i try and open the reports now because of the line:

    convert(bigint, datediff(ms, login_time, getdate()))

    inside usp_Main_GetSessionInfo.

    The difference between login_time and getdate() is more than 24 days so the datediff fails…. i get the following message:

    Difference of two datetime columns caused overflow at runtime.

    thanks.

  6. Mike says:

    The dashboard was working splendid until this morning with the following error:

    Difference of two datetime columns caused overflow at runtime.

    Have reloaded the msi package (local server/client) and deleted sp’s/functions and re-ran setup.sql script on remote server with the same results.

    Any suggestions appreciated..

  7. David says:

    Because DATEDIFF returns and int once you have connection that is more than 24 days or so old it will overflow the dattype if you modify the procedure so caluclates the differnce in minutes first converts this to milliseconds then add the number of minutes diffrence onto the start time and then calculate the remianing number of milli seconds it will work so basicalyy if you modify trhe offending line

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

    to

    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,

    then it will work

    hopes this helps the rest of you who have the same problem.

  8. マイクロソフト星川です。 先日 SQL Server 2005 Performance Dashboard Reports と呼ばれる新しいツールをリリースしました。 http://www.microsoft.com/downloads/details.aspx?FamilyId=1D3A4A0D-7E0C-4730-8204-E419218C1EFC&displaylang=en

  9. Ron Landers says:

    I have run the setup.sql script and then the performance_dashboard_main.rdl.

    I am getting errors when I try to run most the reports.

    Errors are:

    –"The ‘version_string’ jparameter is missing a value"

    –"The "Report parameter ‘sql_handle’ was not found"

    –"Report parameter ‘include_system_processes’ was not found"

    Any help available on this?

  10. cori says:

    David;

    thanks for the fix.  very helpful!

    cori

  11. romeolanuza@verizon.net says:

    Did i do it thr right way….!!!!!????? serever management……?????

  12. daddyev says:

    I am getting "The ‘version_string’ parameter is missing a value" when running the database_overview.rdl

    Does anyone have a fix for this problem?  H-E-L-P!!

  13. Naras says:

    Thanks. Good work.

    Naras

  14. Heinrich says:

    Hello,

    i have a problem when i click on any  blue region in the chart for the SQL CPU utilization on the performance dashboard where you normally would get further infos (reports for the last 15 minutes).

    There comes no repport but an Error: Arithmetic overflow error conferting expression to data type datetime.

    This happens on two different servers with SQL Server 2005 Enterprise Editions, but all other driil through is functioning. What’ s the problem, is it a problem in recent_cpu.rdl or performance_dashboard_main.rdl or in the called stored procedures. Please help, it is a really good tool, but not good when functioning only partly.

    Thanks for help

    Heinrich

  15. Lars D says:

    I also have problem when I click on the blue region for the CPU (CPU System Utilization), and it happens on only one server, other servers works fine

    Following error

    ———————————

    An error has occurred during report processing.

    Cannot read the next data row for the data set SESSION_REQUEST_ACTIVITY.

    For more information about this error navigate to the report server on the local server machine, or enable remote errors

    ———————————

    Any ideas how to fix it?

    Lars

  16. DKRoul says:

    Hi,

    I am facing an error saying ‘Arithmetic overflow error converting expression to data type datetime.’ In data base due to my following query.

    Then I tried with cast and convert function too, still I got the error.

    select   *

     from datetable

    where  cast((‘May 29 2007  6:30:00:000PM’ – endtime) as int) >=2

    and  cast((‘May 29 2007  6:30:00:000PM’ – endtime)  as int)<=3

    and  datetable_id  = 102

    order by datetable_id  desc

    I got this beacause of some bad ‘endtime’ data in datetable for datetable_id   102 : 5465-08-12 12:00:00.000.

    But I need to support all type of date here and the table is also huge. So I have this col as indexed.

    I thought of to use datediff func here. again I am not sure what will be the performance impact on my query, coz it will diff and convert to int and compare for each of the row.

    So can any body suggest how efficiently can i handle this?

    Thanks

    ~DKRoul

  17. Heinrich says:

    Hello,

    as i have wrote before (May 23, 2007) i wasn’t able to use the Performance Dashboard because of the described  failure. A week later the report functions without changing something. It works fine for some days until 08. June 07, then in the morning i want to look again in the chart for SQL CPU utilization and nothing functions again, but now i get the failure as described from other users, that is: Difference of two datetime columns caused overflow at runtime. I have implemented the fix as described by David, but it doesn’t help, i think there must be more bugs in the programming with datetime-conversion etc.

    Now again, i am not able to use this fantastic tool.

    Does anyone have a fix for this problem? Please help.

  18. Beatrice says:

    No bug.

    In my case it was an inconsistency in the language settings between the web server and SQL server (or SQL server user).

    Check that the user you’re using to browse the reports has british english as a language.

    Beatrice.

  19. Mic says:

    Hi,

    About the "Arithmetic overflow error converting expression to data type datetime." after clicking the blue-CPU-Line:

    This is an conversion error between the main and the recent_cpu report. You can solve this by changing the type of the "WithActivitySince" Parameter from String to DateTime (at the top of the XML file).

  20. Shahryar G. Hashemi says:

    Hi,

    I applied the fix as identified above back in May 2007 to my setup.sql script and it was working for a short time.  However now I am receiving the same "Difference of two datetime columns caused overflow at runtime." error.  I have reloaded the fixed setup.sql script on my box and I continue to get the error.  The problem happens when clicking on the CPU utilization graph to see what processes were running on a given server at a specific time.

    Can anyone help?

  21. David says:

    I’m getting the parameter issues mentioned by Ron above.  Any help?

  22. David says:

    Nevermind.   Duh…should have read directions.  For others…open through the performance_dashboard_main.rdl which supplies params.

  23. Randy In Marin says:

    The datetime value is days – fractional part is time.  86400000 = 24 * 60 * 60 * 1000 converts days to ms.  This should should avoid overflow here and in most cases.  I have not tried extreme dates – perhaps the difference won’t be in the range of a valid datetime?  

    CAST(FLOOR(86400000 * CAST(getdate() – login_time as float)) as bigint) — ms

  24. Microsoft SQL Server 2005 Performance Dashboard Reports предназначен для контроля и получения необходимой

  25. Shahryar G. Hashemi says:

    Randy,

    I saw your update.  Do you know where I need to do the CAST update?  Also when will Microsoft update the Performance Dashboard?

  26. Don says:

    I’m getting the "Difference of two datetime columns caused overflow at runtime" error when trying to drill down into the Blue SQL Server CPU usage on the main dashboard screen.  I understand the problem with uptime (server has been up for more than 24 days), datediff, and ms but I’m having some problems tracking down where the change from ms to ss needs to be made for this drill down functionality to work again.  I tried a profiler trace, but the only procedure I see executing is the usp_CheckDependencies.  After that I just see a bunch of execute_sql statements.

    Any help would be appreciated

  27. Vipin says:

    Any idea if there are any issues while converting from timestamp to big int???

  28. Shahryar G. Hashemi says:

    Hi,

    I do where the following change in the datetime difference should be made:

    CAST(FLOOR(86400000 * CAST(getdate() – login_time as float)) as bigint) — ms

    I get the error now on any SQL Server environment where connections have been online for more than a month.

    Can someone please help me.  Or can you let me know when the Performance Dashboard will be updated?

    Shahryar

  29. Marios Philippopoulos says:

    Regarding the "The ‘version_string’ parameter is missing a value" when running the database_overview.rdl" error.

    A quick and dirty fix is to delete all references to version_string in database_overview.rdl. Version_string (1.0) is the version of DashboardReports functionality. Not really useful to have it there anyway…

  30. Shahryar G. Hashemi says:

    Hi,

    I have posted 3 times indicating the error with datetime difference but no one seems to have an answer.  Is this product even supported by Microsoft?  Will there be an update or basically we have it as is until SQL 2008 is out?

    I would really like to know.

    Shahryar

  31. Dak Peoples says:

    @ David

    Thanks for your fix for SQL Server 2005 Performance Dashboard Setup.SQL by changing the following line from:

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

    to:

    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,

    Worked perfectly to resolve the "Difference of two datetime columns caused overflow at runtime" error.  

    -Dak

  32. harryaya says:

    Great! The fix works perfect on "Difference of two datetime columns caused overflow at runtime" error.

  33. zerep says:

    Hello,

    i have the same problem that Heinrich posted on May 16,

    "when i click on any  blue region in the chart for the SQL CPU utilization on the performance dashboard where you normally would get further infos (reports for the last 15 minutes).

    There comes no repport but an Error: Arithmetic overflow error conferting expression to data type datetime.

    This happens on two different servers with SQL Server 2005 Enterprise Editions, but all other driil through is functioning. What’ s the problem, is it a problem in recent_cpu.rdl or performance_dashboard_main.rdl or in the called stored procedures. Please help, it is a really good tool, but not good when functioning only partly."

    Thanks for help

  34. Anthony Robinson says:

    Has anyone found a fix for this particualr error:

    An error has occurred during report processing.

    Cannot read the next data row for the data set SESSION_REQUEST_ACTIVITY.

    For more information about this error navigate to the report server on the local server machine, or enable remote errors

    I applied the fix for the conversion issue, worked great….but still would like to get this other one knocked out.

    Thanks!!

  35. Anthony Robinson says:

    Did anyone ever find a solution to this issue:

    An error has occurred during report processing.

    Cannot read the next data row for the data set SESSION_REQUEST_ACTIVITY.

    For more information about this error navigate to the report server on the local server machine, or enable remote errors

    It’s a different query altogether from the fix that was listed.

    Thanks!

  36. JornNystad says:

    Thank you for an exellent tool!

    Does anyone know if its possible to exclude replication queries from the report?

    Thanx

    Jørn Nystad

  37. I have a fix for the ability to drill down into the blue zone when you have a server which has been running for 24 or more days:

    Go to the recent_cpu.rdl file located in (default):

    C:Program FilesMicrosoft SQL Server90ToolsPerformanceDashboard

    go to line number 3271, you should see the "From" statement of a sql query…

    paste what follows thru line 3306 of the original file…

    /*

    (PS… save your ORIGINAL FILE)!!!

    caveat emptor!!!

    Don’t haze me if this doesn’t work for you!

    It works for me!

    */

    from (select s.session_id,

    r.request_id,

    s.login_time,

    — s.host_name,

    s.program_name,

    s.login_name,

    s.status as session_status,

    s.last_request_start_time,

    s.last_request_end_time,

    s.cpu_time as session_cpu_time,

    r.cpu_time as request_cpu_time,

    — s.logical_reads as session_logical_reads,

    — r.logical_reads as request_logical_reads,

    r.start_time as request_start_time,

    r.status as request_status,

    r.command,

    master.dbo.fn_varbintohexstr(r.sql_handle) as sql_handle,

    master.dbo.fn_varbintohexstr(r.plan_handle) as plan_handle,

    r.statement_start_offset,

    r.statement_end_offset,

    case

    — Steve: Fixes begin here:

    when convert(bigint, CAST ( DATEDIFF ( minute, start_time, getdate()) AS BIGINT)*60000 + DATEDIFF ( millisecond,

    DATEADD ( minute,DATEDIFF ( minute, start_time, getdate() ), Start_time ),getdate() ))

    &gt; 0

    then convert(float, r.cpu_time) / convert(bigint, CAST ( DATEDIFF ( minute, start_time, getdate()) AS BIGINT)*60000

    + DATEDIFF ( millisecond, DATEADD ( minute, DATEDIFF ( minute, start_time, getdate() ), Start_time ),getdate() )) else convert(float, 1.0) end

    as avg_request_cpu_per_ms,

    isnull (datediff(ms, case when r.start_time &lt; @WithActivitySince then @WithActivitySince else r.start_time end, getdate()), 0)

    as request_ms_in_window,

    case when s.login_time &gt; getdate() then convert(float, s.cpu_time) / (datediff(dd, s.login_time, getdate()) * cast(86400000 as bigint) + datediff(ms, dateadd(dd, datediff(dd, s.login_time, getdate()), s.login_time), getdate())) else convert(float, 1.0)

    end as avg_session_cpu_per_ms,

    convert(bigint,isnull(datediff(s, case when s.login_time &lt; @WithActivitySince then @WithActivitySince else s.login_time end, case when r.request_id is null then s.last_request_end_time else getdate() end), 0)  )* 1000

    as session_ms_in_window

    from sys.dm_exec_sessions s

    left join sys.dm_exec_requests as r on s.session_id = r.session_id  and s.session_id = 1

    — Steve: Fixes end here

    where (s.last_request_end_time &gt; @WithActivitySince or r.request_id is not null)) as d

    where (avg_request_cpu_per_ms * request_ms_in_window) + (avg_session_cpu_per_ms * session_ms_in_window) &gt; 1000.0</CommandText>

           <QueryParameters>

             <QueryParameter Name="@WithActivitySince">

               <Value>=Parameters!WithActivitySince.Value</Value>

             </QueryParameter>

           </QueryParameters>

           <DataSourceName>DataSource1</DataSourceName>

         </Query>

  38. …potreste avere un errore nella visualizzazione dei report della Performance Dashboard. Questo è dovuto

  39. Vince says:

    Great solution David. Microsoft needs to hire some people like you.

  40. Anthony Robinson says:

    I have posted this question to about a dozen different boards and have not received any response…does Microsoft even support this thing or read the posts people put out there?!?

    I originally got the conversion error. I applied the fix that was mentioned. Things worked fine. I am nor getting this:

    An error has occurred during report processing.

    Cannot read the next data row for the data set SESSION_REQUEST_ACTIVITY.

    Difference of two datetime columns caused overflow at runtime.

    Does ANYONE know what this is and where I can go to fix it???

  41. Russ says:

    I would like to let some of my developers see the dashboard.  I ahve not given them SA  rights.  When they try to view the rep[orts they get ‘Error  you do not have permission to run sys.traces .

    My question is how do I grant them permissions to the sys. schema without granting SA rights?

  42. Brad says:

    The main report has a table for user requests and user sessions?  What are the threshold figures for the items in this table?

    The expensive queries section of the screenshot has several links.  Are the stats collected for queries ran on a db where the sql code is in the programming language and not in TSQL?

  43. Michael Lacy says:

    It would be nice if the fixes to the setup.sql and to the recent_cpu.rdl were rolled-up into a new download msi. Or will these be fixed when SQL 2005 SP3 is released!?

  44. Microsoft SQL Server 2005 Performance Dashboard Reports предназначен для контроля и получения необходимой

  45. New Delhi says:

    I have same error after click on Blue part of System CPU Utilization graph on dash board. Please help as I have used given suggestion here and it didn't worked.

    Thanks in Advance.

  46. New Delhi says:

    I have same error after click on Blue part of System CPU Utilization graph on dash board. Please help as I have used given suggestion here and it didn't worked.

    Thanks in Advance.

  47. Donna says:

    Thank you David for the fix – also helped my problem.

  48. Richard says:

    These reports immediately gave me a datetime error, as others have described.  A pity MS have not fixed the bug even all these years later.