修改一个数据库或与该数据库关联的文件和文件组。在数据库中添加或删除文件和文件组、更改数据库的属性或其文件和文件组、更改数据库排序规则和设置数据库选项。不能修改数据库快照。若要修改与复制相关的数据库选项,请使用 。
-
要修改的数据库的名称。
-
指定数据库的排序规则。collation_name 既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。如果不指定排序规则,则将 SQL Server 实例的排序规则指定为数据库的排序规则。
有关 Windows 排序规则名称和 SQL 排序规则名称的详细信息,请参阅 。
指定要添加、删除或修改的文件。
-
-
指定要将指定文件添加到的文件组。若要显示当前文件组和当前的默认文件组,请使用 目录视图。
-
-
将要添加的日志文件添加到指定的数据库。
-
从 SQL Server 的实例中删除逻辑文件说明并删除物理文件。除非文件为空,否则无法删除文件。
-
在 SQL Server 中引用文件时所用的逻辑名称。
-
-
指定应修改的文件。一次只能更改一个 <filespec> 属性。必须在 <filespec> 中指定 NAME,以标识要修改的文件。如果指定了 SIZE,那么新大小必须比文件当前大小要大。
若要修改数据文件或日志文件的逻辑名称,请在 NAME 子句中指定要重命名的逻辑文件名称,并在 NEWNAME 子句中指定文件的新逻辑名称。例如:
若要将数据文件或日志文件移至新位置,请在 NAME 子句中指定当前的逻辑文件名称,并在 FILENAME 子句中指定新路径和操作系统文件名称。例如:
在移动全文目录时,请只在 FILENAME 子句中指定新路径。不要指定操作系统文件名称。
有关详细信息,请参阅。
-
-
在 SQL Server 的实例中引用文件时所用的逻辑名称。
-
-
指定文件的新逻辑名称。
-
用于替换现有逻辑文件名称的名称。该名称在数据库中必须唯一,并应符合规则。该名称可以是字符或 Unicode 常量、常规标识符或定界标识符。有关详细信息,请参阅。
-
-
指定操作系统(物理)文件名称。
-
创建文件时操作系统使用的路径和文件名。该文件必须驻留在安装 SQL Server 的服务器上。在执行 ALTER DATABASE 语句前,指定的路径必须已经存在。
不应将数据文件放在压缩文件系统中,除非这些文件是只读辅助文件或该数据库是只读的。日志文件一定不要放在压缩文件系统中。有关详细信息,请参阅。
如果文件位于原始分区上,则 os_file_name 必须仅指定现有原始分区的驱动器号。每个原始分区上只能存放一个文件。
-
-
-
与 ADD FILE 一起指定时,size 是文件的初始大小。与 MODIFY FILE 一起指定时,size 是文件的新大小,而且必须大于文件的当前大小。
如果没有为主文件提供 size,则 SQL Server 2005 数据库引擎将使用 model 数据库中的主文件的大小。如果指定了辅助数据文件或日志文件,但未指定该文件的 size ,则数据库引擎将以 1 MB 作为该文件的大小。
后缀 KB、MB、GB 和 TB 可用于指定千字节、兆字节、千兆字节或兆兆字节。默认值为 MB。指定整数,不包含小数。若要指定兆字节的分数,应通过乘以数字 1024 将该值转换为千字节。例如,应指定 1536 KB 而不是 :7777'
-
如果会话是使用 ALTER DATABASE 语句而不是 SQL Server Management Studio 设置的,则默认情况下该会话将设置为完全事务安全(SAFETY 设置为 FULL),并在无自动故障转移功能的高安全模式下运行。若要允许自动故障转移,请配置见证服务器;若要运行高性能模式,请关闭事务安全性 |
-
手动将故障从主体服务器转移到镜像服务器。只能在主体服务器上指定 FAILOVER。此选项仅在 SAFETY 设置为 FULL(默认设置)时有效。
有关详细信息,请参阅。
-
未发生自动故障转移时,在数据库处于不同步状态或处于同步状态的情况下当主体服务器失败后,强制数据库服务转向镜像数据库。
极力建议仅在主体服务器不再运行时强制运行该服务。否则,部分客户端可能会继续访问原始主体数据库而不是新的主体数据库。
- WITNESS 设置为 OFF,或者将见证服务器连接到镜像服务器。
仅当您愿意为立即还原数据库服务而承担部分数据丢失的风险时,才能强制服务运行。有关强制运行服务的替代项的信息,请参阅。
强制服务会挂起会话,并暂时将所有数据保留在原始的主体数据库中。一旦原始主体服务器进入服务状态并且能够与新的主体服务器通信时,数据库管理员就可以恢复服务。如果会话恢复,则所有未发送的日志记录和对应的更新都会丢失。
有关强制服务所面临风险的详细信息,请参阅。
- WITNESS 设置为 OFF,或者将见证服务器连接到镜像服务器。
-
删除数据库镜像会话,并从数据库删除镜像。可以在任一合作伙伴上指定 OFF。有关删除镜像会产生什么影响的信息,请参阅。
-
恢复挂起的数据库镜像会话。只能在主体服务器上指定 RESUME。
-
设置事务安全的级别。只能在主体服务器上指定 SAFETY。
默认值为 FULL。使用完全安全性,数据库镜像会话将同步运行(在“高安全模式”下)。如果将 SAFETY 设置为 OFF,则数据库镜像会话将异步运行(在“高性能模式”下)。
高安全模式的行为部分取决于见证服务器,如下所示:
- 当安全性设置为 FULL 并且已为该会话设置见证服务器时,会话将运行在高安全模式下,并且具有自动故障转移功能。失去主体服务器时,如果数据库被同步并且镜像服务器实例和见证服务器仍然相互连接(即它们有仲裁),则会话将自动故障转移。有关详细信息,请参阅。
如果为会话设置了见证服务器,但是当前未连接见证服务器,则镜像服务器的丢失会导致主体服务器出现故障。
- 当安全性设置为 FULL 并且已将见证服务器设置为 OFF 时,会话将运行在高安全模式下,但没有自动故障转移功能。如果镜像服务器实例出现故障,则不会影响主体服务器实例。如果主体服务器实例出现故障,则可以将服务(可能丢失数据)强制到镜像服务器实例。
如果将 SAFETY 设置为 OFF,则会话将运行在高性能模式下,并且不支持自动故障转移和手动故障转移。但是,镜像服务器的问题不会影响主体服务器的问题,如果主体服务器实例停止运行,如果需要,则可以强制服务(可能丢失数据)转到镜像服务器实例 - 如果 WITNESS 设置为 OFF,或者见证服务器当前连接到镜像服务器。有关强制服务的详细信息,请参阅这一部分前面的“FORCE_SERVICE_ALLOW_DATA_LOSS”。
高性能模式并非旨在使用见证服务器。但是,我们极力建议您:一旦将 SAFETY 设置为 OFF,也要确保将 WITNESS 也设置为 OFF。 有关详细信息,请参阅 。
- 当安全性设置为 FULL 并且已为该会话设置见证服务器时,会话将运行在高安全模式下,并且具有自动故障转移功能。失去主体服务器时,如果数据库被同步并且镜像服务器实例和见证服务器仍然相互连接(即它们有仲裁),则会话将自动故障转移。有关详细信息,请参阅。
-
可以在任一合作伙伴上指定 SUSPEND。
-
以秒为单位指定超时期限。超时期限是在认为镜像会话中的另一实例已断开连接之前,一个服务器实例等待接收来自该镜像会话另一实例的 PING 消息的最长时间。
只能在主体服务器上指定 TIMEOUT 选项。如果不指定此选项,则在默认情况下,超时期限为 10 秒。如果指定 5 或更高,则超时期限将设置为指定的秒数。如果指定 0 到 4 秒之间的超时值,则超时期限将自动设置为 5 秒。
我们建议您将超时期限保持为 10 秒或更长。如果将值设置为低于 10 秒,则可能使高负荷系统丢失 PING 并声明错误故障。 有关详细信息,请参阅。
-
控制定义数据库镜像见证服务器的数据库属性。SET WITNESS 子句会影响数据库的两个副本,但只能在主体服务器上指定 SET WITNESS。如果为会话设置一个见证服务器,则需要仲裁为数据库提供服务,而不用考虑 SAFETY 设置;有关详细信息,请参阅。
建议使见证服务器和故障转移合作伙伴驻留在单独服务器上。有关见证服务器的信息,请参阅。有关自动故障转移的信息,请参阅。
若要执行 SET WITNESS 语句,必须将主体服务器和见证服务器实例端点的 STATE 都设置为 STARTED。另请注意,必须将见证服务器实例的数据库镜像端点的 ROLE 设置为 WITNESS 或 ALL。有关指定端点的信息,请参阅。
若要了解服务器实例的数据库镜像端点的角色和状态,请使用以下 Transact-SQL 语句:
不能在见证服务器上设置数据库属性。 -
指定一个数据库引擎实例,作为数据库镜像会话的见证服务器。只能在主体服务器上指定 SET WITNESS 语句。
-
从数据库镜像会话中删除见证服务器。将见证服务器设置为 OFF 会禁用自动故障转移。如果数据库设置为 FULL SAFETY 并且见证服务器设置为 OFF,则镜像服务器上的故障会导致主体服务器使该数据库不可用。
-
-
指定数据库应接收新的 Broker 标识符。由于该数据库被视为新的 Service Broker,所以将立即删除数据库中的所有现有会话,而不生成结束对话框消息。
-
指定在连接数据库时,数据库中的会话应接收错误消息。这样,您的应用程序即可为现有会话执行定期清理。
-
-
SQL Server 维护由 FOREIGN KEY 约束链接并包含 datetime 列的数据库中的任意两个表中之间的相关统计信息。有关详细信息,请参阅。
-
-
-
基于数据库的默认行为使查询参数化。有关详细信息,请参阅。
-
SQL Server 使数据库中的所有查询参数化。有关详细信息,请参阅。
-
-
-
事务可指定 SNAPSHOT 事务隔离级别。当事务在 SNAPSHOT 隔离级别运行时,所有的语句都将数据快照视为位于事务的开头。如果在 SNAPSHOT 隔离级别运行的事务要访问多个数据库中的数据,则必须将所有数据库中的 ALLOW_SNAPSHOT_ISOLATION 都设置为 ON,或者事务中的每个语句都必须将 FROM
-
事务不能指定 SNAPSHOT 事务隔离级别。
语句未立即返回,请使用 确定是否存在长期运行的事务。如果 ALTER DATABASE 语句被取消,则数据库仍保持 ALTER DATABASE 开始时所处的状态。 目录视图指示数据库中的快照隔离事务的状态。如果
的设置,则每次停止和重新启动数据库引擎实例时会保留该设置。如果为 model 更改该设置,则该设置将成为除 tempdb 以外的所有新建数据库的默认设置。
默认情况下,在 master 和 msdb 数据库中,该选项设置为 ON。
-
-
-
指定已提交读隔离级别的事务使用行版本控制而不是锁定。当事务在已提交读隔离级别运行时,所有的语句都将数据快照视为位于语句的开头。
为了将 READ_COMMITTED_SNAPSHOT 设置为 ON 或 OFF,不应存在任何活动的数据库连接,执行 ALTER DATABASE 命令的连接除外。但是,数据库不必一定要处于单用户模式下。当数据库处于 OFFLINE 状态时,不能更改此选项的状态。
tempdb 以外的所有新建数据库的默认设置。
-
指定当数据库从一种状态转换到另一种状态时,何时回滚未完成的事务。如果终止子句被忽略,则当数据库中存在任何锁时,ALTER DATABASE 语句将无限期等待。只能指定一条终止子句,而且该子句应跟在 SET 子句后面。
并非所有数据库选项都使用 WITH <termination> 子句。有关详细信息,请参阅“备注”部分中的“设置选项”下面的表。 |
-
设定是在指定秒数之后回滚还是立即回滚。
-
指定如果请求的数据库语句或选项更改只有等待事务自主提交或回滚才能立即完成,该请求将失败。
若要删除数据库,请使用 。
若要减小数据库的大小,请使用 。
当 BACKUP 语句正在运行时,不能添加或删除文件。
最多可以为每个数据库指定 32,767 个文件和 32,767 个文件组。
ALTER DATABASE 语句必须在自动提交模式(默认事务管理模式)下运行,且不允许用于显式或隐式事务中。有关详细信息,请参阅。
在 SQL Server 2005 中,对数据库文件状态(例如,联机或脱机)的维护是独立于数据库状态而进行的。有关详细信息,请参阅。文件组中文件的状态决定整个文件组的可用性。文件组中的所有文件都必须联机,文件组才可用。如果文件组脱机,则使用 SQL 语句访问文件组的所有尝试都会失败并报告错误。在为 SELECT 语句生成查询计划时,查询优化器会避免驻留在离线文件组中的非聚集索引和索引视图。这样,这些语句就会成功。但是,如果离线文件组包含目标表的堆或聚集索引,SELECT 语句将失败。此外,如果 INSERT、UPDATE 或 DELETE 语句修改的表的索引包含在离线文件组中,这些语句将失败。
当数据库处于 RESTORING 状态时,多数 ALTER DATABASE 语句都将失败。设置数据库镜像选项除外。在活动还原操作期间,或者当数据库还原操作或日志文件还原操作由于备份文件损坏而失败时,数据库可以处于 RESTORING 状态。有关详细信息,请参阅。
若要检索数据库选项的当前设置,请使用 目录视图或 。有关最初创建数据库时所分配的默认值列表,请参阅。
设置数据库选项后,修改将立即生效。
若要更改所有新创建数据库的任意数据库选项的默认值,请更改 model 数据库中的适当数据库选项。
并非所有数据库选项都使用 WITH <termination> 子句,或可以结合其他选项指定。下表列出这些选项以及它们的选项和终止状态。
通过设置以下选项之一来清除 SQL Server 实例的计划缓存:
清除计划缓存将导致对所有后续执行计划进行重新编译,并可能导致查询性能暂时性地突然降低。在 SQL Server 2005 Service Pack 2 中,对于计划缓存中的各个已清除的缓存存储区而言,SQL Server 错误日志将包含以下信息性消息:“由于某些数据库维护或重新配置操作,SQL Server 经历了 '%s' 缓存存储区(计划缓存的一部分)的 %d 次刷新”。只要每五分钟刷新一次缓存,此消息就将每五分钟记录一次。
在 SQL Server 2005 中,可通过在 FILENAME 中指定新位置来移动系统或用户定义的数据和日志文件。这在下列情况下可能很有用:
- 故障恢复。例如,数据库处于可疑模式或因硬件故障而关闭。
- 为预定的磁盘维护操作而进行的重定位。
有关详细信息,请参阅。
默认情况下,在执行下列操作之一时,将通过在文件中填充零来初始化数据和日志文件。
- 向现有数据库添加文件。
在 SQL Server 2005 中,可以在瞬间对数据文件进行初始化。这样,可以快速执行这些文件操作。有关详细信息,请参阅。
在对数据库应用不同排序规则之前,请确保已满足下列条件:
- 您是当前数据库的唯一用户。
- 没有依赖数据库排序规则的架构绑定对象。
- 表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。
- 表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。
- 改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。
如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:
- 对象名,如过程、表、触发器或视图。
- 主体,例如组、角色或用户。
- 标量类型名,如系统和用户定义类型。
- 对象内的列名或参数名。
- 对象名,如过程、表、触发器或视图。
可以使用目录视图、系统函数和系统存储过程返回有关数据库、文件和文件组的信息。有关详细信息,请参阅。
需要对数据库具有 ALTER 权限。
A. 向数据库中添加文件
B. 向数据库中添加由两个文件组成的文件组
C. 向数据库中添加两个日志文件
D. 从数据库中删除文件
以下示例删除示例 B 中添加的一个文件。
以下示例增加示例 B 中添加的一个文件的大小。
F. 将文件移至新位置
以下示例将在示例 A 中创建的 Test1dat2 文件移至新目录中。
必须先将该文件实际移至新目录中,然后才能运行此示例。然后,停止和启动 SQL Server 的实例,或使 AdventureWorks 数据库 OFFLINE 再 ONLINE,以实施更改。 |
以下示例将 tempdb 从其在磁盘上的当前位置移至另一个磁盘位置。由于每次启动 MSSQLSERVER 服务时都会重新创建 tempdb,因此您不必实际移动数据和日志文件。这些文件将在步骤 3 中重新启动服务时创建。重新启动服务后,tempdb 才继续在当前位置发挥作用。
- 确定 tempdb 数据库的逻辑文件名称以及这些文件在磁盘上的当前位置。
H. 使文件组成为默认文件组
以下示例使示例 B 中创建的 Test1FG1 文件组成为默认文件组。然后,默认文件组被重置为 PRIMARY 文件组。请注意,必须使用括号或引号分隔 PRIMARY。
以下示例设置 AdventureWorks 示例数据库的恢复模式和数据页面验证选项。
将数据库或文件组的状态改为 READ_ONLY 或 READ_WRITE 需要具有数据库的独占访问权。以下示例将数据库设置为 SINGLE_USER 模式,以获得独占访问权。然后,该示例将 AdventureWorks 数据库的状态设置为 READ_ONLY,然后将对数据库的访问权返回给所有用户。
K. 在数据库上启用快照隔离
以下示例为 AdventureWorks 数据库启用快照隔离框架选项。
结果集显示快照隔离框架已启用。
L. 创建具有见证服务器的数据库镜像会话
设置具有见证服务器的数据库镜像会话需要配置安全性并准备镜像数据库,还需要使用 ALTER DATABASE 设置合作伙伴。有关完整设置过程的示例,请参阅。
M. 手动将故障转移到数据库镜像会话
可从任一数据库镜像合作伙伴启动手动故障转移。进行故障转移之前,应确认您认为是当前主体服务器的服务器确实是主体服务器。例如,对于 AdventureWorks 数据库,请在您认为是当前主体服务器的服务器上执行以下查询:
以下示例假定该服务器是当前主体。
- 手动将故障转移到数据库镜像合作伙伴:
- 若要在新镜像上验证故障转移结果,请执行以下查询: