Microsoft SQL Server 中的 User Settable 物件可讓您建立自定義計數器實例。 使用自定義計數器實例來監視現有計數器未監視的伺服器層面,例如 SQL Server 資料庫特有的元件(例如,記錄的客戶訂單數目或產品庫存)。
User Settable 物件包含10個查詢計數器實例:從用戶計數器1到用戶計數器10。 這些計數器會從 SQL Server 預存程式 sp_user_counter1 映射至 sp_user_counter10。 由於這些預存程式是由使用者應用程式執行,預存程式所設定的值會顯示在系統監視器中。 計數器可以監視任何單一整數值(例如,預存程式,可計算特定產品在一天內的訂單數目)。
備註
系統監視器不會自動輪詢用戶計數器預存程式。 使用者應用程式必須明確執行這些值,才能更新計數器值。 使用觸發程式自動更新計數器的值。 例如,若要建立計數器來監視數據表中的數據列數目,請在執行下列語句的數據表上建立 INSERT 和 DELETE 觸發程式: SELECT COUNT(*) FROM table。 每當觸發程式因為資料表上發生 INSERT 或 DELETE 作業而被觸發時,系統監視器計數器就會自動更新。
下表描述 SQL Server 使用者可設定 物件。
| SQL Server 使用者可設定計數器 | 說明 |
|---|---|
| 查詢 | User Settable 物件包含查詢計數器。 用戶設定查詢物件內的 User計數器 。 |
下表描述查詢計數器的實例。
| 查詢計數器實例 | 說明 |
|---|---|
| 用戶計數器 1 | 使用 sp_user_counter1 定義。 |
| 用戶計數器 2 | 使用 sp_user_counter2 定義。 |
| 用戶計數器 3 | 使用 sp_user_counter3 定義。 |
| ... | |
| 用戶計數器 10 | 使用 sp_user_counter10 定義。 |
若要使用用戶計數器預存程式,請使用代表計數器新值的單一整數參數,從您自己的應用程式執行它們。 例如,若要將 User計數器1 設定為值10,請執行下列 Transact-SQL 語句:
EXECUTE sp_user_counter1 10
您可以從任何其他預存程式呼叫用戶計數器預存程式,例如您自己的預存程式。 例如,您可以建立下列預存程式來計算自 SQL Server 實例啟動以來的連線數目和嘗試連線數目:
DROP PROC My_Proc
GO
CREATE PROC My_Proc
AS
EXECUTE sp_user_counter1 @@CONNECTIONS
GO
@@CONNECTIONS函式會傳回自 SQL Server 實例啟動之後的連線數或嘗試連接數目。 這個值會以 參數的形式傳遞至 sp_user_counter1 預存程式。
這很重要
盡可能簡化用戶計數器預存程式中定義的查詢。 執行大量排序或哈希作業的記憶體密集型查詢,或執行大量 I/O 的查詢,執行成本高昂,而且可能會影響效能。
權限
sp_user_counter 可供所有使用者使用,但可以限制任何查詢計數器。