sp_dboption (Transact-SQL)
显示或更改数据库选项。不要使用 sp_dboption 修改针对 master 数据库或 tempdb 数据库的选项。
重要提示 |
---|
下一版本的 Microsoft SQL Server 将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。而应使用 ALTER DATABASE。若要修改与复制关联的数据库选项(合并发布、已发布、已订阅),请使用 sp_replicationdboption。 |
语法
sp_dboption [ [ @dbname = ] 'database' ]
[ , [ @optname = ] 'option_name' ]
[ , [ @optvalue = ] 'value' ]
[;]
参数
[ @dbname= ] 'database'
要在其中设置指定选项的数据库的名称。database 的数据类型为 sysname,默认值为 NULL。[ @optname= ] 'option_name'
要设置的选项的名称。无需输入完整的选项名称。SQL Server 会识别名称的任一唯一部分。如果选项名称包含嵌入空格或者是关键字,请将其用英文引号括起来。如果省略此参数,sp_dboption 会列出启用的选项。 option_name 的数据类型为 varchar(35),默认值为 NULL。[ @optvalue=] 'value'
option_name 的新设置。如果省略此参数,sp_dboption会返回当前设置。value 可以为 true、false、on 或 off。value 的数据类型为 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) |
选项是处于打开状态还是处于关闭状态。 |
如果提供了 value,则 sp_dboption 将不返回结果集。
注释
下表列出了 sp_dboption 设置的选项。有关每个选项的详细信息,请参阅设置数据库选项。
选项 |
说明 |
---|---|
auto create statistics |
如果为 true,将在优化过程中自动生成优化查询所需的任何缺少的统计信息。有关详细信息,请参阅 CREATE STATISTICS (Transact-SQL)。 |
auto update statistics |
如果为 true,将在优化过程中自动生成优化查询所需的任何过期统计信息。有关详细信息,请参阅 UPDATE STATISTICS (Transact-SQL)。 |
autoclose |
如果为 true,将完全关闭数据库,并在最后一个用户注销后释放该数据库的资源。 |
autoshrink |
如果为 true,数据库文件将可自动定期收缩。 |
ANSI null default |
如果为 true,CREATE TABLE 将遵循 ISO 规则来决定列是否允许使用空值。 |
ANSI nulls |
如果为 true,所有与空值的比较的结果值都为 UNKNOWN。如果为 false,如果非 UNICODE 值与空值比较,当两个值都为 NULL 时,比较结果值为 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 (on),数据库将处于脱机状态。如果为 false (off),数据库将处于联机状态。 |
published |
如果为 true,可发布数据库以进行复制。 |
quoted identifier |
如果为 true,可使用英文双引号将分隔标识符括起来。 |
read only |
如果为 true,用户只能读取数据库中的数据。用户无法修改数据或数据库对象,但可以使用 DROP DATABASE 语句删除数据库本身。为 read only 选项指定新 value 时,数据库不能处于使用状态。但 master 数据库例外,在设置了 read only 选项时,只有系统管理员可使用 master。 |
递归触发器 |
如果为 true,则将启用触发器的递归触发。如果为 false,将只禁止直接递归。若要禁用间接递归,请使用 sp_configure 将 nested triggers 服务器选项设置为 0。 |
select into/bulkcopy |
从 Microsoft SQL Server 2000 开始,如果数据库的恢复模式当前设置为 FULL,则使用“select into/bulkcopy 选项”会将恢复模式重置为 BULK_LOGGED。更改恢复模式的正确方式是使用 ALTER DATABASE 语句的 SET RECOVERY 子句。 |
single user |
如果为 true,每次只能有一个用户访问数据库。 |
subscribed |
如果为 true,则可订阅数据库以进行发布。 |
torn page detection |
如果为 true,则可检测残缺页。 |
trunc. log on chkpt. |
如果为 true,则数据库处于日志截断模式时,检查点将截断日志中非活动的部分。这是可为 master 数据库设置的唯一选项。
重要提示
从 SQL Server 2000 开始,如果将 trunc. log on chkpt. 选项设置为 true,则数据库恢复模式将被设置为 SIMPLE。如果将该选项设置为 false,则恢复模式将被设置为 FULL。
|
通过对 model 数据库执行 sp_dboption,数据库所有者或系统管理员可设置或关闭所有新建数据库的特定数据库选项。
执行了 sp_dboption 后,将在更改了选项的数据库中执行检查点。这将使更改立即生效。
sp_dboption 可更改数据库设置。请使用 sp_configure 更改服务器级别设置,使用 SET 语句更改仅影响当前会话的设置。
权限
若要显示数据库选项及其当前值的完整列表,需要 public 角色的成员身份。若要更改数据库选项的值,需要 db_owner 固定数据库角色的成员身份。
示例
A. 将数据库设置为只读
以下示例将 AdventureWorks2008R2 数据库设置为只读。
USE master;
GO
EXEC sp_dboption 'AdventureWorks2008R2', 'read only', 'TRUE';
B. 关闭选项
以下示例将 AdventureWorks2008R2 数据库重新设置为可写。
USE master;
GO
EXEC sp_dboption 'AdventureWorks2008R2', 'read only', 'FALSE';