分享方式:


sys.dm_os_performance_counters (Transact-SQL)

適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)

針對伺服器所維護的每個效能計數器,各傳回一個資料列。 如需每個性能計數器的相關信息,請參閱 使用 SQL Server 物件

注意

若要從 Azure Synapse Analytics 或 Analytics Platform System (PDW) 呼叫此專案,請使用 名稱 sys.dm_pdw_nodes_os_performance_counters。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。

資料行名稱 資料類型 描述
object_name nchar(128) 此計數器所屬的類別。
counter_name nchar(128) 計數器的名稱。 若要取得計數器的詳細資訊,這是從使用 SQL Server 物件中的計數器清單中選取的主題名稱。
instance_name nchar(128) 計數器之特定實例的名稱。 通常包含資料庫名稱。
cntr_value bigint 計數器的目前值。

注意: 對於每秒計數器,此值是累計的。 速率值必須藉由以離散時間間隔取樣值來計算。 任兩個連續樣本值之間的差異等於所使用時間間隔的速率。
cntr_type int Windows 效能架構所定義的計數器類型。 如需性能計數器類型的詳細資訊,請參閱 Docs 或 Windows Server 上的 WMI 性能計數器類型 檔。
pdw_node_id int 適用於:Azure Synapse Analytics、Analytics Platform System (PDW)

此散發節點的標識碼。

備註

如果 SQL Server 安裝實例無法顯示 Windows 作業系統的性能計數器,請使用下列 Transact-SQL 查詢來確認性能計數器已停用。

SELECT COUNT(*) FROM sys.dm_os_performance_counters;  

如果傳回值為 0 個數據列,這表示性能計數器已經停用。 然後,您應該查看設定記錄檔並搜尋錯誤 3409, Reinstall sqlctr.ini for this instance, and ensure that the instance login account has correct registry permissions. 這表示性能計數器未啟用。 3409 錯誤之前的錯誤應該指出啟用性能計數器失敗的根本原因。 如需安裝記錄檔的詳細資訊,請參閱 檢視和讀取 SQL Server 安裝程式記錄檔

數據行值為 65792 的性能計數器 cntr_type 只會顯示最後觀察到值的快照集,而非平均值。

數據行值272696320或272696576性能計數器 cntr_type 會顯示樣本間隔每秒鐘完成的平均作業數目。 此類型的計數器會以系統時鐘刻度為單位測量時間。 例如,若要只針對 Buffer Manager:Lazy writes/secBuffer Manager:Checkpoint pages/sec 計數器取得最後一秒類似快照集的讀取,您必須比較兩個集合點之間的差異,這兩個收集點相距一秒。

數據行值537003264將子集與設定百分比的比例顯示的性能計數器 cntr_type 。 例如, Buffer Manager:Buffer cache hit ratio 計數器會比較快取點擊總數和快取查閱總數。 因此,若要只取得最後一秒的類似快照集的讀取,您必須比較目前值與兩個集合點之間相隔一秒的基底值(分母)之間的差異。 對應的基底值是數據行值1073939712的性能計數器Buffer Manager:Buffer cache hit ratio basecntr_type

數據行值1073874176性能計數器 cntr_type 會顯示平均處理的項目數目,以處理的專案與作業數目的比例。 例如,計數器會 Locks:Average Wait Time (ms) 比較每秒鎖定等候與每秒的鎖定要求,以顯示導致等候的每個鎖定要求的平均等候時間量(以毫秒為單位)。 因此,若要只取得最後一秒的類似快照集的讀取,您必須比較目前值與兩個集合點之間相隔一秒的基底值(分母)之間的差異。 對應的基底值是數據行值1073939712的性能計數器Locks:Average Wait Time Basecntr_type

資料庫引擎重新啟動之後,DMV 中的數據 sys.dm_os_performance_counters 不會保存。 使用 sys.dm_os_sys_info 中的 sqlserver_start_time 資料行,來尋找最近一次資料庫引擎啟動時間。

權限

在 SQL Server 和 SQL 受控執行個體上,需要 VIEW SERVER STATE 權限。

在 SQL 資料庫 基本、S0 和 S1 服務目標上,以及彈性集區中的資料庫,需要伺服器管理員帳戶、Microsoft Entra 系統管理員帳戶,或伺服器角色的成員##MS_ServerStateReader##資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 VIEW DATABASE STATE 權限或 ##MS_ServerStateReader## 伺服器角色的成員資格。

SQL Server 2022 及更新版本的權限

需要伺服器上的 VIEW SERVER PERFORMANCE STATE 權限。

範例

下列範例會傳回顯示快照集計數器值的所有性能計數器。

SELECT object_name, counter_name, instance_name, cntr_value, cntr_type  
FROM sys.dm_os_performance_counters
WHERE cntr_type = 65792 OR cntr_type = 272696320 OR cntr_type = 537003264;  

另請參閱

SQL Server 操作系統相關動態管理檢視 (Transact-SQL)
sys.sysperfinfo (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)