修改一个数据库或与该数据库关联的文件和文件组。在数据库中添加或删除文件和文件组、更改数据库的属性或其文件和文件组、更改数据库排序规则和设置数据库选项。不能修改数据库快照。若要修改与复制相关的数据库选项,请使用 sp_replicationdboption。
ALTER DATABASE database_name { <add_or_modify_files> | <add_or_modify_filegroups> | <set_database_options> | MODIFY NAME = new_database_name | COLLATE collation_name } [;] <add_or_modify_files>::= { ADD FILE <filespec> [ ,...n ] [ TO FILEGROUP { filegroup_name } ] | ADD LOG FILE <filespec> [ ,...n ] | REMOVE FILE logical_file_name | MODIFY FILE <filespec> } <filespec>::= ( NAME = logical_file_name [ , NEWNAME = new_logical_name ] [ , FILENAME = 'os_file_name' ] [ , SIZE = size [ KB | MB | GB | TB ] ] [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ] [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB| % ] ] [ , OFFLINE ] ) <add_or_modify_filegroups>::= { | ADD FILEGROUP filegroup_name | REMOVE FILEGROUP filegroup_name | MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME = new_filegroup_name } } <filegroup_updatability_option>::= { { READONLY | READWRITE } | { READ_ONLY | READ_WRITE } } <set_database_options>::= SET { { <optionspec> [ ,...n ] [ WITH <termination> ] } } <optionspec>::= { <db_state_option> | <db_user_access_option> | <db_update_option> | <external_access_option> | <cursor_option> | <auto_option> | <sql_option> | <recovery_option> | <database_mirroring_option> | <service_broker_option> | <date_correlation_optimization_option> | <parameterization_option> } <db_state_option> ::= { ONLINE | OFFLINE | EMERGENCY } <db_user_access_option> ::= { SINGLE_USER | RESTRICTED_USER | MULTI_USER } <db_update_option> ::= { READ_ONLY | READ_WRITE } <external_access_option> ::= { DB_CHAINING { ON | OFF } | TRUSTWORTHY { ON | OFF } } <cursor_option> ::= { CURSOR_CLOSE_ON_COMMIT { ON | OFF } | CURSOR_DEFAULT { LOCAL | GLOBAL } } <auto_option> ::= { AUTO_CLOSE { ON | OFF } | AUTO_CREATE_STATISTICS { ON | OFF } | AUTO_SHRINK { ON | OFF } | AUTO_UPDATE_STATISTICS { ON | OFF } | AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF } } <sql_option> ::= { ANSI_NULL_DEFAULT { ON | OFF } | ANSI_NULLS { ON | OFF } | ANSI_PADDING { ON | OFF } | ANSI_WARNINGS { ON | OFF } | ARITHABORT { ON | OFF } | CONCAT_NULL_YIELDS_NULL { ON | OFF } | NUMERIC_ROUNDABORT { ON | OFF } | QUOTED_IDENTIFIER { ON | OFF } | RECURSIVE_TRIGGERS { ON | OFF } } <recovery_option> ::= { RECOVERY { FULL | BULK_LOGGED | SIMPLE } | TORN_PAGE_DETECTION { ON | OFF } | PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE } } <database_mirroring_option> ::= { <partner_option> | <witness_option> } <partner_option> ::= PARTNER { = 'partner_server' | FAILOVER | FORCE_SERVICE_ALLOW_DATA_LOSS | OFF | RESUME | SAFETY { FULL | OFF } | SUSPEND | TIMEOUT integer } <witness_option> ::= WITNESS { = 'witness_server' | OFF } <service_broker_option> ::= { ENABLE_BROKER | DISABLE_BROKER | NEW_BROKER | ERROR_BROKER_CONVERSATIONS } <date_correlation_optimization_option> ::= { DATE_CORRELATION_OPTIMIZATION { ON | OFF } } <parameterization_option> ::= { PARAMETERIZATION { SIMPLE | FORCED } } <snapshot_option> ::= { ALLOW_SNAPSHOT_ISOLATION {ON | OFF } | READ_COMMITTED_SNAPSHOT {ON | OFF } } <termination> ::= { ROLLBACK AFTER integer [ SECONDS ] | ROLLBACK IMMEDIATE | NO_WAIT }
- database_name
-
要修改的数据库的名称。
- MODIFY NAME = new_database_name
-
使用指定的名称 new_database_name 重命名数据库。
- COLLATE collation_name
-
指定数据库的排序规则。collation_name 既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果不指定排序规则,则将 SQL Server 实例的排序规则指定为数据库的排序规则。
有关 Windows 排序规则名称和 SQL 排序规则名称的详细信息,请参阅 COLLATE (Transact-SQL)。
<add_or_modify_files>::=
指定要添加、删除或修改的文件。
- ADD FILE
-
将文件添加到数据库。
- TO FILEGROUP { filegroup_name }
-
指定要将指定文件添加到的文件组。若要显示当前文件组和当前的默认文件组,请使用 sys.filegroups 目录视图。
- ADD LOG FILE
-
将要添加的日志文件添加到指定的数据库。
- REMOVE FILE logical_file_name
-
从 SQL Server 的实例中删除逻辑文件说明并删除物理文件。除非文件为空,否则无法删除文件。
- logical_file_name
-
在 SQL Server 中引用文件时所用的逻辑名称。
- MODIFY FILE
-
指定应修改的文件。一次只能更改一个 <filespec> 属性。必须在 <filespec> 中指定 NAME,以标识要修改的文件。如果指定了 SIZE,那么新大小必须比文件当前大小要大。
若要修改数据文件或日志文件的逻辑名称,请在 NAME 子句中指定要重命名的逻辑文件名称,并在 NEWNAME 子句中指定文件的新逻辑名称。例如:
MODIFY FILE ( NAME = logical_file_name, NEWNAME = new_logical_name )
若要将数据文件或日志文件移至新位置,请在 NAME 子句中指定当前的逻辑文件名称,并在 FILENAME 子句中指定新路径和操作系统文件名称。例如:
MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )
在移动全文目录时,请只在 FILENAME 子句中指定新路径。不要指定操作系统文件名称。
有关详细信息,请参阅移动数据库文件。
<filespec>::=
控制文件属性。
- NAME logical_file_name
-
指定文件的逻辑名称。
- logical_file_name
-
在 SQL Server 的实例中引用文件时所用的逻辑名称。
- NEWNAME new_logical_file_name
-
指定文件的新逻辑名称。
- new_logical_file_name
-
用于替换现有逻辑文件名称的名称。该名称在数据库中必须唯一,并应符合标识符规则。该名称可以是字符或 Unicode 常量、常规标识符或定界标识符。有关详细信息,请参阅使用标识符作为对象名称。
- FILENAME ' os_file_name '
-
指定操作系统(物理)文件名称。
- ' os_file_name '
-
创建文件时操作系统使用的路径和文件名。该文件必须驻留在安装 SQL Server 的服务器上。在执行 ALTER DATABASE 语句前,指定的路径必须已经存在。
如果为该文件指定了 UNC 路径,则无法设置 SIZE、MAXSIZE 和 FILEGROWTH 参数。
不应将数据文件放在压缩文件系统中,除非这些文件是只读辅助文件或该数据库是只读的。日志文件一定不要放在压缩文件系统中。有关详细信息,请参阅只读文件组和压缩。
如果文件位于原始分区上,则 os_file_name 必须仅指定现有原始分区的驱动器号。每个原始分区上只能存放一个文件。
- SIZE size
-
指定文件大小。
- size
-
文件的大小。
与 ADD FILE 一起指定时,size 是文件的初始大小。与 MODIFY FILE 一起指定时,size 是文件的新大小,而且必须大于文件的当前大小。
如果没有为主文件提供 size,则 SQL Server 2005 数据库引擎将使用 model 数据库中的主文件的大小。如果指定了辅助数据文件或日志文件,但未指定该文件的 size ,则数据库引擎将以 1 MB 作为该文件的大小。
后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定整数,不包含小数。若要指定兆字节的分数,应通过乘以数字 1024 将该值转换为千字节。例如,应指定 1536 KB 而不是 1.5MB(1.5 x 1024 = 1536)。
- MAXSIZE { max_size| UNLIMITED }
-
指定文件可增大到的最大文件大小。
- max_size
-
最大的文件大小。后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定整数,不包含小数。如果未指定 max_size,则文件大小将一直增加,直至磁盘已满。
- UNLIMITED
-
指定文件将增长到磁盘充满。在 SQL Server 2005 中,指定为不限制增长的日志文件的最大大小为 2 TB,而数据文件的最大大小为 16 TB。
- FILEGROWTH growth_increment
-
指定文件的自动增量。文件的 FILEGROWTH 设置不能超过 MAXSIZE 设置。
- growth_increment
-
每次需要新空间时为文件添加的空间量。
该值可以 MB、KB、GB、TB 或百分比 (%) 为单位指定。如果未在数量后面指定 MB、KB 或 %,则默认值为 MB。如果指定 %,则增量大小为发生增长时文件大小的指定百分比。指定的大小舍入为最接近的 64 KB 的倍数。
如果值为 0,则表明自动增长被设置为关闭,且不允许增加空间。
如果未指定 FILEGROWTH,则数据文件的默认值为 1 MB,日志文件的默认增长比例为 10%,并且最小值为 64 KB。
注意: 在 SQL Server 2005 中,数据文件的默认增量已从 10% 改为 1 MB。日志文件的默认值仍然为 10%。
- OFFLINE
-
将文件设置为脱机并使文件组中的所有对象都不可访问。
注意: 仅当文件已损坏但可以还原时,才能使用该选项。对于设置为 OFFLINE 的文件,只有通过从备份中还原该文件,才能将其设置为联机。有关还原单个文件的详细信息,请参阅 RESTORE (Transact-SQL)。
<add_or_modify_filegroups>::=
在数据库中添加、修改或删除文件组。
- ADD FILEGROUP filegroup_name
-
将文件组添加到数据库。
- REMOVE FILEGROUP filegroup_name
-
从数据库中删除文件组。除非文件组为空,否则无法将其删除。首先从文件组中删除所有文件。有关详细信息,请参阅本主题前面的“REMOVE FILE logical_file_name”部分。
- MODIFY FILEGROUP filegroup_name { <filegroup_updatability_option> | DEFAULT | NAME = new_filegroup_name }
-
通过将状态设置为 READ_ONLY 或 READ_WRITE、将文件组设置为数据库的默认文件组或者更改文件组名称来修改文件组。
- <filegroup_updatability_option>
-
对文件组设置只读或读/写属性。
- 默认值
-
将默认数据库文件组改为 filegroup_name。数据库中只能有一个文件组作为默认文件组。有关详细信息,请参阅了解文件和文件组。
- NAME = new_filegroup_name
-
将文件组名称改为 new_filegroup_name。
<filegroup_updatability_option>::=
对文件组设置只读或读/写属性。
- READ_ONLY | READONLY
-
指定文件组为只读。不允许更新其中的对象。主文件组不能设置为只读。若要更改此状态,您必须对数据库有独占访问权限。有关详细信息,请参阅 SINGLE_USER 子句。
因为只读数据库不允许数据修改,所以将发生以下情况:
- 系统启动时,将跳过自动恢复。
- 不能收缩数据库。
- 在只读数据库中不会进行锁定。这可以加快查询速度。
注意: 在 Microsoft SQL Server 的未来版本中,将删除 READONLY 关键字。请避免在新的开发工作中使用 READONLY,并计划修改当前使用 READONLY 的应用程序。请改用 READ_ONLY。
- READ_WRITE | READWRITE
-
将该组指定为 READ_WRITE。允许更新文件组中的对象。若要更改此状态,您必须对数据库有独占访问权限。有关详细信息,请参阅 SINGLE_USER 子句。
注意: 在 Microsoft SQL Server 的未来版本中,将删除 READWRITE 关键字。避免在新的开发工作中使用 READWRITE,并计划修改当前使用 READWRITE 的应用程序。请改用 READ_WRITE。
这些选项的状态可通过查看 sys.databases 目录视图中的 is_read_only 列或 DATABASEPROPERTYEX 函数的 Updateability 属性来确定。
<db_state_option>::=
控制数据库的状态。
- OFFLINE
-
数据库被关闭、完全关闭并标记为脱机。数据库脱机时,不能进行修改。
- ONLINE
-
该数据库已打开且可用。
- EMERGENCY
-
数据库标记为 READ_ONLY,禁用日志记录,并且仅限 sysadmin 固定服务器角色的成员访问。EMERGENCY 主要用于故障排除。例如,可以将由于损坏了日志文件而标记为可疑的数据库设置为 EMERGENCY 状态。这样,系统管理员便可对数据库进行只读访问。只有 sysadmin 固定服务器角色的成员才可以将数据库设置为 EMERGENCY 状态。
可通过查看 sys.databases 目录视图中的 state 和 state_desc 列,或者查看 DATABASEPROPERTYEX 函数的 Status 属性来确定此选项的状态。有关详细信息,请参阅数据库状态。
无法将标记为 RESTORING 的数据库设置为 OFFLINE、ONLINE 或 EMERGENCY。在活动还原操作期间,或者当数据库还原操作或日志文件还原操作由于备份文件损坏而失败时,数据库可以处于 RESTORING 状态。有关详细信息,请参阅应对由损坏的备份导致的 SQL Server 还原错误。
<db_user_access_option> ::=
控制用户对数据库的访问。
- SINGLE_USER
-
指定一次只能有一个用户可以访问数据库。如果指定了 SINGLE_USER,但已有其他用户连接到数据库,则 ALTER DATABASE 语句将被阻止,直到所有用户都断开与指定数据库的连接为止。若要取代此行为,请参阅 WITH <termination> 子句。
即使设置此选项的用户已注销,数据库仍保持 SINGLE_USER 模式。这时,其他用户(但只能是一个)可以连接到数据库。
在将数据库设置为 SINGLE_USER 之前,应验证 AUTO_UPDATE_STATISTICS_ASYNC 选项是否设置为 OFF。设置为 ON 时,用于更新统计信息的后台线程将对数据库建立连接,您将不能以单用户模式访问数据库。若要查看此选项的状态,请查询 sys.databases 目录视图中的 is_auto_update_stats_async_on 列。如果此选项设置为 ON,请执行以下任务:
- 将 AUTO_UPDATE_STATISTICS_ASYNC 设置为 OFF。
- 通过查询 sys.dm_exec_background_job_queue 动态管理视图来检查活动的异步统计信息作业。
- 如果存在活动的作业,可以允许作业完成,或通过使用 KILL STATS JOB 来手动终止这些作业。
- RESTRICTED_USER
-
RESTRICTED_USER 只允许 db_owner 固定数据库角色成员以及 dbcreator 和 sysadmin 固定服务器角色成员连接到数据库,不过对连接数没有限制。在 ALTER DATABASE 语句的终止子句所指定的时间范围内,所有数据库连接都将被断开。在数据库转换到 RESTRICTED_USER 状态后,不合格用户所做的连接尝试将被拒绝。
- MULTI_USER
-
所有拥有连接到数据库的相应权限的用户,都允许进行连接。
可通过查看 sys.databases 目录视图中的 user_access 列或 DATABASEPROPERTYEX 函数的 UserAccess 属性来确定此选项的状态。
<db_update_option>::=
控制是否允许更新数据库。
- READ_ONLY
-
用户可以从数据库读取数据,但不能修改数据库。
- READ_WRITE
-
允许对数据库执行读写操作。
若要更改此状态,您必须对数据库有独占访问权限。有关详细信息,请参阅 SINGLE_USER 子句。
<external_access_option>::=
控制是否允许外部资源(例如另一个数据库中的对象)访问数据库。
- DB_CHAINING { ON | OFF }
-
- ON
-
数据库可以作为跨数据库所有权链接的源或目标。
- OFF
-
数据库不能参与跨数据库所有权链接。
重要提示: 如果 cross db ownership chaining 服务器选项为 0 (OFF),SQL Server 实例将可以识别此设置。如果 cross db ownership chaining 为 1 (ON),则不论此选项为何值,所有用户数据库都可以参与跨数据库所有权链。可以使用 sp_configure 设置此选项。 若要设置此选项,要求具有 sysadmin 固定服务器角色的成员身份。不能针对下列系统数据库设置 DB_CHAINING 选项:master、model 和 tempdb。
可通过查看 sys.databases 目录视图中的 is_db_chaining_on 列确定此选项的状态。
有关详细信息,请参阅所有权链。
- TRUSTWORTHY { ON | OFF }
-
- ON
-
使用模拟上下文的数据库模块(例如,用户定义函数或存储过程)可以访问数据库以外的资源。
- OFF
-
模拟上下文中的数据库模块不能访问数据库以外的资源。
只要附加数据库,TRUSTWORTHY 就会设置为 OFF。
默认情况下,除 msdb 数据库之外的所有系统数据库都将 TRUSTWORTHY 设置为 OFF。不能更改 model 和 tempdb 数据库的值。建议在任何情况下都不要将 master 数据库的 TRUSTWORTHY 选项设置为 ON。
若要设置此选项,要求具有 sysadmin 固定服务器角色的成员身份。
可通过查看 sys.databases 目录视图中的 is_trustworthy_on 列确定此选项的状态。
<cursor_option>::=
控制游标选项。
- CURSOR_CLOSE_ON_COMMIT { ON | OFF }
-
- ON
-
关闭在提交或回滚事务时打开的所有游标。
- OFF
-
在提交事务时游标保持打开状态;回滚事务则会关闭除了定义为 INSENSITIVE 或 STATIC 的游标以外的所有游标。
连接级别设置(使用 SET 语句设置)覆盖 CURSOR_CLOSE_ON_COMMIT 的默认数据库设置。默认情况下,当连接到 SQL Server 的实例时,ODBC 和 OLE DB 客户端会发出连接级别 SET 语句,将会话的 CURSOR_CLOSE_ON_COMMIT 设置为 OFF。有关详细信息,请参阅 SET CURSOR_CLOSE_ON_COMMIT (Transact-SQL)。
可通过查看 sys.databases 目录视图中的 is_cursor_close_on_commit_on 列或 DATABASEPROPERTYEX 函数的 IsCloseCursorsOnCommitEnabled 属性来确定此选项的状态。
- CURSOR_DEFAULT { LOCAL | GLOBAL }
-
控制游标作用域是使用 LOCAL 还是 GLOBAL。
- LOCAL
-
如果指定了 LOCAL,而创建游标时没有将其定义为 GLOBAL,那么游标的作用域将局限于创建游标时所在的批、存储过程或触发器。游标名仅在该作用域内有效。在批处理、存储过程、触发器或存储过程 OUTPUT 参数中,该游标可由局部游标变量引用。当批处理、存储过程或触发器结束时,游标将被隐式释放,除非它在一个 OUTPUT 参数中传递回来。如果 OUTPUT 参数将游标传递回来,游标在最后引用它的变量释放或离开作用域时释放。
- GLOBAL
-
如果指定了 GLOBAL,而创建游标时没有将其定义为 LOCAL,那么游标的作用域将是相应连接的全局范围。在由连接执行的任何存储过程或批处理中,都可以引用该游标名称。
该游标仅在断开时被隐式释放。有关详细信息,请参阅 DECLARE CURSOR (Transact-SQL)。
可通过查看 sys.databases 目录视图中的 is_local_cursor_default 列或 DATABASEPROPERTYEX 函数的 IsLocalCursorsDefault 属性来确定此选项的状态。
<auto_option>::=
控制自动选项。
- AUTO_CLOSE { ON | OFF }
-
- ON
-
在最后一个用户退出后,数据库完全关闭,并且释放资源。
当用户尝试再次使用该数据库时,该数据库将自动重新打开。例如,通过发出 USE database_name 语句。如果数据库在 AUTO_CLOSE 设置为 ON 时完全关闭,则该数据库不会重新打开,直到下一次数据库引擎重新启动时,用户试图使用该数据库为止。
- OFF
-
在最后一个用户退出后,数据库仍然保持打开状态。
AUTO_CLOSE 选项允许将数据库文件作为常规文件进行管理,因此,该选项对于桌面数据库很有用。它们可以移动、复制以制作备份,或者甚至通过电子邮件发送给其他用户。
注意: 在 SQL Server 的早期版本中,AUTO_CLOSE 是一个同步进程,当与数据库引擎反复连接并不断中断连接的应用程序访问数据库时,将会导致性能下降。在 SQL Server 2005 中,AUTO_CLOSE 进程为异步进程;反复打开和关闭数据库不会降低性能。 可通过查看 sys.databases 目录视图中的 is_auto_close_on 列或 DATABASEPROPERTYEX 函数的 IsAutoClose 属性来确定此选项的状态。
注意: 当 AUTO_CLOSE 为 ON 时,由于该数据库不可用于检索数据,所以 sys.databases 目录视图中的某些列和 DATABASEPROPERTYEX 函数将返回 NULL。若要解决此问题,请执行 USE 语句打开数据库。 注意: 数据库镜像要求将 AUTO_CLOSE 设置为 OFF。 数据库设置为 AUTOCLOSE = ON 时,启动数据库自动关闭的操作将清除 SQL Server 实例的计划缓存。清除计划缓存将导致对所有后续执行计划进行重新编译,并可能导致查询性能暂时性地突然降低。在 SQL Server 2005 Service Pack 2 中,对于计划缓存中的各个已清除的缓存存储区而言,SQL Server 错误日志将包含以下信息性消息:“由于某些数据库维护或重新配置操作,SQL Server 经历了 '%s' 缓存存储区(计划缓存的一部分)的 %d 次刷新”。只要每五分钟刷新一次缓存,此消息就将每五分钟记录一次。
- AUTO_CREATE_STATISTICS { ON | OFF }
-
- ON
-
在查询优化期间,将自动生成优化查询需要但缺少的任何统计信息。
添加统计信息将提高查询性能,因为 SQL Server 查询优化器可以更好地确定估算查询的方式。如果未使用统计信息,则数据库引擎将自动删除它们。如果设置为 OFF,将不自动创建统计信息;相反,您可以手动创建统计信息。有关详细信息,请参阅索引统计信息。
- OFF
-
必须手动创建统计信息。
可通过查看 sys.databases 目录视图中的 is_auto_update_stats_on 列或 DATABASEPROPERTYEX 函数的 IsAutoUpdateStatistics 属性来确定此选项的状态。
注意: 无论 AUTO_CREATE_STATISTICS 实际设置情况如何,查询优化器在处理所有内部系统表时,都按照它被设置为 ON 的情况来处理。这些表包括系统基表、XML 索引、全文索引、Service Broker 队列表和查询通知表。
- AUTO_SHRINK { ON | OFF }
-
- ON
-
数据库文件是定期收缩的候选项。
数据文件和日志文件都可以自动收缩。只有在数据库设置为 SIMPLE 恢复模式时,或事务日志已备份时,AUTO_SHRINK 才可减小事务日志的大小。当设置为 OFF 时,在定期检查未使用空间的过程中,数据库文件不自动收缩。
当文件中超过百分之二十五的部分包含未使用的空间时,AUTO_SHRINK 选项将导致收缩文件。文件将收缩至未使用空间占文件 25% 的大小,或收缩至文件创建时的大小,以两者中较大者为准。
不能收缩只读数据库。
- OFF
-
在定期检查未使用空间时不会自动收缩数据库文件。
可通过查看 sys.databases 目录视图中的 is_auto_shrink_on 列或 DATABASEPROPERTYEX 函数的 IsAutoShrink 属性来确定此选项的状态。 .
- AUTO_UPDATE_STATISTICS { ON | OFF }
-
- ON
-
在查询优化期间,将自动更新优化查询需要但已过期的所有统计信息。
- OFF
-
必须手动更新统计信息。
注意: 除非指定了 NORECOMPUTE 子句,否则 UPDATE STATISTICS 语句会在目标表或视图上重新启用统计信息自动更新。 注意: 无论 AUTO_UPDATE_STATISTICS 实际设置情况如何,查询优化器在处理所有内部系统表时,都按照它被设置为 ON 的情况来处理。这些表包括系统基表、XML 索引、全文索引、Service Broker 队列表和查询通知表。 有关详细信息,请参阅索引统计信息。
- AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
-
- ON
-
启动过期统计信息的自动更新的查询在编译前不会等待统计信息被更新。后续查询将使用可用的已更新统计信息。
- OFF
-
启动自动更新过期统计信息的查询将一直等待,直到更新的统计信息可在查询优化计划中使用。
除非已将 AUTO_UPDATE_STATISTICS 设置为 ON,否则将此选项设置为 ON 不会产生任何影响。
有关详细信息,请参阅索引统计信息。
<sql_option>::=
在数据库级别控制 ANSI 编译选项。
- ANSI_NULL_DEFAULT { ON | OFF }
-
确定在 CREATE TABLE 或 ALTER TABLE 语句中未显式定义为空性的 alias 数据类型或 CLR user-defined type 列的默认值(NULL 或 NOT NULL)。使用约束定义的列都将遵循约束规则,而与此设置无关。
- ON
-
默认值为 NULL。
- OFF
-
默认值为 NOT NULL。
连接级设置(使用 SET 语句设置)覆盖 ANSI_NULL_DEFAULT 的默认数据库级别设置。默认情况下,当连接到 SQL Server 的实例时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,将会话的 ANSI_NULL_DEFAULT 设置为 ON。有关详细信息,请参阅 SET ANSI_NULL_DFLT_ON (Transact-SQL)。
对于 ANSI 兼容性,数据库选项 ANSI_NULL_DEFAULT 设置为 ON 将使数据库默认设置改为 NULL。
可通过查看 sys.databases 目录视图中的 is_ansi_null_default_on 列或 DATABASEPROPERTYEX 函数的 IsAnsiNullDefault 属性来确定此选项的状态。
- ANSI_NULLS { ON | OFF }
-
- ON
-
与空值的所有比较的结果均为 UNKNOWN。
- OFF
-
如果两个值都为 NULL,则非 UNICODE 值与空值的比较结果为 TRUE。
连接级设置(使用 SET 语句设置)覆盖 ANSI_NULLS 的默认数据库设置。默认情况下,当连接到 SQL Server 的实例时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,以将会话的 ANSI_NULLS 设置为 ON。有关详细信息,请参阅 SET ANSI_NULLS (Transact-SQL)。
建立或更改计算列或索引视图的索引时,SET ANSI_NULLS 也必须为 ON。
可通过查看 sys.databases 目录视图中的 is_ansi_nulls_on 列或 DATABASEPROPERTYEX 函数的 IsAnsiNullsEnabled 属性来确定此选项的状态。
- ANSI_PADDING { ON | OFF }
-
- ON
-
在对字符串进行转换或将其插入 varchar 或 nvarchar 数据类型之前,会将字符串填充到同一长度。
不剪裁插入 varchar 或 nvarchar 列中的字符值的尾随空格,也不剪裁插入 varbinary 列中的二进制值的尾随零。不将值填充到列的长度。
- OFF
-
剪裁 varchar 或 nvarchar 的尾随空格以及 varbinary 的尾随零。
如果指定了 OFF,该设置只影响新列的定义。
char( n ) 和 binary(n) 列(允许为空值)在 ANSI_PADDING 设置为 ON 时将填充到列长,而当 ANSI_PADDING 为 OFF 时,则将剪裁尾随空格和零。不允许为空值的 char(n) 和 binary(n) 列将始终填充到列长。
连接级别设置(使用 SET 语句设置)覆盖 ANSI_PADDING 的默认数据库级别设置。默认情况下,当连接到 SQL Server 的实例时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,将会话的 ANSI_PADDING 设置为 ON。有关详细信息,请参阅 SET ANSI_PADDING (Transact-SQL)。
重要提示: 建议始终将 ANSI_PADDING 设置为 ON。建立或更改计算列或索引视图的索引时,ANSI_PADDING 也必须为 ON。 可通过查看 sys.databases 目录视图中的 is_ansi_padding_on 列或 DATABASEPROPERTYEX 函数的 IsAnsiPaddingEnabled 属性来确定此选项的状态。
- ANSI_WARNINGS { ON | OFF }
-
- ON
-
当出现被零除的情况或聚合函数中出现空值时,将发出错误或警告。
- OFF
-
出现被零除等情况时不会引发警告,而是返回空值。
建立或更改计算列或索引视图的索引时,SET ANSI_WARNINGS 也必须为 ON。
连接级别设置(使用 SET 语句设置)覆盖 ANSI_WARNINGS 的默认数据库设置。默认情况下,当连接到 SQL Server 的实例时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,将会话的 ANSI_WARNINGS 设置为 ON。有关详细信息,请参阅 SET ANSI_WARNINGS (Transact-SQL)。
可通过查看 sys.databases 目录视图中的 is_ansi_warnings_on 列或 DATABASEPROPERTYEX 函数的 IsAnsiWarningsEnabled 属性来确定此选项的状态。
- ARITHABORT { ON | OFF }
-
- ON
-
在查询执行过程中出现溢出或被零除等错误时,结束查询。
- OFF
-
如果出现其中一个错误则显示警告消息,而查询、批处理或事务继续处理,就好象没有发生错误一样。
建立或更改计算列或索引视图的索引时,SET ARITHABORT 也必须为 ON。
可通过查看 sys.databases 目录视图中的 is_arithabort_on 列或 DATABASEPROPERTYEX 函数的 IsArithmeticAbortEnabled 属性来确定此选项的状态。
- CONCAT_NULL_YIELDS_NULL { ON | OFF }
-
- ON
-
当串联运算的两个操作数中任意一个为 NULL 时,结果也为 NULL。例如,将字符串“This is”和 NULL 串联将得到 NULL 值,而不是值“This is”。
- OFF
-
空值被视为空字符串进行处理。
建立或更改计算列或索引视图的索引时,CONCAT_NULL_YIELDS_NULL 也必须为 ON。
连接级别设置(使用 SET 语句设置)覆盖 CONCAT_NULL_YIELDS_NULL 的默认数据库设置。默认情况下,当连接到 SQL Server 的实例时,ODBC 和 OLE DB 客户端发出连接级别 SET 语句,将会话的 CONCAT_NULL_YIELDS_NULL 设置为 ON。有关详细信息,请参阅 SET CONCAT_NULL_YIELDS_NULL (Transact-SQL)。
可通过查看 sys.databases 目录视图中的 is_concat_null_yields_null_on 列或 DATABASEPROPERTYEX 函数的 IsNullConcat 属性来确定此选项的状态。
- QUOTED_IDENTIFIER { ON | OFF }
-
- ON
-
可以将分隔标识符包含在双引号中。
所有用双引号分隔的字符串都被解释为对象标识符。加引号的标识符不必遵守 Transact-SQL 标识符规则。它们可以是关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。如果单引号 (') 是文字字符串的一部分,则可以用双引号 (") 表示它。
- OFF
-
标识符不能包含在引号中,而且必须遵循所有 Transact-SQL 标识符规则。文字可以由单引号或双引号分隔。
SQL Server 还允许使用方括号 ([ ]) 分隔标识符。无论 QUOTED_IDENTIFIER 的设置如何,都可以始终使用括号标识符。有关详细信息,请参阅分隔标识符(数据库引擎)。
创建表后,表的元数据中 QUOTED IDENTIFIER 选项始终是 ON,即使在创建表时将该选项设置为 OFF。
连接级别设置(使用 SET 语句设置)覆盖 QUOTED_IDENTIFIER 的默认数据库设置。默认情况下,连接到 SQL Server 的实例时,ODBC 和 OLE DB 客户端发出连接级别 SET 语句,将 QUOTED_IDENTIFIER 设置为 ON。有关详细信息,请参阅 SET QUOTED_IDENTIFIER (Transact-SQL)。
可通过查看 sys.databases 目录视图中的 is_quoted_identifier_on 列或 DATABASEPROPERTYEX 函数的 IsQuotedIdentifiersEnabled 属性来确定此选项的状态。
- NUMERIC_ROUNDABORT { ON | OFF }
-
- ON
-
当表达式中发生精度损失时生成错误。
- OFF
-
精度的降低不会生成错误消息,会根据存储结果的列或变量的精度,将结果舍入。
建立或更改计算列或索引视图的索引时,NUMERIC_ROUNDABORT 也必须为 OFF。
可通过查看 sys.databases 目录视图中的 is_numeric_roundabort_on 列或 DATABASEPROPERTYEX 函数的 IsNumericRoundAbortEnabled 属性来确定此选项的状态。
- RECURSIVE_TRIGGERS { ON | OFF }
-
- ON
-
允许递归激发 AFTER 触发器。
- OFF
-
仅不允许 AFTER 触发器的直接递归激发。若还要禁用 AFTER 触发器的间接递归触发,请使用 sp_configure,将嵌套触发器服务器选项设置为 0。
注意: 当 RECURSIVE_TRIGGERS 设置为 OFF 时,只禁止直接递归触发。若要禁用间接递归触发,还必须将 nested triggers 服务器选项设置为 0。 可通过查看 sys.databases 目录视图中的 is_recursive_triggers_on 列或 DATABASEPROPERTYEX 函数的 IsRecursiveTriggersEnabled 属性来确定此选项的状态。
<recovery_option> ::=
控制数据库恢复选项和磁盘 I/O 错误检查。
- FULL
-
通过使用事务日志备份,在媒体发生故障后提供完整恢复。如果数据文件损坏,媒体恢复可以还原所有已提交的事务。有关详细信息,请参阅在完整恢复模式下备份。
- BULK_LOGGED
-
在某些大规模或大容量操作中,可以提供最佳性能,占用的日志空间也最少,因此,在媒体发生故障后,可以提供恢复。有关有日志记录的大容量操作的信息,请参阅按最小方式记录操作。在 BULK_LOGGED 恢复模式下,这些操作的日志记录最少。有关详细信息,请参阅在大容量日志恢复模式下备份。
- SIMPLE
-
系统将提供占用日志空间最小的简单备份策略。服务器故障恢复不再需要的日志空间可被自动重用。有关详细信息,请参阅简单恢复模式下的备份。
重要提示: 简单恢复模式比其他两种模式更容易管理,但代价是数据文件损坏时丢失数据的风险也较大。最近的数据库备份或差异数据库备份之后的所有更改都将丢失,必须手动重新输入。
默认恢复模式由 model 数据库的恢复模式确定。有关选择适当恢复模式的详细信息,请参阅选择数据库恢复模式。
可通过查看 sys.databases 目录视图中的 recovery_model 和 recovery_model_desc 列,或者查看 DATABASEPROPERTYEX 函数的 Recovery 属性来确定此选项的状态。
- TORN_PAGE_DETECTION { ON | OFF }
-
- ON
-
数据库引擎可以检测不完整页。
- OFF
-
数据库引擎不能检测不完整页。
重要提示: 在 Microsoft SQL Server 的未来版本中,将删除语法结构 TORN_PAGE_DETECTION ON | OFF。在新的开发工作中将不使用此语法结构,并计划修改当前使用该语法结构的应用程序。请改用 PAGE_VERIFY 选项。
- PAGE_VERIFY { CHECKSUM | TORN_PAGE_DETECTION | NONE }
-
发现磁盘 I/O 路径错误引起的损坏的数据库页面。磁盘 I/O 路径错误可能导致数据库损坏问题。这种错误通常是将该页面写入磁盘时发生的电源故障或是磁盘硬件故障而引起的。
- CHECKSUM
-
在向磁盘中写入页面时,计算整个页面内容的校验和并将该值存储在页头中。从磁盘中读取页时,将重新计算校验和,并与存储在页头中的校验和值进行比较。如果两个值不匹配,将同时在 SQL Server 错误日志和 Windows 事件日志中报告错误消息 824(指示校验和失败)。校验和失败指示存在 I/O 路径问题。若要确定其根本原因,需要调查硬件、固件驱动程序、BIOS、筛选器驱动程序(如防病毒软件)和其他 I/O 路径组件。
- TORN_PAGE_DETECTION
-
将页面写入磁盘时,将每个 512 字节扇区的特定位保存在 8 KB 数据库页面中并存储在数据库页头中。从磁盘中读取页时,页头中存储的残缺位将与实际的页扇区信息进行比较。如果值不匹配,表明只有页面的一部分被写入磁盘。在这种情况下,将同时在 SQL Server 错误日志和 Windows 事件日志中报告错误消息 824(指示残缺页面错误)。如果页面写入确实不完整,则数据库恢复通常会检测到残缺页面。不过,其他 I/O 路径故障可能随时导致残缺页的出现。
- NONE
-
数据库页面写入不会生成 CHECKSUM 或 TORN_PAGE_DETECTION 值。在读取过程中,即使页头中存在 CHECKSUM 或 TORN_PAGE_DETECTION 值,SQL Server 也不会验证校验和或残缺页。
使用 PAGE_VERIFY 选项时,请考虑下列重要事项:
- 在 SQL Server 2005 中,默认设置为 CHECKSUM。在 SQL Server 2000 中,TORN_PAGE_DETECTION 是默认设置。
- 在用户数据库或系统数据库升级到 SQL Server 2005 后,将保留 PAGE_VERIFY 值(NONE 或 TORN_PAGE_DETECTION)。建议您使用 CHECKSUM。
- TORN_PAGE_DETECTION 可能使用较少资源,但提供的 CHECKSUM 保护最少。
- 无需使数据库脱机、锁定数据库或以其他方式阻止对数据库的并发访问,即可设置 PAGE_VERIFY。
- CHECKSUM 与 TORN_PAGE_DETECTION 互相排斥。不能同时启用这两个选项。
检测到残缺页或校验和时,如果故障仅限于索引页上,则可通过还原数据,可能还需要重建索引进行恢复。如果要在校验和失败的情况下确定受影响的一个或多个数据库页面的类型,请运行 DBCC CHECKDB。有关还原选项的详细信息,请参阅RESTORE 参数 (Transact-SQL)。虽然还原数据可解决数据损坏问题,但应尽快诊断并更正磁盘硬件故障等根本原因,以防止继续出错。
SQL Server 将对因校验和、残缺页或其他 I/O 错误而失败的任何读取都重试四次。如果在其中一次尝试中读取成功,则会向错误日志中写入一条消息,且触发读取的命令将继续。如果重试失败,则该命令失败,且显示错误消息 824。
有关校验和、页撕裂、读取重试、错误消息 823 和 824 以及其他 SQL Server I/O 审核功能的详细信息,请参阅此 Microsoft 网站。
可通过查看 sys.databases 目录视图中的 page_verify_option 列或 DATABASEPROPERTYEX 函数的 IsTornPageDetectionEnabled 属性来确定此选项的状态。
<database_mirroring_option>::=
控制数据库的数据库镜像。使用数据库镜像选项指定