导出 (0) 打印
全部展开
此文章由人工翻译。 将光标移到文章的句子上,以查看原文。 更多信息。
译文
原文

ALTER DATABASE (Transact-SQL)

修改一个数据库或与该数据库关联的文件和文件组。 在数据库中添加或删除文件和文件组、更改数据库的属性或其文件和文件组、更改数据库排序规则和设置数据库选项。 不能修改数据库快照。 若要修改与复制相关的数据库选项,请使用 sp_replicationdboption

适用于:SQL Server(SQL Server 2008 至当前版本),Azure SQL Database(初始版本至当前版本)。

由于 ALTER DATABASE 语法的篇幅较长,因此分为以下主题:

ALTER DATABASE

当前主题介绍的是用于更改数据库的名称和排序规则的语法。

ALTER DATABASE 文件和文件组选项

介绍了用于从数据库中添加和删除文件和文件组以及更改文件和文件组的属性的语法。

ALTER DATABASE SET 选项

介绍了使用 ALTER DATABASE 的 SET 选项来更改数据库属性的语法。

ALTER DATABASE 数据库镜像

介绍了 ALTER DATABASE 与数据库镜像相关的 SET 选项的语法。

ALTER DATABASE SET HADR

提供 ALTER DATABASE 的 AlwaysOn 可用性组 选项的语法,该语法用来在 AlwaysOn 可用性组的辅助副本上配置辅助数据库。

ALTER DATABASE 兼容级别

介绍了 ALTER DATABASE 与数据库兼容级别相关的 SET 选项的语法。

主题链接图标 Transact-SQL 语法约定

-- SQL Server Syntax
ALTER DATABASE { database_name  | CURRENT }
{
    MODIFY NAME = new_database_name 
  | COLLATE collation_name
  | <file_and_filegroup_options>
  | <set_database_options>
}
[;]

<file_and_filegroup_options >::=
  <add_or_modify_files>::=
  <filespec>::= 
  <add_or_modify_filegroups>::=
  <filegroup_updatability_option>::= 

<set_database_options>::=
  <optionspec>::= 
  <auto_option> ::= 
  <change_tracking_option> ::=
  <cursor_option> ::= 
  <database_mirroring_option> ::= 
  <date_correlation_optimization_option> ::=
  <db_encryption_option> ::=
  <db_state_option> ::=
  <db_update_option> ::=
  <db_user_access_option> ::= 
  <delayed_durability_option> ::=  <external_access_option> ::=
  <FILESTREAM_options> ::=
  <HADR_options> ::=  
  <parameterization_option> ::=
  <recovery_option> ::= 
  <service_broker_option> ::=
  <snapshot_option> ::=
  <sql_option> ::= 
  <termination> ::=
-- Azure SQL Database Syntax
ALTER DATABASE database_name 
{
    MODIFY NAME =new_database_name
  | MODIFY ( <edition_options> [, ... n] ) 
  | SET { <set_database_options> } 
}

<edition_options> ::= 
{
    ( MAXSIZE = {1 | 5 | 10 | 20 | 30 … 150} GB ) 
  | ( EDITION = {'web' | 'business'} ) 
}

<set_database_options> ::= 
    <db_update_option>
<db_update_option> ::= 
    { READ_ONLY | READ_WRITE }
 [;]

database_name

要修改的数据库的名称。

注意 注意

此选项在包含的数据库中不可用。

CURRENT

适用于:SQL Server 2012 到 SQL Server 2014。

指定应更改当前使用的数据库。

MODIFY NAME =new_database_name

使用指定的名称 new_database_name 重命名数据库。

COLLATE collation_name

适用于:SQL Server 2008 到 SQL Server 2014。

指定数据库的排序规则。 collation_name 既可以是 Windows 排序规则名称,也可以是 SQL 排序规则名称。 如果不指定排序规则,则将 SQL Server 实例的排序规则指定为数据库的排序规则。

有关 Windows 和 SQL 排序规则名称的详细信息,请参阅 COLLATE (Transact-SQL)

MODIFY (MAXSIZE = [1 | 5 | 10 | 20 | 30 … 150….500] GB)

适用于:Azure SQL Database

