设置数据库选项
可以为每个数据库都设置若干个决定数据库特征的数据库级选项。这些选项对于每个数据库都是唯一的,而且不影响其他数据库。当创建数据库时这些数据库选项设置为默认值,而且可以使用 ALTER DATABASE 语句的 SET 子句来更改这些数据库选项。此外,SQL Server Management Studio 可用于设置上述大多数选项。
注意 |
---|
服务器范围的设置可使用 sp_configure 系统存储过程或 SQL Server Management Studio 设置。有关详细信息,请参阅 设置服务器配置选项。连接级设置是使用 SET 语句来指定的。有关详细信息,请参阅 SET 选项。 |
若要更改所有新创建的数据库的任意数据库选项的默认值,请更改 model 数据库中的相应的数据库选项。例如,对于随后创建的任何新数据库,如果希望 AUTO_CLOSE 数据库选项的默认设置都为 True,则将 model 的 AUTO_CLOSE 选项设置为 True。
设置了数据库选项之后,将自动产生一个检查点,它会使修改立即生效。有关详细信息,请参阅 CHECKPOINT (Transact-SQL)。
自动选项
控制某些自动行为。
选项 |
说明 |
默认值 |
---|---|---|
AUTO_CLOSE |
当设置为 ON 时,数据库将在最后一个用户退出后完全关闭,它占用的资源也将释放。当用户尝试再次使用该数据库时,该数据库将自动重新打开。 当设置为 OFF 时,最后一个用户退出后数据库仍保持打开。 |
无论使用什么操作系统,当使用 SQL Server 2000 Desktop Engine 或 SQL Server Express 时,对于所有数据库均为 True,而使用所有其他版本时,对于所有数据库均为 False。 |
AUTO_CREATE_STATISTICS |
当设置为 ON 时,将自动创建谓词所使用的列的统计信息。 如果设置为 OFF,将不自动创建统计信息;相反,您可以手动创建统计信息。 |
True |
AUTO_UPDATE_STATISTICS |
当设置为 ON 时,优化查询所需的任何缺少的统计信息将在查询优化过程中自动生成。 当设置为 OFF 时,统计信息必须手动创建。有关详细信息,请参阅使用统计信息提高查询性能。 |
True |
AUTO_SHRINK |
当设置为 ON 时,数据库文件可作为定期收缩的对象。数据文件和日志文件都可以通过 SQL Server 自动收缩。只有在数据库设置为 SIMPLE 恢复模式时,或事务日志已备份时,AUTO_SHRINK 才可减小事务日志的大小。 当设置为 OFF 时,在定期检查未使用空间的过程中,数据库文件将不自动收缩。 |
False |
Auto_Update_Statistics_Asynchronously |
如果为 True,则异步更新统计信息。 |
False |
游标选项
控制游标行为和范围。
选项 |
说明 |
默认值 |
---|---|---|
CURSOR_CLOSE_ON_COMMIT |
当设置为 ON 时,所有打开的游标都将在提交或回滚事务时关闭。 当设置为 OFF 时,打开的游标将在提交事务时仍保持打开,回滚事务将关闭所有游标,但定义为 INSENSITIVE 或 STATIC 的游标除外。 |
OFF |
CURSOR_DEFAULT |
如果指定了 LOCAL,而创建游标时没有将其定义为 GLOBAL,那么游标的作用域将局限于创建游标时所在的批处理、存储过程或触发器。游标名仅在该作用域内有效。 如果指定了 GLOBAL,而创建游标时没有将其定义为 LOCAL,那么游标的作用域将是相应连接的全局范围。在由连接执行的任何存储过程或批处理中,都可以引用该游标名称。 |
GLOBAL |
数据库可用性选项
控制数据库是在线还是离线、何人可以连接到数据库以及数据库是否处于只读模式。
选项 |
说明 |
默认值 |
---|---|---|
OFFLINE | ONLINE | EMERGENCY |
当指定为 OFFLINE 时,数据库将完全关闭和退出,并标记为脱机。 当指定为 ONLINE 时,数据库处于打开状态并且可供使用。 当指定为 EMERGENCY 时,数据库将标记为 READ_ONLY,日志记录将被禁用,并且只有 sysadmin 固定服务器角色的成员才能进行访问。 |
ONLINE |
READ_ONLY | READ_WRITE |
当指定为 READ_ONLY 时,用户可以从数据库中读取数据,但不能修改它。 当指定为 READ_WRITE 时,允许对数据库执行读写操作。 |
READ_WRITE |
SINGLE_USER | RESTRICTED_USER | MULTI_USER |
当指定为 SINGLE_USER 时,一次只允许一个用户连接到数据库。所有其他用户连接均中断。 当指定为 RESTRICTED_USER 时,只允许 db_owner 固定数据库角色的成员以及 dbcreator 和 sysadmin 固定服务器角色的成员连接到数据库,不过对连接数没有限制。 当指定为 MULTI_USER 时,允许所有具有相应权限的用户连接到数据库。 |
MULTI_USER |
日期相关性优化选项
控制 date_correlation_optimization 选项。
选项 |
说明 |
默认值 |
---|---|---|
DATE_CORRELATION_OPTIMIZATION |
当指定为 ON 时,SQL Server 将维护数据库中所有由 FOREIGN KEY 约束链接的包含 datetime 列的两个表中的相关统计信息。 当指定为 OFF 时,不会维护相关统计信息。 |
OFF |
外部访问选项
控制是否允许外部资源(例如另一个数据库中的对象)访问数据库。
选项 |
说明 |
默认值 |
---|---|---|
DB_CHAINING |
当指定为 ON 时,数据库可以为跨数据库所有权链的源或目标。 当设置为 OFF 时,数据库不能参与跨数据库的所有权链接。 |
OFF |
TRUSTWORTHY |
当设置为 ON 时,使用了模拟上下文的数据库模块(例如,用户定义函数或存储过程)可以访问数据库以外的资源。 当指定为 OFF 时,在模拟上下文中无法访问数据库以外的资源。 只要附加数据库,TRUSTWORTHY 就会设置为 OFF。 |
OFF |
参数化选项
控制参数化选项。
选项 |
说明 |
默认值 |
---|---|---|
PARAMETERIZATION |
当指定为 SIMPLE 时,将根据数据库的默认行为参数化查询。 当指定为 FORCED 时,SQL Server 将参数化数据库中所有的查询。 |
SIMPLE |
恢复选项
控制数据库的恢复模式。
选项 |
说明 |
默认值 |
---|---|---|
RECOVERY |
当指定为 FULL 时,将使用事务日志备份在发生媒体故障后进行完全恢复。如果数据文件损坏,媒体恢复可以还原所有已提交的事务。 当指定为 BULK_LOGGED 时,将综合某些大规模或大容量操作的最佳性能和日志空间的最少占用量,在发生媒体故障后进行恢复。 当指定为 SIMPLE 时,将提供占用最小日志空间的简单备份策略。 |
FULL |
PAGE_VERIFY |
当指定为 CHECKSUM 时,数据库引擎将在页写入磁盘时,计算整个页的内容的校验和并存储页头中的值。从磁盘中读取页时,将重新计算校验和,并与存储在页头中的校验和值进行比较。 当指定为 TORN_PAGE_DETECTION 时,在将 8 KB 的数据库页写入磁盘时,该页的每个 512 字节的扇区都有一个特定的 2 位模式保存并存储在数据库的页头中。从磁盘中读取页时,页头中存储的残缺位将与实际的页扇区信息进行比较。 当指定为 NONE 时,数据库页写入将不生成 CHECKSUM 或 TORN_PAGE_DETECTION 值。即使 CHECKSUM 或 TORN_PAGE_DETECTION 值在页头中出现,SQL Server 也不会在读取期间验证校验和或页撕裂。 |
CHECKSUM |
Service Broker 选项
控制 Service Broker 选项。
选项 |
说明 |
默认值 |
---|---|---|
ENABLE_BROKER | DISABLE_BROKER | NEW_BROKER | ERROR_BROKER_CONVERSATIONS |
当指定为 ENABLE_BROKER 时,针对指定的数据库启用 Service Broker。 当指定为 DISABLE_BROKER 时,针对指定的数据库禁用 Service Broker。 当指定为 NEW_BROKER 时,数据库将收到新的代理标识符。 当指定为 ERROR_BROKER_CONVERSATIONS 时,数据库中的会话将在附加数据库时收到一个错误消息。 |
ENABLE_BROKER |
快照隔离选项
确定事务隔离级别。
选项 |
说明 |
默认值 |
---|---|---|
ALLOW_SNAPSHOT_ISOLATION |
当指定为 ON 时,事务可以指定 SNAPSHOT 事务隔离级别。当事务在 SNAPSHOT 隔离级别运行时,所有的语句都将数据快照视为位于事务的开头。 当指定为 OFF 时,事务无法指定 SNAPSHOT 事务隔离级别。 |
OFF |
READ_COMMITTED_SNAPSHOT |
当指定为 ON 时,指定 READ COMMITTED 隔离级别的事务将使用行版本控制而不是锁定。当事务在 READ COMMITTED 隔离级别运行时,所有的语句都将数据快照视为位于语句的开头。 当指定为 OFF 时,指定 READ COMMITTED 隔离级别的事务将使用锁定。 设置 READ_COMMITTED_SNAPSHOT 选项时,数据库中只允许存在执行 ALTER DATABASE 命令的连接。在 ALTER DATABASE 完成之前,数据库中决不能有其他打开的连接。数据库不必一定要处于单用户模式中。 |
OFF |
SQL 选项
控制 ANSI 相容性选项。
选项 |
说明 |
默认值 |
---|---|---|
ANSI_NULL_DEFAULT |
确定在 CREATE TABLE 或 ALTER TABLE 语句中未显式定义为空性的 alias 数据类型或 CLR 用户定义类型列的默认值(NULL 或 NOT NULL)。 当指定为 ON 时,默认值为 NULL。 当指定为 OFF 时,默认值为 NOT NULL。 |
OFF |
ANSI_NULLS |
当指定为 ON 时,所有与空值的比较运算计算结果为 UNKNOWN。 当指定为 OFF 时,非 UNICODE 值与空值的比较运算在两者均为 NULL 时结果为 TRUE。 |
OFF |
ANSI_PADDING |
设置为 ON 时,不剪裁插入 varchar 或 nvarchar 列中的字符值的尾随空格,也不剪裁插入 varbinary 列中的二进制值的尾随零。不将值填充到列的长度。 设置为 OFF 时,剪裁 varchar 或 nvarchar 的尾随空格以及 varbinary 的尾随零。此设置只影响新列的定义。 ANSI_PADDING 设置为 ON 时,将把允许为空的 char 和 binary 列填充到列长,而当 ANSI_PADDING 为 OFF 时,则将剪裁尾随空格和零。始终将不允许为空的 char 和 binary 列填充到列长。 |
OFF |
ANSI_WARNINGS |
当指定为 ON 时,在出现如除以零或聚合函数中出现空值这类情形时,将发出错误或警告。 当指定为 OFF 时,在出现如除以零这类情形时,不会发出警告,并返回空值。 |
OFF |
ARITHABORT |
当指定为 ON 时,在执行查询期间发生溢出或除以零的错误时,该查询将结束。 当指定为 OFF 时,出现其中一个错误时将显示警告信息,而查询、批处理或事务将继续处理,就像没有出现错误一样。 |
OFF |
CONCAT_NULL_YIELDS_NULL |
当指定为 ON 时,如果串联操作的两个操作数中任意一个为 NULL,则结果也为 NULL。 当指定为 OFF 时,空值将按空字符串对待。 |
OFF |
QUOTED_IDENTIFIER |
当指定为 ON 时,双引号可用来将分隔标识符括起来。 当指定为 OFF 时,标识符不能用引号括起来,而且必须遵循所有用于标识符的 Transact-SQL 规则。 |
OFF |
NUMERIC_ROUNDABORT |
当指定为 ON 时,表达式中出现失去精度时将产生错误。 当指定为 OFF 时,失去精度不生成错误信息,并且将结果舍入到存储结果的列或变量的精度。 |
OFF |
RECURSIVE_TRIGGERS |
当指定为 ON 时,将允许递归激发 AFTER 触发器。 当指定为 OFF 时,仅不允许直接递归激发 AFTER 触发器。 |
OFF |
更改数据库选项