動態管理檢視和函數 (Transact-SQL)
動態管理檢視和函數傳回伺服器狀態資訊,這項資訊可用來監視伺服器執行個體的健全狀況、診斷問題和調整效能。
重要事項 |
---|
動態管理檢視和函數傳回內部實作特定狀態資料。 其結構描述和傳回的資料在 SQL Server 的未來版本中可能會改變。 因此,未來版本中的動態管理檢視和函數不一定與這個版本中的動態管理檢視和函數相容。 例如,在 SQL Server 的未來版本中,Microsoft 可能會在資料行清單結尾加入資料行,藉以擴充任何動態管理檢視的定義。 我們建議您不要在實際執行的程式碼中使用 SELECT * FROM dynamic_management_view_name 語法,因為傳回的資料行數可能會變更和破壞應用程式。 |
動態管理檢視和函數有兩種類型:
伺服器範圍的動態管理檢視和函數。 這些都需要伺服器的 VIEW SERVER STATE 權限。
資料庫範圍的動態管理檢視和函數。 這些都需要資料庫的 VIEW DATABASE STATE 權限。
查詢動態管理檢視
動態管理檢視可使用兩部分、三部分或四部分名稱在 Transact-SQL 陳述式中參考。 另一方面,動態管理函數可使用兩部分或三部分名稱在 Transact-SQL 陳述式中參考。 動態管理檢視和函數不能使用一部分名稱在 Transact-SQL 陳述式中參考。
所有動態管理檢視和函數都存在於 sys 結構描述中,並遵照這個命名慣例 dm_*。 當您使用動態管理檢視或函數時,必須使用 sys 結構描述來加上檢視或函數名稱的前置詞。 例如,若要查詢 dm_os_wait_stats 動態管理檢視,請執行下列查詢:
SELECT wait_type, wait_time_ms
FROM sys.dm_os_wait_stats;
GO
必要權限
若要查詢動態管理檢視或函數,需要物件的 SELECT 權限和 VIEW SERVER STATE 或 VIEW DATABASE STATE 權限。 這可讓您選擇性地限制使用者的存取或登入到動態管理檢視和函數。 若要這麼做,先在 master 中建立使用者,然後在您不要他們存取的動態管理檢視或函數上拒絕使用者 SELECT 權限。 在此之後,不論使用者的資料庫內容如何,使用者將無法從這些動態管理檢視或函數中選取。
[!附註]
因為以 DENY 的優先順序為準,如果已授與使用者 VIEW SERVER STATE 權限,但拒絕 VIEW DATABASE STATE 權限,則使用者可以查看伺服器層級資訊,但不能查看資料庫層級資訊。
本章節內容
動態管理檢視和函數已組織成下列類別目錄。