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 User Settable 对象。
SQL Server 用户可设置计数器 | DESCRIPTION |
---|---|
查询 | User Settable 对象包含查询计数器。 用户在查询对象中配置 用户计数器 。 |
下表描述了查询计数器的实例。
查询计数器实例 | DESCRIPTION |
---|---|
用户计数器 1 | 使用 sp_user_counter1 定义。 |
用户计数器 2 | 使用 sp_user_counter2 定义。 |
用户计数器 3 | 使用 sp_user_counter3 定义。 |
... | |
用户计数器 10 | 使用 sp_user_counter10 定义。 |
若要使用用户计数器存储过程,请使用表示计数器新值的单个整数参数从自己的应用程序中执行这些存储过程。 例如,若要将 用户计数器 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 可供所有用户使用,但可以限制任何查询计数器。