指定数据库的最大大小。 该最大大小必须符合针对数据库的 EDITION 属性的有效值集。 更改数据库的最大大小可能导致更改数据库 EDITION。 下表列出 SQL Database 服务层支持的 MAXSIZE 值和默认值 (D)。

MAXSIZE

Web

Business

Basic

Standard

Premium

100 MB

√ (D)

500 MB

√ (D)

1 GB

√ (D)

2 GB

5 GB

10 GB

√ (D)

√ (D)

20 GB

30 GB

40 GB

50 GB

100 GB

150 GB

200 GB

250 GB

300 GB

400 GB

500 GB

以下规则适用于 MAXSIZE 和 EDITION 参数:

有两种类型的数据库服务器:一种支持 Web、Business 和 Premium,另一种支持 Basic、Standard 和 Premium。 规则可能因您用于运行 ALTER 命令的服务器而异:

支持 Web、Business 和 Premium 的服务器(也称为服务器版本 1.0)

  • MAXSIZE 值(如果指定)必须是上表中显示的有效值。

  • 如果 MAXSIZE 设置为小于 5GB,并且未指定 EDITION,则数据库版本将自动设置为 Web。

  • 如果 MAXSIZE 设置为大于 5GB,并且未指定 EDITION,则数据库版本将自动设置为 Business。

  • 如果指定了 EDITION,但未指定 MAXSIZE,则使用版本的默认值。 例如,如果 EDITION 设置为 Business 并且未指定 MAXSIZE,则 MAXSIZE 将自动设置为 10GB。

  • 如果 MAXSIZE 和 EDITION 均未指定,则 EDITION 设置为 Web,MAXSIZE 设置为 1GB。

支持 Basic、Standard 和 Premium 的服务器(也称为服务器版本 2.0)

  • MAXSIZE 值(如果指定)必须是上表中显示的有效值。

  • 如果指定了 EDITION,但未指定 MAXSIZE,则使用版本的默认值。 例如,如果 EDITION 设置为 Standard 并且未指定 MAXSIZE,则 MAXSIZE 将自动设置为 500MB。

  • 如果 MAXSIZE 和 EDITION 均未指定,则 EDITION 设置为 Basic,MAXSIZE 设置为 100MB。

MODIFY (EDITION = ['web' | 'business'| 'basic' | 'standard' 'premium' |])

适用于:Azure SQL Database

更改数据库的版本。 SQL Database 服务层可以使用 EDITION 参数进行设置或修改。 如果数据库的 MAXSIZE 属性设置为该版本支持的有效范围之外的值,则 EDITION 更改将失败。

为 EDITION 指定的值必须受用于运行 ALTER 命令的数据库服务器支持。 例如,如果在支持 Web、Business 和 Premium 的服务器上运行该命令,则不能将 EDITION 设置为“web”。

重要说明 重要提示

将来的版本中不支持 Web 和 Business 服务层。 有关详细信息,请参阅 Web 和 Business 常见问题

<db_update_option> ::=

适用于:Azure SQL Database

控制是否允许更新数据库。

{ READ_ONLY | READ_WRITE }

READ_ONLY

用户可以从数据库读取数据,但不能修改数据库。

READ_WRITE

允许对数据库执行读写操作。

注意 注意

在 SQL Database 联合数据库上,将禁用 SET { READ_ONLY | READ_WRITE }。

<delayed_durability_option> ::=

适用于:SQL Server 2014 到 SQL Server 2014。

有关详细信息,请参阅 ALTER DATABASE SET 选项 (Transact-SQL)控制事务持续性

<file_and_filegroup_options >::=

有关详细信息,请参阅 ALTER DATABASE 文件和文件组选项 (Transact-SQL)

若要删除数据库,请使用 DROP DATABASE

若要减小数据库的大小,请使用 DBCC SHRINKDATABASE

ALTER DATABASE 语句必须在自动提交模式(默认事务管理模式)下运行,且不允许用于显式或隐式事务中。

对数据库文件状态(例如,联机或脱机)的维护是独立于数据库状态的。 有关详细信息,请参阅文件状态 文件组中文件的状态决定整个文件组的可用性。 文件组中的所有文件都必须联机,文件组才可用。 如果文件组脱机,则使用 SQL 语句访问文件组的所有尝试都会失败并报告错误。 在为 SELECT 语句生成查询计划时,查询优化器会避免驻留在脱机文件组中的非聚集索引和索引视图。 这样,这些语句就会成功。 但是,如果脱机文件组包含目标表的堆或聚集索引,SELECT 语句将失败。 此外,如果 INSERT、UPDATE 或 DELETE 语句修改的表的索引包含在脱机文件组中,这些语句将失败。

