ALTER DATABASE (Transact-SQL)
データベース、またはそのデータベースに関連付けられているファイルおよびファイル グループを変更します。データベースに対するファイルやファイル グループの追加と削除、データベースおよびデータベースのファイルやファイル グループの属性の変更、データベースの照合順序の変更、データベース オプションの設定を行えます。データベース スナップショットは変更できません。レプリケーションに関連するデータベース オプションを変更するには、sp_replicationdboption を使用してください。
解説が長くなるため、ALTER DATABASE の構文は次の各トピックに分けて説明しています。
ALTER DATABASE
このトピックでは、データベースの名前と照合順序を変更するための構文について説明します。ALTER DATABASE の File および Filegroup オプション
データベースのファイルおよびファイル グループを追加したり削除したりするための構文のほか、ファイルおよびファイル グループの属性を変更するための構文について説明します。ALTER DATABASE の SET オプション
ALTER DATABASE の SET オプションを使ってデータベースの属性を変更するための構文について説明します。ALTER DATABASE データベース ミラーリング
ALTER DATABASE のデータベース ミラーリングに関連した SET オプションの構文について説明します。ALTER DATABASE 互換性レベル
ALTER DATABASE のデータベース互換性レベルに関連した SET オプションの構文について説明します。
構文
ALTER DATABASE database_name
{
| 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> ::= <external_access_option> ::= <parameterization_option> ::= <recovery_option> ::= <service_broker_option> ::= <snapshot_option> ::= <sql_option> ::= <termination> ::=
引数
database_name
変更するデータベースの名前を指定します。MODIFY NAME =new_database_name
データベースの名前を、new_database_name で指定した名前に変更します。COLLATE collation_name
データベースの照合順序を指定します。collation_name には、Windows 照合順序名または SQL 照合順序名のいずれかを指定できます。指定しない場合は、データベースに SQL Server インスタンスの照合順序が割り当てられます。Windows 照合順序名および SQL 照合順序名の詳細については、「COLLATE (Transact-SQL)」を参照してください。
<file_and_filegroup_options >::=
詳細については、「ALTER DATABASE の File および Filegroup オプション (Transact-SQL)」を参照してください。
<set_database_options >::=
詳細については、「ALTER DATABASE の SET オプション (Transact-SQL)」を参照してください。
説明
データベースを削除するには、DROP DATABASE を使用します。
データベースのサイズを縮小するには、DBCC SHRINKDATABASE を使用します。
ALTER DATABASE ステートメントは自動コミット モード (既定のトランザクション管理モード) で実行する必要があり、明示的または暗黙的なトランザクション モードでは許可されません。詳細については、「トランザクションの自動コミット」を参照してください。
SQL Server 2005 以降では、データベース ファイルの状態 (オンラインかオフラインかなど) は、データベースの状態とは別に保持されます。詳細については、「ファイルの状態」を参照してください。ファイル グループ内のファイルの状態は、ファイル グループ全体の可用性を決定します。ファイル グループを使用可能にするには、ファイル グループ内のすべてのファイルがオンラインである必要があります。ファイル グループがオフラインの場合、SQL ステートメントでそのファイル グループにアクセスを試行するとエラーが発生します。SELECT ステートメントのクエリ プランを作成する場合、クエリ オプティマイザーは、オフラインのファイル グループにある非クラスター化インデックスやインデックス付きビューを回避します。これにより、これらのステートメントは正常に実行できます。ただし、オフラインのファイル グループに、対象テーブルのヒープやクラスター化インデックスが含まれている場合には、SELECT ステートメントは失敗します。また、オフラインのファイル グループ内にあるインデックス付きのテーブルを変更する INSERT、UPDATE、または DELETE ステートメントは失敗します。
データベースが RESTORING 状態にある場合、大半の ALTER DATABASE ステートメントは失敗します。ただし、データベース ミラーリング オプションの設定は例外です。データベースが RESTORING 状態になるのは、アクティブな復元操作中や、バックアップ ファイルの破損によりデータベースまたはログ ファイルの復元操作が失敗した場合などです。詳細については、「バックアップの破損による SQL Server 復元エラーの対応」を参照してください。
SQL Server のインスタンスのプラン キャッシュは、次のいずれかのオプションを設定することにより消去されます。
OFFLINE |
READ_WRITE |
ONLINE |
MODIFY FILEGROUP DEFAULT |
MODIFY_NAME |
MODIFY FILEGROUP READ_WRITE |
COLLATE |
MODIFY FILEGROUP READ_ONLY |
READ_ONLY |
|
プラン キャッシュが消去されると、後続のすべての実行プランが再コンパイルされ、場合によっては、クエリ パフォーマンスが一時的に急激に低下します。プラン キャッシュ内のキャッシュストアが消去されるたびに、"SQL Server は、一部のデータベース メンテナンス操作または再構成操作により、'%s' キャッシュストア (プラン キャッシュの一部) のキャッシュストア フラッシュを %d 個検出しました。" という情報メッセージが SQL Server エラー ログに記録されます。このメッセージは、キャッシュが 5 分以内にフラッシュされる場合に限り、その間隔でログに記録されます。
データベースの照合順序の変更
データベースに別の照合順序を適用する前に、次の条件が満たされているかどうかを確認してください。
現在データベースを使用しているのは、1 人だけである。
データベースの照合順序に依存するスキーマ バインド オブジェクトがない。
データベースの照合順序に依存する次のオブジェクトがデータベース内に存在する場合、ALTER DATABASEdatabase_nameCOLLATE ステートメントは失敗します。SQL Server は、ALTER アクションをブロックしているオブジェクトごとにエラー メッセージを返します。
SCHEMABINDING を指定して作成されたユーザー定義関数およびビュー
計算列
CHECK 制約
既定のデータベース照合順序から継承した照合順序を持つ文字型列がテーブルにある場合に、そのテーブルを返すテーブル値関数
非スキーマ バインド エンティティの依存関係情報は、データベースの照合順序が変更されると自動的に更新されます。詳細については、「SQL の依存関係について」を参照してください。
データベースの照合順序の変更によって、データベース オブジェクトのシステム名に重複が発生しない。
照合順序の変更によって名前が重複する場合、次の名前空間が原因でデータベースの照合順序の変更が失敗することがあります。
プロシージャ、テーブル、トリガー、ビューなどのオブジェクト名
スキーマ名
グループ、ロール、ユーザーなどのプリンシパル
システム データ型、ユーザー定義データ型などのスカラー データ型の名前
フルテキスト カタログ名
オブジェクト内の列名またはパラメーター名
テーブル内のインデックス名
新しい照合順序によって名前が重複すると、変更操作が失敗し、SQL Server は重複が見つかった名前空間を示すエラー メッセージを返します。
データベース情報の表示
カタログ ビュー、システム関数、およびシステム ストアド プロシージャを使用して、データベース、ファイルおよびファイル グループについての情報を返すことができます。詳細については、「データベース メタデータの表示」を参照してください。
権限
データベースに対する ALTER 権限が必要です。
例
A. データベースの名前を変更する
次の例では、AdventureWorks2008R2 データベースの名前を Northwind に変更します。
USE master;
GO
ALTER DATABASE AdventureWorks2008R2
Modify Name = Northwind ;
GO
B. データベースの照合順序を変更する
次の例では、SQL_Latin1_General_CP1_CI_AS 照合順序で testdb という名前のデータベースを作成した後、testdb データベースの照合順序を COLLATE French_CI_AI に変更します。
USE master;
GO
CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO
ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO
関連項目