ALTER RESOURCE GOVERNOR (Transact-SQL)

该命令用于执行以下操作:

  • 应用在发出 CREATE|ALTER|DROP WORKLOAD GROUP 或 CREATE|ALTER|DROP RESOURCE POOL 语句时指定的配置更改。

  • 启用或禁用资源调控器。

  • 配置传入请求的分类。

  • 重置工作负荷组和资源池统计信息。

主题链接图标Transact-SQL 语法约定

语法

ALTER RESOURCE GOVERNOR 
    { DISABLE | RECONFIGURE }
|
        WITH ( CLASSIFIER_FUNCTION = { schema_name.function_name | NULL } )
|
    RESET STATISTICS
[ ; ]

参数

术语

定义

DISABLE | RECONFIGURE

DISABLE 可禁用资源调控器。禁用资源调控器会产生下列结果:

  • 不执行分类器函数。

  • 所有新连接被自动分类到默认组中。

  • 系统发起的请求被分类到内部工作负荷组中。

  • 所有现有的工作负荷组和资源池设置被重置为其默认值。在这种情况下,到达限制时不触发任何事件。

  • 正常的系统监视不受影响。

  • 可以进行配置更改,但是这些更改直到启用资源调控器之后才会生效。

  • 在重新启动 SQL Server 时,资源调控器不会加载其配置,而是只具有默认的和内部的组和池。

当未启用资源调控器时,RECONFIGURE 可启用资源调控器。启用资源调控器会产生下列结果:

  • 为新连接执行分类器函数,以便可以将其工作负荷分配到工作负荷组。

  • 遵守并强制执行资源调控器配置中指定的资源限制。

  • 禁用资源调控器时所做的任何配置更改会影响在启用资源调控器之前就已存在的请求。

当资源调控器正在运行时,RECONFIGURE 可应用执行 CREATE|ALTER|DROP WORKLOAD GROUP 或 CREATE|ALTER|DROP RESOURCE POOL 语句时请求的任何配置更改。

重要说明重要提示
必须发出 ALTER RESOURCE GOVERNOR RECONFIGURE 才能使任何配置更改生效。

CLASSIFIER_FUNCTION = { schema_name.function_name| NULL }

注册由 架构名称.函数名称 指定的分类函数。该函数将每个新会话进行分类并将会话请求和查询分配到工作负荷组。如果使用 NULL,新会话将自动分配到默认工作负荷组。

RESET STATISTICS

重置有关所有工作负荷组和资源池的统计信息。有关详细信息,请参阅 sys.dm_resource_governor_workload_groups (Transact-SQL)sys.dm_resource_governor_resource_pools (Transact-SQL)

注释

ALTER RESOURCE GOVERNOR DISABLE、ALTER RESOURCE GOVERNOR RECONFIGURE 和 ALTER RESOURCE GOVERNOR RESET STATISTICS 无法在用户事务内部使用。

RECONFIGURE 参数是资源调控器语法的一部分,不应与 RECONFIGURE 混淆,后者是一个单独的 DDL 语句。

建议您先了解资源调控器的状态,然后再执行 DDL 语句。有关详细信息,请参阅资源调控器状态

权限

需要 CONTROL SERVER 权限。

示例

A. 启动资源调控器

初次安装 SQL Server 时,资源调控器处于禁用状态。以下示例启动资源调控器。执行语句后,资源调控器将运行并且可使用预先定义的工作负荷组和资源池。

ALTER RESOURCE GOVERNOR RECONFIGURE;

B. 将新会话分配到默认组

以下示例通过从资源调控器配置删除任何现有分类器函数,将所有新会话分配到默认工作负荷组。如果没有函数指定为分类器函数,则所有新会话都将分配到默认工作负荷组。此更改仅应用于新会话。现有会话不受影响。

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;

C. 创建和注册分类器函数

以下示例创建一个名为 dbo.rgclassifier_v1 的分类器函数。该函数基于用户名或应用程序名称对每个新会话进行分类,并且将会话请求和查询分配到特定工作负荷组。未映射到指定用户或应用程序名称的会话将分配到默认工作负荷组。然后,注册分类器函数并应用配置更改。

-- Store the classifier function in the master database.
USE master;
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE FUNCTION dbo.rgclassifier_v1() RETURNS sysname 
WITH SCHEMABINDING
AS
BEGIN
-- Declare the variable to hold the value returned in sysname.
    DECLARE @grp_name AS sysname
-- If the user login is 'sa', map the connection to the groupAdmin
-- workload group. 
    IF (SUSER_NAME() = 'sa')
        SET @grp_name = 'groupAdmin'
-- Use application information to map the connection to the groupAdhoc
-- workload group.
    ELSE IF (APP_NAME() LIKE '%MANAGEMENT STUDIO%')
        OR (APP_NAME() LIKE '%QUERY ANALYZER%')
            SET @grp_name = 'groupAdhoc'
-- If the application is for reporting, map the connection to
-- the groupReports workload group.
    ELSE IF (APP_NAME() LIKE '%REPORT SERVER%')
        SET @grp_name = 'groupReports'
-- If the connection does not map to any of the previous groups,
-- put the connection into the default workload group.
    ELSE
        SET @grp_name = 'default'
    RETURN @grp_name
END
GO
-- Register the classifier user-defined function and update the 
-- the in-memory configuration.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=dbo.rgclassifier_v1);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO

D. 重置统计信息

下面的示例重置所有工作负荷组和池统计信息。

ALTER RESOURCE GOVERNOR RESET STATISTICS;