当数据库处于 RESTORING 状态时,多数 ALTER DATABASE 语句都将失败。 设置数据库镜像选项除外。 在活动还原操作期间,或者当数据库还原操作或日志文件还原操作由于备份文件损坏而失败时,数据库可以处于 RESTORING 状态。

通过设置以下选项之一来清除 SQL Server 实例的计划高速缓存:

OFFLINE

READ_WRITE

ONLINE

MODIFY FILEGROUP DEFAULT

MODIFY_NAME

MODIFY FILEGROUP READ_WRITE

COLLATE

MODIFY FILEGROUP READ_ONLY

READ_ONLY

PAGE_VERIFY

清除计划高速缓存将导致对所有后续执行计划进行重新编译,并可能导致查询性能暂时性地突然降低。 对于计划高速缓存中每个已清除的缓存存储区,SQL Server 错误日志包含以下信息性消息:“由于某些数据库维护或重新配置操作,SQL Server 经历了 '%s' 缓存存储区(计划高速缓存的一部分)的 %d 次刷新”。 每隔五分钟,只要在这段时间间隔内刷新缓存,就会记录此消息一次。

在下列情况下,也会刷新过程缓存:

  • 数据库的 AUTO_CLOSE 数据库选项设置为 ON。 在没有用户连接引用或使用该数据库时,后台任务将尝试自动关闭数据库。

  • 针对具有默认选项的数据库运行多个查询。 然后,删除数据库。

  • 删除源数据库的数据库快照。

  • 您已成功重新生成数据库的事务日志。

  • 还原数据库备份。

  • 分离数据库。

更改数据库排序规则

在对数据库应用不同排序规则之前,请确保已满足下列条件:

  1. 您是当前数据库的唯一用户。

  2. 没有依赖数据库排序规则的架构绑定对象。

    如果数据库中存在下列依赖于数据库排序规则的对象,则 ALTER DATABASEdatabase_nameCOLLATE 语句将失败。 SQL Server 将对每个阻塞 ALTER 操作的对象返回一条错误消息:

    • 通过 SCHEMABINDING 创建的用户定义函数和视图。

    • 计算列。

    • CHECK 约束。

    • 表值函数返回包含字符列的表,这些列继承了默认的数据库排序规则。

    数据库排序规则更改时,非绑定到架构的实体的依赖关系信息将自动更新。

改变数据库的排序规则不会在任何数据对象的系统名称中产生重复名称。 如果改变排序规则后出现重复的名称,则下列命名空间可能导致改变数据库排序规则的操作失败:

  • 对象名,如过程、表、触发器或视图。

  • 架构名称

  • 主体,例如组、角色或用户。

  • 标量类型名,如系统和用户定义类型。

  • 全文目录名称。

  • 对象内的列名或参数名。

  • 表范围内的索引名。

由新的排序规则产生的重复名称将导致更改操作失败,SQL Server 将返回错误消息,指出重复名称所在的命名空间。

查看数据库信息

可以使用目录视图、系统函数和系统存储过程返回有关数据库、文件和文件组的信息。

SQL Server

需要对数据库具有 ALTER 权限。

Azure SQL Database

只有服务器级主体登录名(由设置过程创建)或 dbmanager 数据库角色的成员可以更改数据库。

安全说明 安全说明

数据库的所有者不能更改数据库,除非他们是 dbmanager 角色的成员。

A.更改数据库的名称

以下示例将 AdventureWorks2012 数据库的名称更改为 Northwind

USE master;
GO
ALTER DATABASE AdventureWorks2012
Modify Name = Northwind ;
GO

B.更改数据库的排序规则

以下示例创建了一个名为 testdb、排序规则为 SQL_Latin1_General_CP1_CI_AS 的数据库,然后将 testdb 数据库的排序规则更改为 COLLATE French_CI_AI

适用于:SQL Server 2008 到 SQL Server 2014。

USE master;
GO

CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO

社区附加资源

添加
显示:
© 2014 Microsoft