ALTER RESOURCE GOVERNOR (Transact-SQL)

适用于:SQL ServerAzure SQL 托管实例

此语句用于在 SQL Server 中执行以下资源调控器操作:

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

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

  • 配置传入请求的分类。

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

  • 设置每个磁盘卷的最大 I/O 操作数。

Transact-SQL 语法约定

语法

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

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

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

  • 不执行分类器函数。

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

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

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

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

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

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

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

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

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

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

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

重要

必须发出 ALTER RESOURCE GOVERNOR RECONFIGURE 才能使任何配置更改生效。

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

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

MAX_OUTSTANDING_IO_PER_VOLUME = value
适用于:SQL Server 2014 (12.x) 及更高版本。

设置每个磁盘卷的最大排队 I/O 操作数。 这些 I/O 操作可以是任何大小的读取或写入。 MAX_OUTSTANDING_IO_PER_VOLUME 的最大值为 100。 它不是百分比。 此设置用于将 IO 资源调控优化为磁盘卷的 IO 特性。 此设置进行系统级安全检查,它使 SQL Server 可满足资源池的最小 IOPS,即使其他池将 MAX_IOPS_PER_VOLUME 设置为无限也是如此。 有关 MAX_IOPS_PER_VOLUME 的详细信息,请参阅 CREATE RESOURCE POOL

备注

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

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

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

权限

需要 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;  

E. 设置 MAX_OUTSTANDING_IO_PER_VOLUME 选项

以下示例将 MAX_OUTSTANDING_IO_PER_VOLUME 选项设置为 20。

ALTER RESOURCE GOVERNOR  
WITH (MAX_OUTSTANDING_IO_PER_VOLUME = 20);   

另请参阅

CREATE RESOURCE POOL (Transact-SQL)
ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL)
CREATE EXTERNAL RESOURCE POOL (Transact-SQL)
DROP EXTERNAL RESOURCE POOL (Transact-SQL)
ALTER EXTERNAL RESOURCE POOL (Transact-SQL)
CREATE WORKLOAD GROUP (Transact-SQL)
ALTER WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL)
资源调控器
sys.dm_resource_governor_workload_groups (Transact-SQL)
sys.dm_resource_governor_resource_pools (Transact-SQL)