1. 程式人生 > 其它 >sql server效能計數器缺失,sql server找回丟失的效能計數器

sql server效能計數器缺失,sql server找回丟失的效能計數器

【問題】效能計數器DMV 只有幾行,甚至沒有

select * from sys.dm_os_performance_counters

如下圖,看右下角,只有57行,直接用安裝介質 修復也不行;

  

【解決方案】

轉自/參考官網:https://docs.microsoft.com/en-us/archive/blogs/pfelatam/sql-performance-counters-are-missing

有一次,當我使用通過效能監視器上的 SQL Server 計數器收集效能資料的工具提供服務時,當我嘗試檢視資料但沒有任何資訊時,我感到很驚訝。

他們我直接在效能監視器上檢查了 SQL Server 計數器,但計數器不在列表中。

這就是我決定寫這篇部落格的原因,以瞭解如果效能監視器上的 SQL Server 計數器消失該怎麼辦。

(1)通過介質修復sql server檔案

  恢復 SQL 計數器的正確且最簡單的方法是通過新增/刪除程式修復 SQL Server 二進位制檔案。

  但是,這將需要 SQL 例項停機(如果您使用的是叢集,則可以切換到另一個節點)

因此,還有另一種選擇,您可以執行以下步驟來恢復此計數器:

(2)過載該資料庫例項的效能計數器

首先,您需要開啟一個具有管理許可權的命令提示符控制檯。

轉到要修復的 SQL 例項上的目錄 BINN(例如:C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn)

現在為了避免任何不一致,使用 unlodctr MSSQLSERVER 消除 SQL 計數器的任何剩餘部分,對於命名例項,使用格式 MSSQL$NombreInstancia

現在要載入計數器,您應該使用以下命令

lodctr perf-MSSQLSERVERsqlctr.ini
# perf-MSSQL$NombreInstanciasqlctr.ini

如果您使用的是命名例項,您應該使用這種格式 perf-MSSQL$NombreInstanciasqlctr.ini,您可以執行該命令兩次以檢查計數器已新增。

注意:我嘗試了 sqlctr.ini,但它不起作用。然後在我嘗試 perf-mssqlserversqlctr.ini 之後,它起作用了。

現在您應該使用以下命令重新啟動遠端登錄檔和效能日誌和警報服務:

net stop "Remote Registry" && net start "Remote Registry"

net stop "Performance Logs & Alerts" && net start " Performance Logs & Alerts "

# 這個也可以寫成 net stop pla && net start pla

注意:如果 mssqlserver 的計數器:buffer cache hit ratio = 0,重啟 mssql 服務,則該值將等於 100。

如果您使用前面的過程來恢復 SQL Server 群集上的 SQL 計數器,則應在兩個節點上重建群集,當您重建計數器時,活動 SQL 例項必須位於節點上。

(3)通過登錄檔

如果執行上述步驟後 SQL Counters 沒有出現,則需要檢視登錄檔配置單元和登錄檔項(不建議在登錄檔級別進行任何更改,否則可能會導致作業系統不穩定。如果如果您選擇進行這些更改,您應該有作業系統和登錄檔的備份,以便在必要時恢復它),以下注冊表項應該存在並且具有有效的配置。

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\<<service name>>\Performance]

Library
Open
Collect
Close
PerfIniFile

您還應該檢查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib 中是否有一個名為 Disable Performance Counters 的鍵,如果配置為 1,則應配置為 0。這應該允許您重建登錄檔計數器和幫助檔案。

現在可能需要或不需要重建 SQL 和/或作業系統計數器,在 perfmon 上查詢 SQL 計數器,如果它們不存在,則使用前面的步驟重建,然後使用以下命令重建所有作業系統計數器。

cd %systemroot%\system32

/R

您應該考慮的另一個注意事項是在 Windows Server 64 位環境中執行 SQL Server 32 位時

我希望這篇文章對您有所幫助,請記住,我們的部落格上有大量好文章可以幫助您解決許多 SQL Server 主題以及如何解決一些問題。下篇文章見!

(4)命令總結文件

預設例項為: MSSQLSERVER

  例如:unlodctr MSSQLSERVER

如果是命名例項:MSSQLSERVER2

  則:unlodctr MSSQL$MSSQLSERVER2