sp_configure (Transact-SQL)

显示或更改当前服务器的全局配置设置。

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

语法

sp_configure [ [ @configname = ] 'option_name' 
    [ , [ @configvalue = ] 'value' ] ]

参数

  • [ @configname= ] 'option_name'
    配置选项的名称。 option_name 的数据类型为 varchar(35),默认值为 NULL。 SQL Server 数据库引擎能够识别构成配置名称的任何唯一字符串。 如果未指定该参数,则返回选项的完整列表。

    有关可用配置选项及其设置的信息,请参阅服务器配置选项

  • [ @configvalue= ] 'value'
    新的配置设置。 value 的数据类型为 int,默认值为 NULL。 最大值取决于各个选项。

    若要查看每个选项的最大值,请参阅 sys.configurations 目录视图的 maximum 列。

返回代码值

0(成功)或 1(失败)

结果集

如果不带参数执行,则 sp_configure 返回的结果集有五列,并按字母升序排列选项(如下表所示)。

config_valuerun_value 的值并不自动等价。 使用 sp_configure 更新配置设置后,系统管理员必须使用 RECONFIGURE 或 RECONFIGURE WITH OVERRIDE 更新正在运行的配置值。 有关详细信息,请参见“备注”部分。

列名

数据类型

说明

name

nvarchar(35)

配置选项的名称。

minimum

int

配置选项的最小值。

maximum

int

配置选项的最大值。

config_value

int

通过使用 sp_configure 设置的配置选项值(sys.configurations.value 中的值)。 有关这些选项的详细信息,请参阅服务器配置选项sys.configurations (Transact-SQL)

run_value

int

配置选项的当前运行值(sys.configurations.value_in_use 中的值)。

有关详细信息,请参阅 sys.configurations (Transact-SQL)

注释

使用 sp_configure 可以显示或更改服务器级别的设置。 若要更改数据库级别设置,请使用 ALTER DATABASE。 若要更改仅影响当前用户会话的设置,请使用 SET 语句。

更新运行的配置值

为 option 指定新 value 时,结果集的 config_value 列中将显示该值。 该值最初与 run_value 列中的值不同,后者显示当前运行的配置值。 若要更新 run_value 列中的运行配置值,系统管理员必须运行 RECONFIGURE 或 RECONFIGURE WITH OVERRIDE。

RECONFIGURE 和 RECONFIGURE WITH OVERRIDE 对每个配置选项都有效。 但是,基本 RECONFIGURE 语句会拒绝处于合理范围之外或可能导致选项冲突的任何选项值。 例如,如果 recovery interval 的值大于 60 分钟,或 affinity mask 的值与 affinity I/O mask 的值重叠,则 RECONFIGURE 会生成错误。 与此相反,RECONFIGURE WITH OVERRIDE 则接受具有正确数据类型的任何选项值,并使用指定的值强制进行重新配置。

注意事项注意

不合适的选项值会给服务器实例的配置造成不利影响。 请谨慎使用 RECONFIGURE WITH OVERRIDE。

RECONFIGURE 语句可以动态更新某些选项,而其他选项的更新则需要停止服务器再重新启动才能实现。 例如,在数据库引擎中会动态更新 min server memorymax server memory 服务器内存选项,所以无需重新启动服务器便可更改这两个选项。 与此相反,重新配置 fill factor 选项的运行值时,则需要重新启动数据库引擎。

对某个配置选项运行 RECONFIGURE 后,可通过执行 sp_configure 'option_name' 来查看是否已动态更新了该选项。 对于动态更新的选项而言,run_value 列和 config_value 列的值应匹配。 还可以通过查看 sys.configurations 目录视图的 is_dynamic 列来确定哪些选项是动态的。

注意注意

如果为选项指定的 value 值过高,则 run_value 列将反映这样的事实:数据库引擎默认使用动态内存,而不使用无效设置。

有关详细信息,请参阅 RECONFIGURE (Transact-SQL)

高级选项

有些配置选项(例如 affinity maskrecovery interval)被指定为高级选项。 默认情况下,无法查看和更改这些选项。 若要使这些选项可用,请将 Show Advanced Options 配置选项设置为 1。

有关配置选项及其设置的详细信息,请参阅服务器配置选项

权限

默认情况下,所有用户都具备不带参数或仅带第一个参数的 sp_configure 的执行权限。 若要执行带两个参数的 sp_configure 以更改配置选项或运行 RECONFIGURE 语句,则必须具备 ALTER SETTINGS 服务器级别的权限。 ALTER SETTINGS 权限由 sysadminserveradmin 固定服务器角色隐式持有。

示例

A.列出高级配置选项

以下示例显示如何设置并列出所有的配置选项。 先将 show advanced option 设置为 1,便可显示高级配置选项。 更改该选项后,不带参数执行 sp_configure 将会显示全部配置选项。

USE master;
GO
EXEC sp_configure 'show advanced option', '1';

以下是显示的消息:“配置选项 'show advanced options' 已从 0 改为 1。 请运行 RECONFIGURE 语句进行安装。”

运行 RECONFIGURE 并显示全部配置选项:

RECONFIGURE;
EXEC sp_configure;

B.更改配置选项

以下示例将系统 recovery interval 设置为 3 分钟。

USE master;
GO
EXEC sp_configure 'recovery interval', '3';
RECONFIGURE WITH OVERRIDE;

请参阅

参考

RECONFIGURE (Transact-SQL)

SET 语句 (Transact-SQL)

ALTER DATABASE (Transact-SQL)

系统存储过程 (Transact-SQL)

sys.configurations (Transact-SQL)

概念

服务器配置选项