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 SET HADR
    AlwaysOn 可用性グループのセカンダリ レプリカ上のセカンダリ データベースを構成するための、ALTER DATABASE の AlwaysOn 可用性グループ オプションの構文について説明します。

  • ALTER DATABASE 互換性レベル
    ALTER DATABASE のデータベース互換性レベルに関連した SET オプションの構文について説明します。

トピック リンク アイコン Transact-SQL 構文表記規則

構文

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> ::=
  <external_access_option> ::=
  <FILESTREAM_options> ::=
  <HADR_options> ::=  
  <parameterization_option> ::=
  <recovery_option> ::= 
  <service_broker_option> ::=
  <snapshot_option> ::=
  <sql_option> ::= 
  <termination> ::=

引数

  • database_name
    変更するデータベースの名前を指定します。

    注意

    このオプションは、包含データベースでは使用できません。

  • CURRENT
    使用中の現在のデータベースを変更することを指定します。

  • 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)」、「ALTER DATABASE データベース ミラーリング (Transact-SQL)」、「ALTER DATABASE SET HADR (Transact-SQL)」、および「ALTER DATABASE 互換性レベル (Transact-SQL)」を参照してください。

説明

データベースを削除するには、DROP DATABASE を使用します。

データベースのサイズを縮小するには、DBCC SHRINKDATABASE を使用します。

ALTER DATABASE ステートメントは自動コミット モード (既定のトランザクション管理モード) で実行する必要があり、明示的または暗黙的なトランザクション モードでは許可されません。

SQL Server 2005 以降では、データベース ファイルの状態 (オンラインかオフラインかなど) は、データベースの状態とは別に保持されます。 詳細については、「ファイルの状態」を参照してください。 ファイル グループ内のファイルの状態は、ファイル グループ全体の可用性を決定します。 ファイル グループを使用可能にするには、ファイル グループ内のすべてのファイルがオンラインである必要があります。 ファイル グループがオフラインの場合、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 は、一部のデータベース メンテナンス操作または再構成操作により、'%s' キャッシュストア (プラン キャッシュの一部) のキャッシュストア フラッシュを %d 個検出しました。" という情報メッセージが SQL Server エラー ログに記録されます。 このメッセージは、5 分以内にキャッシュがフラッシュされる限り、5 分間隔でログに記録されます。

プロシージャ キャッシュは、次のシナリオでもフラッシュされます。

  • AUTO_CLOSE データベース オプションが ON に設定されている。 データベースを参照 (または使用) するユーザー接続が 1 つも存在しない場合、バックグラウンド タスクがデータベースを自動的に閉じてシャットダウンすることを試みます。

  • 既定のオプションが設定されているデータベースに対して複数のクエリを実行した。 データベースはその後削除されます。

  • ソース データベースのデータベース スナップショットが削除された。

  • データベースのトランザクション ログを正常に再構築した。

  • データベースのバックアップを復元した。

  • データベースをデタッチした。

データベースの照合順序の変更

データベースに別の照合順序を適用する前に、次の条件が満たされているかどうかを確認してください。

  1. 現在データベースを使用しているのは、1 人だけである。

  2. データベースの照合順序に依存するスキーマ バインド オブジェクトがない。

    データベースの照合順序に依存する次のオブジェクトがデータベース内に存在する場合、ALTER DATABASEdatabase_nameCOLLATE ステートメントは失敗します。 SQL Server は、ALTER アクションをブロックしているオブジェクトごとにエラー メッセージを返します。

    • SCHEMABINDING を指定して作成されたユーザー定義関数およびビュー

    • 計算列

    • CHECK 制約

    • 既定のデータベース照合順序から継承した照合順序を持つ文字型列がテーブルにある場合に、そのテーブルを返すテーブル値関数

    非スキーマ バインド エンティティの依存関係情報は、データベースの照合順序が変更されると自動的に更新されます。

データベースの照合順序を変更しても、データベース オブジェクトのシステム名に重複は発生しません。 照合順序の変更によって名前が重複する場合、次の名前空間が原因でデータベースの照合順序の変更が失敗することがあります。

  • プロシージャ、テーブル、トリガー、ビューなどのオブジェクト名

  • スキーマ名

  • グループ、ロール、ユーザーなどのプリンシパル

  • システム データ型、ユーザー定義データ型などのスカラー データ型の名前

  • フルテキスト カタログ名

  • オブジェクト内の列名またはパラメーター名

  • テーブル内のインデックス名

新しい照合順序によって名前が重複すると、変更操作が失敗し、SQL Server は重複が見つかった名前空間を示すエラー メッセージを返します。

データベース情報の表示

カタログ ビュー、システム関数、およびシステム ストアド プロシージャを使用して、データベース、ファイルおよびファイル グループについての情報を返すことができます。

権限

データベースに対する ALTER 権限が必要です。

使用例

A. データベースの名前を変更する

次の例では、AdventureWorks2012 データベースの名前を Northwind に変更します。

USE master;
GO
ALTER DATABASE AdventureWorks2012
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

関連項目

参照

CREATE DATABASE (Transact-SQL)

DATABASEPROPERTYEX (Transact-SQL)

DROP DATABASE (Transact-SQL)

SET TRANSACTION ISOLATION LEVEL (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_configure (Transact-SQL)

sp_spaceused (Transact-SQL)

sys.databases (Transact-SQL)

sys.database_files (Transact-SQL)

sys.database_mirroring_witnesses (Transact-SQL)

sys.data_spaces (Transact-SQL)

sys.filegroups (Transact-SQL)

sys.master_files (Transact-SQL)

概念

システム データベース