SQL Server - User Settable 对象
适用范围:SQL Server
通过 Microsoft SQL Server 中的可设置用户对象可以创建自定义计数器实例。 自定义计数器实例用于监视服务器上现有计数器没有监视到的方面,例如 SQL Server 数据库唯一具有的组件(例如,记录的客户定单数或产品目录)。
User Settable 对象包含 10 个 Query 计数器实例:从用户计数器 1 到用户计数器 10 。 这些计数器通过 sp_user_counter10
映射到 SQL Server 存储过程 sp_user_counter1
。 由于这些存储过程由用户应用程序执行,因此,这些存储过程设置的值显示在系统监视器中。 计数器可以监视任何单一的整型值,例如,用于计算某产品在一天中获得的订单数的存储过程。
注意
系统监视器不会自动轮询用户计数器存储过程。 必须由一个用户应用程序明确执行用户计数器存储过程,以更新计数器值。 可以使用触发器自动更新计数器值。
下表说明了 SQL Server User Settable对象。
SQL Server User Settable 计数器 | 说明 |
---|---|
查询 | User Settable 对象包含 Query 计数器。 用户需要配置查询对象中的每个用户计数器。 每个计数器都是整数数据类型。 |
此表列出了 Query 计数器的 实例 。
Query 计数器实例 | 说明 |
---|---|
用户计数器 1 | 使用 sp_user_counter1 定义。 |
用户计数器 2 | 使用 sp_user_counter2 定义。 |
用户计数器 3 | 使用 sp_user_counter3 定义。 |
... | |
用户计数器 10 | 使用 sp_user_counter10 定义。 |
设置用户计数器值
要使用用户计数器存储过程,只需从自己的应用程序中执行它们,并用一个整型参数表示计数器的新值。 例如,若要将 用户计数器 1 的值设置为 10,执行下面的 Transact-SQL 语句:
EXECUTE dbo.sp_user_counter1 10;
用户计数器存储过程可从任何可以调用其他存储过程(例如自己的存储过程)的位置调用。 例如,可以创建以下存储过程来统计从某个 SQL Server 实例启动以来连接和尝试连接的次数:
DROP PROC My_Proc;
GO
CREATE PROC My_Proc
AS
EXECUTE dbo.sp_user_counter1 @@CONNECTIONS;
GO
@@CONNECTIONS 函数会返回从某个 SQL Server 实例启动以来连接或尝试连接的次数。 此值作为参数传递给 sp_user_counter1
存储过程。
重要
应使用户计数器存储过程中定义的查询尽可能简单。 执行排序或哈希操作等会占用大量内存的查询,或执行大量 I/O 操作的查询,开销会很大,并且会影响性能。
监视示例
使用 sys.dm_os_performance_counters 动态管理视图上的此 T-SQL 查询,开始浏览此对象中的计数器:
SELECT * FROM sys.dm_os_performance_counters
WHERE object_name LIKE '%User Settable%';
权限
存储过程 sp_user_counter
可供所有用户使用,但仅限于针对查询计数器。