Transact-SQL 参考

sp_dboption

显示或更改数据库选项。不能在 master tempdb 数据库上使用 sp_dboption。向后兼容性支持 sp_dboption。使用 ALTER DATABASE 设置数据库选项。

语法

sp_dboption [ [ @dbname = ] 'database' ]
    [ , [ @optname = ] 'option_name' ]
    [ , [ @optvalue = ] 'value' ]

参数

[@dbname =] 'database'

在其中设置指定选项的数据库的名称。database 的数据类型为 sysname,默认值为 NULL。

[@optname =] 'option_name'

要设置的选项的名称。没有必要输入完整的选项名称。Microsoft® SQL Server™ 可识别名称中任何独有的部分。如果选项名称包含空格或者关键字,请将选项名称用引号引起来。如果省略此参数,sp_dboption 将列出处于打开状态的选项。option_name 的数据类型为 varchar(35),默认值为 NULL。

[@value =] 'value'

option_name 的新设置。如果省略此参数,sp_dboption 将返回当前设置。value 可以是 truefalseon offvalue 的数据类型为 varchar(10),默认值为 NULL。

返回代码值

0(成功)或 1(失败)

结果集

如果没有提供参数,则结果集如下。

列名 数据类型 描述
Settable database options nvarchar(35) 所有可设置的数据库选项。

如果 database 是唯一的参数,则结果集如下。

列名 数据类型 描述
The following
options are set:
nvarchar(35) 为数据库设置的选项。

如果提供 option_name,则结果集如下。

列名 数据类型 描述
OptionName nvarchar(35) 选项的名称。
CurrentSetting char(3) 选项是处于打开状态还是处于关闭状态。

如果提供 valuesp_dboption 将不返回结果集。

注释

下面是由 sp_dboption 设置的选项。有关每个选项的更多信息,请参见设置数据库选项。

选项 描述
auto create statistics 当为 true 时,优化查询所需的任何缺少的统计将在优化过程中自动生成。有关更多信息,请参见 CREATE STATISTICS
auto update statistics 当为 true 时,优化查询所需的任何过期的统计将在优化过程中自动生成。有关更多信息,请参见 UPDATE STATISTICS
autoclose 当为 true 时,数据库完全关闭,其资源在最后一个用户注销后释放。
autoshrink 当为 true 时,数据库文件将成为自动周期性收缩的候选文件。
ANSI null default 当为 true 时,CREATE TABLE 遵循 SQL-92 规则以决定列是否允许为空值。
ANSI nulls 当为 true 时,所有对空值的比较都取值 UNKNOWN。当为 false 时,如果都为 NULL,则对空值的非 UNICODE 值比较取值 TRUE。
ANSI warnings 当为 true 时,如果出现诸如"被零除"情况,则发出错误或警告消息。
arithabort 当为 true 时,溢出或被零除错误将导致查询或批处理终止。如果错误发生在事务内,则回滚事务。当为 false 时,将显示警告消息,但是继续执行查询、批处理或事务,就像没有出错一样。
concat null yields null 当为 true 时,如果串联操作中任何一个操作数为 NULL,则结果为 NULL。
cursor close on commit 当为 true 时,将关闭提交或回滚事务时所打开的任何游标。当为 false 时,提交事务时这些游标仍处于打开状态。当为 false 时,回滚事务时将关闭所有游标(除定义为 INSENSITIVE 或 STATIC 的游标)。
dbo use only 当为 true 时,只有数据库所有者可以使用数据库。
default to local cursor 当为 true 时,游标声明默认为 LOCAL。
merge publish 当为 true 时,可以为合并复制发布数据库。
numeric roundabort 当为 true 时,如果表达式中出现精度损失则生成错误。当为 false 时,精度损失不生成错误信息,并且将结果四舍五入为存储结果的列或变量的精度。
offline 当为 true 时,数据库将处于脱机状态。
published 当为 true 时,可以发布数据库用于复制目的。
quoted identifier 当为 true 时,可以将分隔标识符包含在双引号中。
read only 当为 true 时,用户仅能读取数据库中的数据而无法对其进行修改。若要为 read only 选项指定新的 value,则数据库不能处于使用状态。但 master 数据库例外,并且当正在设置 read only 选项时,只有系统管理员可以使用 master
recursive triggers 当为 true 时,启用触发器递归调用。当为 false 时,只防止直接递归。若要禁用间接递归,请使用 sp_configurenested triggers 服务器选项设置为 0。
select into/bulkcopy 当为 true 时,允许使用 SELECT INTO 语句和快速大容量复制。
single user 当为 true 时,每次只能有一个用户访问数据库。
subscribed 当为 true 时,可以为发布目的而订阅。
torn page detection 当为 true 时,可以检测残缺页。
trunc. log on chkpt. 当为 true 时,如果数据库处于日志截断模式,则检查点将截断日志中非活动的部分。只能为 master 数据库设置此选项。

通过在 model 数据库上执行 sp_dboption,数据库所有者或系统管理员可以设置或关闭所有新建数据库的特定数据库选项。

执行 sp_dboption 后,将在为之更改选项的数据库中执行检查点。这将使更改立即生效。

sp_dboption 更改数据库设置。使用 sp_configure 更改服务器级别设置,使用 SET 语句更改仅影响当前会话的设置。

权限

显示可能的数据库选项列表、数据库中当前设置的选项列表以及选项在数据库中的当前值(使用 sp_dboption 和 0、1 或 2 个参数)的执行权限默认授予所有用户。

更改选项(使用 sp_dboption 及全部参数)的执行权限默认授予 sysadmindbcreator 固定服务器角色成员以及 db_owner 固定数据库角色成员。这些权限是不可传递的。

示例
A. 将数据库设置为只读

下面的示例将 pubs 数据库设置为只读。

USE master
EXEC sp_dboption 'pubs', 'read only', 'TRUE'

下面是结果集:

CHECKPOINTing database that was changed.
B. 关闭选项

下面的示例将 pubs 数据库重新设置为可写。

USE master
EXEC sp_dboption 'pubs', 'read only', 'FALSE'

下面是结果集:

CHECKPOINTing database that was changed.
C. 使数据库脱机

下面的示例使数据库 sales 在没有用户访问时进入脱机状态。

USE master
EXEC sp_dboption 'sales', 'offline', 'TRUE' 

下面是结果集:

CHECKPOINTing database that was changed.

请参见

ALTER DATABASE

SET

sp_configure

系统存储过程