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 可供所有用户使用,但仅限于针对查询计数器。