[SQL]A data source instance has not been supplied for the data source 'CHECK_DEPENDENCIES'.

Performance Dashboard Reports 中的 System CPU Utilization 圖中再點進去看 recent_cpu.rdl 報表時,
會發生「A data source instance has not been supplied for the data source 'CHECK_DEPENDENCIES'.」的錯誤!
要如何解決呢?

在 Performance Dashboard Reports 中的 System CPU Utilization 圖中再點進去看 recent_cpu.rdl 報表時,會發生「A data source instance has not been supplied for the data source 'CHECK_DEPENDENCIES'.」的錯誤!

image

image

 

在 Profiler 之中可發現它是執行以下的SQL,

exec sp_executesql @stmt=N'exec msdb.MS_PerfDashboard.usp_QueryStatsRecentActivity @WithActivitySince'
,@params=N'@WithActivitySince NVarChar(max)'
,@WithActivitySince=N'2014/7/7 下午 01:21:59'

 

而執行的錯誤是,Error converting data type nvarchar(max) to datetime.

image

 

因為 usp_QueryStatsRecentActivity 的參數是DateTime,所以'2014/7/7 下午 01:21:59'無法轉成 DateTime。

而 @WithActivitySince 的參數值是又從 performance_dashboard_main.rdl 中傳過來的,內容如下,

<Drillthrough>
    <ReportName>recent_cpu</ReportName>
    <Parameters>
      <Parameter Name="WithActivitySince">
        <Value>=min(Fields!EventTime.Value, "CPU_UTILIZATION_HISTORY")</Value>
      </Parameter>
      <Parameter Name="version_string">
        <Value>=Parameters!version_string.Value</Value>
      </Parameter>
    </Parameters>
</Drillthrough>

 

如果我們讓 '2014/7/7 下午 01:21:59' 變成 '2014/7/7 01:21:59' 應該就可以順利被轉成 DateTime吧!

所以,就將它加上Format,就可以了! 如下,

<Value>=format(min(Fields!EventTime.Value, "CPU_UTILIZATION_HISTORY"), "yyyy/MM/dd hh:mm:ss")</Value>

 

參考資料

dbe | Performance Dashboard 2012

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^