ALTER DATABASE (Transact-SQL)

データベースの特定の構成オプションを変更します。

この記事では、選択した SQL 製品について、構文、引数、注釈、アクセス許可、例を紹介します。

構文表記規則の詳細については、「Transact-SQL 構文表記規則」を参照してください。

製品を選択する

次の行で、興味のある製品の名前を選択すると、その製品の情報のみが表示されます。

* SQL Server *  

 

概要:SQL Server

SQL Server では、このステートメントはデータベース、またはそのデータベースに関連付けられているファイルおよびファイル グループを変更します。 ALTER DATABASE では、データベースに対するファイルやファイル グループの追加と削除、データベースおよびデータベースのファイルやファイル グループの属性の変更、データベースの照合順序の変更、データベース オプションの設定を行えます。 データベース スナップショットを変更することはできません。 レプリケーションに関連するデータベース オプションを変更するには、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 Always On 可用性グループのセカンダリ レプリカ上のセカンダリ データベースを構成するための、ALTER DATABASE の Always On 可用性グループ オプションの構文と関連情報について説明します。
ALTER DATABASE 互換性レベル ALTER DATABASE のデータベース互換レベルに関連した SET オプションの構文と関連情報について説明します。
データベース スコープ構成の変更 関連する動作のクエリの最適化とクエリの実行など、個別のデータベース レベルの設定に使用するため、データベース スコープ構成に関連する構文について説明します。

構文

-- SQL Server Syntax
ALTER DATABASE { database_name | CURRENT }
{
    MODIFY NAME = new_database_name
  | COLLATE collation_name
  | <file_and_filegroup_options>
  | SET <option_spec> [ ,...n ] [ WITH <termination> ]
}
[;]

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

<option_spec>::=
{
  | <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>
  | <query_store_options>
  | <recovery_option>
  | <service_broker_option>
  | <snapshot_option>
  | <sql_option>
  | <termination>
  | <temporal_history_retention>
  | <data_retention_policy>
  | <compatibility_level>
      { 150 | 140 | 130 | 120 | 110 | 100 | 90 }
}

引数

database_name

変更するデータベースの名前です。

注意

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

CURRENT
適用対象: SQL Server 2012 (11.x) 以降。

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

MODIFY NAME = new_database_name

データベースの名前を、new_database_name で指定した名前に変更します。

COLLATE collation_name

データベースの照合順序を指定します。 collation_name には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合は、データベースに SQL Server インスタンスの照合順序が割り当てられます。

注意

Azure SQL データベース でデータベースが作成された後は、照合順序を変更することはできません。

既定の照合順序以外でデータベースを作成する場合、データベース内のデータは常に、指定された照合順序を優先します。 SQL Server では、包含データベースを作成する場合、内部カタログの情報は SQL Server の既定の照合順序、Latin1_General_100_CI_AS_WS_KS_SC を使用して維持されます。

Windows 照合順序名および SQL 照合順序名について詳しくは、「COLLATE」をご覧ください。

<delayed_durability_option> ::=

適用対象: SQL Server 2014 (12.x) 以降。

詳しくは、「ALTER DATABASE の SET オプション」および「トランザクションの持続性の制御」をご覧ください。

<file_and_filegroup_options>::=

詳しくは、「ALTER DATABASE の File および Filegroup オプション」をご覧ください。

解説

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

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

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

データベース ファイルの状態 (オンラインかオフラインかなど) は、データベースの状態とは別に保持されます。 詳しくは、「ファイルの状態」をご覧ください。 ファイル グループ内のファイルの状態は、ファイル グループ全体の可用性を決定します。 ファイル グループを使用可能にするには、ファイル グループ内のすべてのファイルがオンラインである必要があります。 ファイル グループがオフラインの場合、SQL ステートメントでそのファイル グループにアクセスを試行するとエラーが発生します。 SELECT ステートメントのクエリ プランを作成する場合、クエリ オプティマイザーは、オフラインのファイル グループにある非クラスター化インデックスやインデックス付きビューを回避します。 これにより、これらのステートメントは正常に実行できます。 ただし、オフラインのファイル グループに、対象テーブルのヒープやクラスター化インデックスが含まれている場合には、SELECT ステートメントは失敗します。 また、オフラインのファイル グループ内にあるインデックス付きのテーブルを変更する INSERTUPDATE、または DELETE ステートメントは失敗します。

データベースが RESTORING 状態にある場合、ほとんどの ALTER DATABASE ステートメントは失敗します。 ただし、データベース ミラーリング オプションの設定は例外です。 データベースが RESTORING 状態になるのは、アクティブな復元操作中や、バックアップ ファイルの破損によりデータベースまたはログ ファイルの復元操作が失敗した場合などです。

SQL Server のインスタンスのプラン キャッシュは、次のいずれかのオプションを設定することにより消去されます。

  • COLLATE
  • MODIFY FILEGROUP DEFAULT
  • MODIFY FILEGROUP READ_ONLY
  • MODIFY FILEGROUP READ_WRITE
  • MODIFY_NAME
  • OFFLINE
  • ONLINE
  • PAGE_VERIFY
  • READ_ONLY
  • READ_WRITE

プラン キャッシュが消去されると、後続のすべての実行プランが再コンパイルされ、場合によっては、クエリ パフォーマンスが一時的に急激に低下します。 プラン キャッシュ内のキャッシュストアが消去されるたびに、SQL Server エラー ログに、以下の通知メッセージが記録されます。SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations このメッセージは、5 分以内にキャッシュがフラッシュされる限り、5 分間隔でログに記録されます。

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

  • AUTO_CLOSE データベース オプションが ON に設定されている。 データベースを参照 (または使用) するユーザー接続が 1 つも存在しない場合、バックグラウンド タスクがデータベースを自動的に閉じてシャットダウンすることを試みます。
  • 既定のオプションが設定されているデータベースに対して複数のクエリを実行した。 データベースはその後削除されます。
  • ソース データベースのデータベース スナップショットが削除された。
  • データベースのトランザクション ログを正常に再構築した。
  • データベースのバックアップを復元した。
  • データベースをデタッチした。

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

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

  • 現在データベースを使用しているのは、1 人だけである。
  • データベースの照合順序に依存するスキーマ バインド オブジェクトがない。

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

  • SCHEMABINDING を指定して作成されたユーザー定義関数およびビュー
  • 計算列
  • CHECK 制約
  • 既定のデータベース照合順序から継承した照合順序を持つ文字型列がテーブルにある場合に、そのテーブルを返すテーブル値関数

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

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

  • プロシージャ、テーブル、トリガー、ビューなどのオブジェクト名
  • スキーマ名
  • グループ、ロール、ユーザーなどのプリンシパル
  • システム型、ユーザー定義型などのスカラー型の名前
  • フルテキスト カタログ名
  • オブジェクト内の列名またはパラメーター名
  • テーブル内のインデックス名

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

データベースの情報を表示する

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

アクセス許可

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

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

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

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

B. データベースの照合順序を変更する

次の例では、SQL_Latin1_General_CP1_CI_AS 照合順序で testdb という名前のデータベースを作成した後、testdb データベースの照合順序を COLLATE French_CI_AI に変更します。

適用対象: SQL Server 2008 (10.0.x) 以降。

USE master;
GO

CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO

次のステップ

* SQL Database *  

 

概要:SQL Database

Azure SQL Database では、このステートメントを使ってデータベースを変更します。 データベースの名前の変更、データベースのエディションとサービス目標の変更、エラスティック プールへのデータベースの参加またはエラスティック プールからのデータベースの削除、データベース オプションの設定、geo レプリケーション リレーションシップでのセカンダリ としてのデータベースの追加または削除、データベースの互換性レベルの設定を行うには、このステートメントを使います。

解説が長くなるため、ALTER DATABASE の構文は複数の記事に分けて説明します。

ALTER DATABASE
この記事では、データベースの名前とその他の設定を変更するための構文および関連情報について説明します。

ALTER DATABASE の SET オプション
ALTER DATABASE の SET オプションを使ってデータベースの属性を変更するための構文と関連情報について説明します。

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

構文

-- Azure SQL Database Syntax
ALTER DATABASE { database_name | CURRENT }
{
    MODIFY NAME = new_database_name
  | MODIFY ( <edition_options> [, ... n] )
  | MODIFY BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' }
  | SET { <option_spec> [ ,... n ] WITH <termination>}
  | ADD SECONDARY ON SERVER <partner_server_name>
    [WITH ( <add-secondary-option>::=[, ... n] ) ]
  | REMOVE SECONDARY ON SERVER <partner_server_name>
  | FAILOVER
  | FORCE_FAILOVER_ALLOW_DATA_LOSS
}
[;]

<edition_options> ::=
{

  MAXSIZE = { 100 MB | 250 MB | 500 MB | 1 ... 1024 ... 4096 GB }
  | EDITION = { 'Basic' | 'Standard' | 'Premium' | 'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale'}
  | SERVICE_OBJECTIVE =
       { <service-objective>
       | { ELASTIC_POOL (name = <elastic_pool_name>) }
       }
}

<add-secondary-option> ::=
   {
      ALLOW_CONNECTIONS = { ALL | NO }
     | BACKUP_STORAGE_REDUNDANCY = { 'LOCAL' | 'ZONE' | 'GEO' }
     | SERVICE_OBJECTIVE =
       { <service-objective>
       | { ELASTIC_POOL ( name = <elastic_pool_name>) }
       | DATABASE_NAME = <target_database_name>
       | SECONDARY_TYPE = { GEO | NAMED }
       }
   }

<service-objective> ::={ 'Basic' |'S0' | 'S1' | 'S2' | 'S3'| 'S4'| 'S6'| 'S7'| 'S9'| 'S12'
      | 'P1' | 'P2' | 'P4'| 'P6' | 'P11' | 'P15'
      | 'BC_DC_n'
      | 'BC_Gen5_n' 
      | 'BC_M_n' 
      | 'GP_DC_n'
      | 'GP_Fsv2_n' 
      | 'GP_Gen5_n' 
      | 'GP_S_Gen5_n' 
      | 'HS_DC_n'
      | 'HS_Gen5_n'
      | 'HS_MOPRMS_n' 
      | 'HS_PRMS_n' 
      | { ELASTIC_POOL(name = <elastic_pool_name>) }
      }

<option_spec> ::=
{
    <auto_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <termination>
  | <temporal_history_retention>
  | <compatibility_level>
    { 150 | 140 | 130 | 120 | 110 | 100 | 90 }

}

引数

database_name

変更するデータベースの名前です。

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

MODIFY NAME = new_database_name

データベースの名前を、new_database_name で指定した名前に変更します。 次の例では、db1 データベースの名前を db2 に変更します。

ALTER DATABASE db1
    MODIFY Name = db2 ;

MODIFY (EDITION = ['Basic' | 'Standard' | 'Premium' |'GeneralPurpose' | 'BusinessCritical' | 'Hyperscale'])

データベースのサービス階層を変更します。

次の例では、エディションを Premium に変更します。

ALTER DATABASE current
    MODIFY (EDITION = 'Premium');

重要

データベースの MAXSIZE プロパティがそのエディションでサポートされる有効な範囲内の値に設定されていない場合、EDITION の変更は失敗します。

MODIFY (BACKUP_STORAGE_REDUNDANCY = ['LOCAL' | 'ZONE' | 'GEO'])

データベースのポイントインタイム リストア バックアップと長期保有バックアップ (構成されている場合) のストレージの冗長性が変更されます。 この変更は、将来的に行われるすべてのバックアップに適用されます。 既存のバックアップによって、引き続き以前の設定が使用されます。

T-SQL を使用してデータベースを作成するときにデータ所在地を適用するには、BACKUP_STORAGE_REDUNDANCY パラメーターに対する入力として LOCAL または ZONE を使用します。

MODIFY (MAXSIZE = [100 MB | 500 MB | 1 | 1024...4096] GB)

データベースの最大サイズを指定します。 最大サイズは、データベースの EDITION プロパティの有効な値セットに準拠している必要があります。 データベースの最大サイズを変更すると、データベースの EDITION も変更される場合があります。

注意

MAXSIZE 引数は、ハイパースケール サービス層の単一データベースには適用されません。 ハイパースケール サービス層のデータベースは、必要に応じて 100 TB まで拡張できます。 SQL Database サービスによってストレージが自動的に追加されます。最大サイズを設定する必要はありません。

DTU モデル

MAXSIZE Basic S0-S2 S3-S12 P1-P6 P11-P15
100 MB
250 MB
500 MB
1 GB
2 GB √ (D)
5 GB 該当なし
10 GB 該当なし
20 GB 該当なし
30 GB 該当なし
40 GB 該当なし
50 GB 該当なし
100 GB 該当なし
150 GB 該当なし
200 GB 該当なし
250 GB 該当なし √ (D) √ (D)
300 GB 該当なし
400 GB 該当なし
500 GB 該当なし √ (D)
750 GB 該当なし
1024 GB 該当なし √ (D)
1024 GB から 4096 GB (256 GB ずつ増分)* 該当なし 該当なし 該当なし 該当なし

* P11 と P15 では、1024 GB を既定のサイズとして、MAXSIZE が 4 TB まで許可されます。 P11 と P15 では、追加料金なしで付属のストレージを 4 TB まで使用できます。 次の地域の Premium レベルでは、現在 1 TB を超える MAXSIZE を使用できます: 米国東部 2、米国西部、US Gov バージニア、西ヨーロッパ、ドイツ中部、東南アジア、東日本、オーストラリア東部、カナダ中部、カナダ東部。 DTU モデルのリソースの制限事項に関する詳細については、DTU リソースの制限に関する記事をご覧ください。

DTU モデルの MAXSIZE 値。指定される場合は、前の表に示すように指定されたサービス レベルで有効な値である必要があります。

仮想コア購入モデルの最大データ サイズや tempdb のサイズなどの制限については、単一データベースのリソース制限またはエラスティック プールのリソース制限に関する記事をご覧ください。

vCore モデルを使用する場合に MAXSIZE 値が設定されていない場合、既定値は 32 GB です。 仮想コア モデルのリソースの制限事項の詳細については、仮想コア リソースの制限に関する記事をご覧ください。

引数 MAXSIZE および EDITION には、以下の規則が適用されます。

  • EDITION が指定され、MAXSIZE が指定されていない場合は、エディションの既定値が使用されます。 たとえば、EDITION が Standard に設定されていて、MAXSIZE が指定されていない場合、MAXSIZE は自動的に 250 MB に設定されます。
  • MAXSIZE も EDITION も指定されていない場合、EDITION は General Purpose に設定され、MAXSIZE は 32 GB に設定されます。

MODIFY (SERVICE_OBJECTIVE = <service-objective>)

コンピューティング サイズとサービス目標を指定します。

SERVICE_OBJECTIVE

コンピューティング サイズ (サービス レベル目標または SLO とも呼ばれます) を指定します。

  • DTU 購入モデルの場合: S0S1S2S3S4S6S7S9S12P1P2P4P6P11P15。 各コンピューティング サイズに 割り当てられている DTU の数については、DTU 単一データベース のリソース制限または DTU Elastic Pool のリソース制限を参照してください。
  • 仮想コア購入モデルの場合は、レベルを選び、あらかじめ設定されている値の一覧から仮想コアの数を指定します。ここで、仮想コアの数は n です。 仮想コア単一データベースのリソース制限または仮想コア Elastic Pool のリソース制限に関する記事をご覧ください。
    • 次に例を示します。
    • GP_Gen5_8: General Purpose Standard シリーズ (Gen5) コンピューティング、8 仮想コアの場合。
    • GP_S_Gen5_8: General Purpose サーバーレス Standard シリーズ (Gen5) コンピューティング、8 仮想コアの場合。
    • HS_Gen5_8: Hyperscale - プロビジョニング済みコンピューティング - Standard シリーズ (Gen5)、8 仮想コアの場合。

たとえば、次の例では、DTU 購入モデルの Premium レベル データベースのサービス目標を P6 に変更します。

ALTER DATABASE <database_name>
    MODIFY (SERVICE_OBJECTIVE = 'P6');

たとえば、次の例では、仮想コア購入モデルのプロビジョニング済みコンピューティング データベースのサービス目標を GP_Gen5_8 に変更します。

ALTER DATABASE <database_name>
    MODIFY (SERVICE_OBJECTIVE = 'GP_Gen5_8');

Database_Name

Azure SQL Database Hyperscale の場合のみ。 作成されるデータベース名。 SECONDARY_TYPE = NAMED の場合、Azure SQL Database Hyperscale 名前付きレプリカにのみ使用されます。 詳細については、「ハイパースケールのセカンダリ レプリカ」を参照してください。

SECONDARY_TYPE

Azure SQL Database Hyperscale の場合のみ。 GEO により geo レプリカが指定され、NAMED により名前付きレプリカが指定されます。 既定値は [GEO] です。 詳細については、「ハイパースケールのセカンダリ レプリカ」を参照してください。

サービス目標に関する説明およびサイズ、エディション、サービス目標の組み合わせの詳細については、Azure SQL Database サービス レベルとパフォーマンス レベルDTU リソースの制限仮想コア リソースの制限に関する記事を参照してください。 PRS サービスの目標のサポートはなくなりました。

SERVICE_OBJECTIVE が指定されていない場合、セカンダリ データベースがプライマリ データベースと同じサービス レベルで作成します。 SERVICE_OBJECTIVE を指定した場合は、指定したレベルでセカンダリ データベースが作成されます。 指定する SERVICE_OBJECTIVE は、ソースと同じエディション内でなければなりません。 たとえば、エディションが Premium の場合、S0 を指定することはできません。

MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL (name = <elastic_pool_name>)

エラスティック プールに既存のデータベースを追加するには、データベースの SERVICE_OBJECTIVE を ELASTIC_POOL に設定し、エラスティック プールの名前を指定します。 このオプションを使用して、データベースを同じサーバー内の別のエラスティック プールに変更することもできます。 詳しくは、SQL Database エラスティック プールの作成と管理に関するページをご覧ください。 エラスティック プールからデータベースを削除するには、ALTER DATABASE を使用して、SERVICE_OBJECTIVE を単一のデータベースのコンピューティング サイズ (サービス目標) に設定します。

注意

ハイパースケール サービス層のデータベースをエラスティック プールに追加することはできません。

ADD SECONDARY ON SERVER <partner_server_name>

パートナー サーバー上に同じ名前の geo レプリケーションのセカンダリ データベースを作成し、ローカル データベースを geo レプリケーションのプライマリにして、プライマリから新しいセカンダリに非同期でデータのレプリケーションを開始します。 セカンダリ上に同じ名前のデータベースが既に存在する場合、コマンドは失敗します。 コマンドは、プライマリとなるローカル データベースをホストしているサーバーの master データベースで実行されます。

重要

既定では、セカンダリ データベースは、プライマリ データベースまたはソース データベースと同じバックアップ ストレージ冗長性を使用して作成されます。 セカンダリの作成時のバックアップ ストレージの冗長性の変更は、T-SQL によってサポートされていません。

WITH ALLOW_CONNECTIONS { ALL | NO }

ALLOW_CONNECTIONS が指定されていない場合は、既定では ALL に設定されます。 ALL に設定されている場合は、適切なアクセス許可を持つすべてのログインに接続を許可する読み取り専用データベースになります。

ELASTIC_POOL (name = <elastic_pool_name>)

ELASTIC_POOL が指定されていない場合、セカンダリ データベースはエラスティック プールに作成されません。 ELASTIC_POOL が指定されている場合、セカンダリ データベースが指定されたプールに作成されます。

重要

ADD SECONDARY コマンドを実行するユーザーは、プライマリ サーバー上で DBManager であること、ローカル データベース内で db_owner メンバーシップを持っていること、およびセカンダリ サーバー上で DBManager であることが必要です。 プライマリ サーバーとセカンダリ サーバーの両方のファイアウォール規則で、クライアント IP アドレスを許可リストに追加する必要があります。 クライアント IP アドレスが異なる場合は、プライマリ サーバーに追加されたものとまったく同じクライアント IP アドレスをセカンダリにも追加する必要があります。 geo レプリケーションを開始するには、ADD SECONDARY コマンドを実行する前に、この手順を実行する必要があります。

REMOVE SECONDARY ON SERVER <partner_server_name>

指定されたサーバー上にある、指定された geo レプリケートされたセカンダリ データベースを削除します。 このコマンドは、プライマリ データベースをホストしているサーバー上の master データベース上で実行されます。

重要

REMOVE SECONDARY コマンドを実行するユーザーは、プライマリ サーバー上で DBManager でなければなりません。

FAILOVER

コマンドを実行する geo レプリケーション パートナーシップ内のセカンダリ データベースのレベルを上げてプライマリにし、現在のプライマリのレベルを下げて新しいセカンダリにします。 このプロセスの一環として、geo レプリケーション モードは、非同期モードから同期モードへと一時的に切り替わります。 フェールオーバー プロセス時:

  1. プライマリでは、新しいトランザクションが処理が停止されます。
  2. すべての未処理のトランザクションは、セカンダリにフラッシュされます。
  3. セカンダリがプライマリになり、古いプライマリと新しいセカンダリを使用して、非同期の geo レプリケーションが開始されます。

このシーケンスは、データの損失が発生しないことを保証します。 両方のデータベースが使用できない期間は、ロールを切り替えている間の 0 から 25 秒程度です。 操作全体を約 1 分以内に実行する必要があります。 このコマンドが実行されたときにプライマリ データベースが使用できない場合、プライマリ データベースが使用できないことを示すエラー メッセージで、コマンドは失敗します。 フェールオーバー プロセスが完了せず、スタックしているように見える場合は、まず、強制フェールオーバー コマンドを使用して、データの消失を許容します。次に、消失したデータを復旧する必要がある場合は、DevOps (CSS) に連絡して、消失したデータの復旧を依頼します。

重要

FAILOVER コマンドを実行するユーザーは、プライマリ サーバーとセカンダリ サーバーの両方で DBManager になる必要があります。

FORCE_FAILOVER_ALLOW_DATA_LOSS

コマンドを実行する geo レプリケーション パートナーシップ内のセカンダリ データベースのレベルを上げてプライマリにし、現在のプライマリのレベルを下げて新しいセカンダリにします。 現在のプライマリが使用できない場合にのみ、このコマンドを使用します。 これは、可用性の復元が不可欠で、一部のデータ消失が許容される場合のディザスター リカバリー専用に設計されています。

強制フェールオーバー中:

  1. 指定したセカンダリ データベースはすぐに、プライマリ データベースになり、新しいトランザクションの受け入れを開始します。
  2. 元のプライマリが新しいプライマリに再接続できると、元のプライマリ上で増分バックアップが実行され、元のプライマリは新しいセカンダリになります。
  3. 古いプライマリのこの増分バックアップからデータを復旧するには、ユーザーは devops/CSS である必要があります。
  4. その他のセカンダリがある場合は、自動的に再構成されて新しいプライマリのセカンダリになります。 このプロセスは非同期で、このプロセスが完了するまで、遅延が発生することがあります。 再構成が完了するまで、セカンダリは古いプライマリのセカンダリであり続けます。

重要

FORCE_FAILOVER_ALLOW_DATA_LOSS コマンドを実行するユーザーは、プライマリ サーバーとセカンダリ サーバーの両方で dbmanager ロールに属する必要があります。

解説

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

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

プラン キャッシュが消去されると、後続のすべての実行プランが再コンパイルされ、場合によっては、クエリ パフォーマンスが一時的に急激に低下します。 プラン キャッシュ内のキャッシュストアが消去されるたびに、SQL Server エラー ログに、以下の通知メッセージが記録されます。SQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations このメッセージは、5 分以内にキャッシュがフラッシュされる限り、5 分間隔でログに記録されます。

プロシージャ キャッシュは、次のシナリオでもフラッシュされます。既定のオプションが設定されているデータベースに対して複数のクエリを実行した。 データベースはその後削除されます。

データベース情報の表示

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

アクセス許可

データベースを変更するには、ログインはサーバー管理者ログイン (Azure SQL Database 論理サーバーのプロビジョニング時に作成)、サーバーの Microsoft Entra 管理者、dbmanager データベース ロール masterのメンバー、現在のデータベースの db_owner データベース ロールのメンバー、または dbo データベースのいずれかである必要があります。 Microsoft Entra ID は (以前の Azure Active Directory) です

T-SQL を使ってデータベースをスケーリングするには、ALTER DATABASE アクセス許可が必要です。 Azure portal、PowerShell、Azure CLI、または REST API を使ってデータベースをスケーリングするには、Azure RBAC のアクセス許可 (特に共同作成者、SQL DB 共同作成者ロール、または SQL Server 共同作成者 Azure RBAC ロール) が必要です。 詳細については、Azure RBAC の組み込みロールに関する記事を参照してください。

A. エディション オプションを確認して変更します。

データベース db1 のエディションと最大サイズを設定します。

SELECT Edition = DATABASEPROPERTYEX('db1', 'EDITION'),
        ServiceObjective = DATABASEPROPERTYEX('db1', 'ServiceObjective'),
        MaxSizeInBytes =  DATABASEPROPERTYEX('db1', 'MaxSizeInBytes');

ALTER DATABASE [db1] MODIFY (EDITION = 'Premium', MAXSIZE = 1024 GB, SERVICE_OBJECTIVE = 'P15');

B. データベースを別のエラスティック プールに移動する

pool1 という名前のプールに既存のデータベースを移動します。

ALTER DATABASE db1
MODIFY ( SERVICE_OBJECTIVE = ELASTIC_POOL ( name = pool1 ) ) ;

C. geo レプリケーションのセカンダリを追加します。

ローカル サーバー上の db1 のサーバー secondaryserver に読み取り可能なセカンダリ データベース db1 を作成します。

ALTER DATABASE db1
ADD SECONDARY ON SERVER secondaryserver
WITH ( ALLOW_CONNECTIONS = ALL )

D. geo レプリケーションのセカンダリを削除します。

サーバー secondaryserver 上のセカンダリ データベース db1 を削除します。

ALTER DATABASE db1
REMOVE SECONDARY ON SERVER testsecondaryserver

E. geo レプリケーションのセカンダリにフェールオーバーします。

サーバー secondaryserver で実行されると、サーバー secondaryserver 上のセカンダリ データベース db1 を昇格させて新しいプライマリ データベースにします。

ALTER DATABASE db1 FAILOVER

F. geo レプリケーションのセカンダリへのフェールオーバーを強制します (この場合、データが失われることがあります)。

プライマリ サーバーが使用不可能になった場合、サーバー secondaryserver で実行されると、サーバー secondaryserver 上のセカンダリ データベース db1 が新しいプライマリ データベースとして強制されます。 このオプションでは、データが失われる可能性があります。

ALTER DATABASE db1 FORCE_FAILOVER_ALLOW_DATA_LOSS

G. 単一データベースをサービス層 S0 (標準エディション、パフォーマンス レベル 0) に更新します。

単一データベースをコンピューティング サイズ (サービス目標) が S0、最大サイズが 250 GB の標準エディション (サービス層) に更新します。

ALTER DATABASE [db1] MODIFY (EDITION = 'Standard', MAXSIZE = 250 GB, SERVICE_OBJECTIVE = 'S0');

H. データベースのバックアップ ストレージの冗長性を更新する

データベースのバックアップ ストレージの冗長性をゾーン冗長に更新します。 このデータベースの今後のすべてのバックアップにおいて、新しい設定が使用されます。 これには、ポイントインタイム リストア バックアップおよび (構成されている場合) 長期保有バックアップが含まれます。

ALTER DATABASE db1 MODIFY BACKUP_STORAGE_REDUNDANCY = 'ZONE'

次の手順

* SQL Managed Instance *  

 

概要:Azure SQL Managed Instance

Azure SQL Managed Instance では、このステートメントを使用してデータベース オプションが設定されます。

解説が長くなるため、ALTER DATABASE の構文は複数の記事に分けて説明します。

[アーティクル] 説明
ALTER DATABASE
この記事では、ファイルとファイル グループのオプションの設定、データベース オプションの設定、およびデータベースの互換性レベルの設定のための構文と関連情報を説明します。
ALTER DATABASE の File および Filegroup オプション
データベースのファイルおよびファイル グループを追加したり削除したりするための構文と関連情報のほか、ファイルおよびファイル グループの属性を変更するための構文について説明します。
ALTER DATABASE の SET オプション
ALTER DATABASE の SET オプションを使ってデータベースの属性を変更するための構文と関連情報について説明します。
ALTER DATABASE 互換性レベル
ALTER DATABASE のデータベース互換レベルに関連した SET オプションの構文と関連情報について説明します。

構文

-- Azure SQL Managed Instance syntax  
ALTER DATABASE { database_name | CURRENT }  
{
    MODIFY NAME = new_database_name
  | COLLATE collation_name
  | <file_and_filegroup_options>  
  | SET <option_spec> [ ,...n ]  
}  
[;]

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

<option_spec> ::=
{
    <auto_option>
  | <change_tracking_option>
  | <cursor_option>
  | <db_encryption_option>  
  | <db_update_option>
  | <db_user_access_option>
  | <delayed_durability_option>
  | <parameterization_option>
  | <query_store_options>
  | <snapshot_option>
  | <sql_option>
  | <target_recovery_time_option>
  | <temporal_history_retention>
  | <compatibility_level>
      { 150 | 140 | 130 | 120 | 110 | 100 | 90 }

}  

引数

database_name

変更するデータベースの名前です。

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

解説

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

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

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

  • Azure SQL Managed Instance のプラン キャッシュは、次のいずれかのオプションを設定することにより消去されます。

    • COLLATE
    • MODIFY FILEGROUP DEFAULT
    • MODIFY FILEGROUP READ_ONLY
    • MODIFY FILEGROUP READ_WRITE
    • MODIFY NAME

    プラン キャッシュが消去されると、後続のすべての実行プランが再コンパイルされ、場合によっては、クエリ パフォーマンスが一時的に急激に低下します。 プラン キャッシュ内のキャッシュストアが消去されるたびに、"SQL Server は、一部のデータベース メンテナンス操作または再構成操作により、'%s' キャッシュストア (プラン キャッシュの一部) のキャッシュストア フラッシュを %d 個検出しました" という情報メッセージが SQL Server エラー ログに含まれます。 このメッセージは、5 分以内にキャッシュがフラッシュされる限り、5 分間隔でログに記録されます。 既定オプションのデータベースに対して複数のクエリが実行されても、プラン キャッシュはフラッシュされます。 データベースはその後削除されます。

  • 一部の ALTER DATABASE ステートメントでは、実行するデータベースを排他的にロックする必要があります。 そのため、別のアクティブなプロセスがデータベースのロックを保持しているときに、エラーが発生するおそれがあります。 このような場合に報告されるエラーは Msg 5061, Level 16, State 1, Line 38 で、メッセージは ALTER DATABASE failed because a lock could not be placed on database '<database name>'. Try again later です。 これは通常、一時的なエラーであり、問題を解決するには、データベースのすべてのロックが解放された後で、失敗した ALTER DATABASE ステートメントを再試行します。 システムビュー sys.dm_tran_locks は、アクティブなロックに関する情報を保持します。 データベースに共有ロックまたは排他ロックがあるかどうかを確認するには、次のクエリを使用します。

    SELECT
        resource_type, resource_database_id, request_mode, request_type, request_status, request_session_id 
    FROM 
        sys.dm_tran_locks
    WHERE
        resource_database_id = DB_ID('testdb');
    

データベース情報の表示

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

アクセス許可

データベースを変更できるのは、(準備プロセスによって作成される) サーバーレベルのプリンシパルのログイン、または dbcreator データベース ロールのメンバーだけです。

重要

データベースの所有者であっても dbcreator ロールのメンバーでない場合は、データベースを変更できません。

自動チューニングを設定する方法と、Azure SQL Managed Instance のデータベースにファイルを追加する方法の例を次に示します。

ALTER DATABASE WideWorldImporters
  SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON);

ALTER DATABASE WideWorldImporters
  ADD FILE (NAME = 'data_17');

次のステップ

* Azure Synapse
Analytics *
 

 

概要:Azure Synapse Analytics

Azure Synapse では、ALTER DATABASE によって専用 SQL プールの特定の構成オプションが変更されます。

解説が長くなるため、ALTER DATABASE の構文は複数の記事に分けて説明します。

ALTER DATABASE の SET オプション」では、ALTER DATABASE の SET オプションを使ってデータベースの属性を変更するための構文と関連情報について説明します。

構文

ALTER DATABASE { database_name | CURRENT }
{
  MODIFY NAME = new_database_name
| MODIFY ( <edition_option> [, ... n] )
| SET <option_spec> [ ,...n ] [ WITH <termination> ]
}
[;]

<edition_option> ::=
      MAXSIZE = {
            250 | 500 | 750 | 1024 | 5120 | 10240 | 20480
          | 30720 | 40960 | 51200 | 61440 | 71680 | 81920
          | 92160 | 102400 | 153600 | 204800 | 245760
      } GB
      | SERVICE_OBJECTIVE = {
            'DW100' | 'DW200' | 'DW300' | 'DW400' | 'DW500'
          | 'DW600' | 'DW1000' | 'DW1200' | 'DW1500' | 'DW2000'
          | 'DW3000' | 'DW6000' | 'DW500c' | 'DW1000c' | 'DW1500c'
          | 'DW2000c' | 'DW2500c' | 'DW3000c' | 'DW5000c' | 'DW6000c'
          | 'DW7500c' | 'DW10000c' | 'DW15000c' | 'DW30000c'
      }

引数

database_name

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

MODIFY NAME = new_database_name

データベースの名前を、new_database_name で指定した名前に変更します。

[名前の変更] オプションには、Azure Synapse のサポートに関する制限事項がいくつかあります。

  • Azure Synapse サーバーレス プールでサポートされない
  • Azure Synapse ワークスペースで作成された専用 SQL プールでサポートされない
  • Azure portal を通じて作成された専用の SQL プール (旧称 SQL DW) でサポートされている (接続されているワークスペースを持つものも含む)

MAXSIZE

既定値は 245,760 GB (240 TB) です。

適用対象: Gen1 コンピューティングに最適化

データベースの最大許容サイズ。 データベースは MAXSIZE を超えることはできません。

適用対象: Gen2 コンピューティングに最適化

データベースの行ストア データの最大許容サイズ。 行ストア テーブル、列ストア インデックスのデルタストア、またはクラスター化列ストア インデックスの非クラスター化インデックスに格納されているデータは MAXSIZE を超えることはできません。 列ストア形式に圧縮されたデータにはサイズ制限はなく、MAXSIZE に制約されません。

SERVICE_OBJECTIVE

コンピューティング サイズ (サービス目標) を指定します。 Azure Synapse のサービス目標の詳細については、「Data Warehouse ユニット (DWU)」を参照してください。

アクセス許可

以下のアクセス許可が必要です。

  • サーバー レベル プリンシパル ログイン (プロビジョニング処理で作成されたもの) または
  • dbmanager データベース ロールのメンバー。

所有者が dbmanager ロールのメンバーである場合を除き、データベースの所有者はデータベースを変更することはできません。

解説

現在のデータベースは、変更対象とは異なるデータベースである必要があります。したがって、ALTER は master データベースに接続されている間に実行する必要があります。

SQL Analytics の COMPATIBILITY_LEVEL は既定で 130 に設定されており、変更できません。 詳細については、「Azure SQL Database の互換性レベル 130 によるクエリ パフォーマンスの向上」を参照してください。

注意

COMPATIBILITY_LEVEL はプロビジョニング済みのリソース (プール) にのみ適用されます。

制限事項と制約事項

ALTER DATABASE を実行するには、データベースをオンラインにする必要があり、一時停止状態にすることはできません。

ALTER DATABASE ステートメントは、既定のトランザクション管理モードである自動コミット モードで実行する必要があります。 これは、接続の設定で設定されます。

ALTER DATABASE ステートメントをユーザー定義のトランザクションに含めることはできません。

データベースの照合順序を変更することはできません。

これらの例を実行する前に、変更対象のデータベースが現在のデータベースでないことを確認します。 現在のデータベースは、変更対象とは異なるデータベースである必要があります。したがって、ALTER は master データベースに接続されている間に実行する必要があります。

A. データベースの名前を変更します。

ALTER DATABASE AdventureWorks2022
MODIFY NAME = Northwind;

B. データベースの最大サイズを変更します。

ALTER DATABASE dw1 MODIFY ( MAXSIZE=10240 GB );

C. コンピューティング サイズ (サービス目標) を変更します。

ALTER DATABASE dw1 MODIFY ( SERVICE_OBJECTIVE= 'DW1200' );

D. 最大サイズとコンピューティング サイズ (サービス目標) を変更します。

ALTER DATABASE dw1 MODIFY ( MAXSIZE=10240 GB, SERVICE_OBJECTIVE= 'DW1200' );

次のステップ

* Analytics
Platform System (PDW) *
 

 

概要:分析プラットフォーム システム

Analytics Platform System (PDW) では、ALTER DATABASE によって、レプリケート テーブル、分散テーブル、トランザクション ログの最大データベース サイズ オプションが変更されます。 このステートメントを使用すると、サイズの増加または減少に合わせてデータベースのディスク領域割り当てを管理できます。 この記事では、Analytics Platform System (PDW) でのデータベース オプションの設定に関連する構文についても説明します。

構文

-- Analytics Platform System
ALTER DATABASE database_name
    SET ( <set_database_options> | <db_encryption_option> )
[;]

<set_database_options> ::=
{
    AUTOGROW = { ON | OFF }
    | REPLICATED_SIZE = size [GB]
    | DISTRIBUTED_SIZE = size [GB]
    | LOG_SIZE = size [GB]
    | SET AUTO_CREATE_STATISTICS { ON | OFF }
    | SET AUTO_UPDATE_STATISTICS { ON | OFF }
    | SET AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
}

<db_encryption_option> ::=
    ENCRYPTION { ON | OFF }

引数

database_name

変更するデータベースの名前。 アプライアンス上でデータベースの一覧を表示するには、sys.databases を使用します。

AUTOGROW = { ON | OFF }

AUTOGROW オプションを更新します。 AUTOGROW が ON のとき、Analytics Platform System (PDW) は、複製テーブル、分散テーブル、トランザクション ログの割り当て領域を必要に応じて自動的に増やし、記憶域要件の増加に対応します。 AUTOGROW が OFF のとき、Analytics Platform System (PDW) は、複製テーブル、分散テーブル、トランザクション ログが最大サイズ設定を超過したときにエラーを返します。

REPLICATED_SIZE = size [GB]

変更されているデータベースのすべての複製テーブルを格納するための新しい最大 GB を計算ノードごとに指定します。 アプライアンスの記憶域を計画している場合、アプライアンスの計算ノード数に REPLICATED_SIZE を掛ける必要があります。

DISTRIBUTED_SIZE = size [GB]

変更されているデータベースのすべての分散テーブルを格納するための新しい最大 GB をデータベースごとに指定します。 このサイズは、アプライアンスの計算ノード全体で分散されます。

LOG_SIZE = size [GB]

変更されているデータベースのすべてのトランザクション ログを格納するための新しい最大 GB をデータベースごとに指定します。 このサイズは、アプライアンスの計算ノード全体で分散されます。

ENCRYPTION { ON | OFF }

データベースを暗号化する (ON) か、暗号化しない (OFF) かを設定します。 Analytics Platform System (PDW) の暗号化は、sp_pdw_database_encryption1 に設定されているときにのみ構成できます。 Transparent Data Encryption を構成するには、先にデータベース暗号化キーを作成する必要があります。 データベース暗号化の詳細については、「Transparent Data Encryption (TDE)」を参照してください。

SET AUTO_CREATE_STATISTICS { ON | OFF }

統計の自動作成オプション AUTO_CREATE_STATISTICS が ON の場合、クエリ プランのカーディナリティの推定を向上させるために、クエリ オプティマイザーによってクエリ述語内の個々の列に関する統計が必要に応じて作成されます。 これらの 1 列ずつの統計は、既存の統計オブジェクトにまだヒストグラムがない列について作成されます。

AU7 へのアップグレード後に作成された新しいデータベースの場合、既定値は ON です。 アップグレードの前に作成されたデータベースの場合、既定値は OFF です。

統計の詳細については、「統計」を参照してください。

SET AUTO_UPDATE_STATISTICS { ON | OFF }

統計の自動更新オプション AUTO_UPDATE_STATISTICS が ON の場合、古くなっている可能性がある統計がクエリ オプティマイザーによって判断され、それらがクエリで使用されると更新されます。 挿入、更新、削除、またはマージの各操作によってテーブルまたはインデックス付きビューのデータの分布が変わると、統計は古くなったと判断されます。 クエリ オプティマイザーでは、統計が前回更新されてから発生したデータ変更の数をカウントし、その変更の数をしきい値と比較することで、統計が古くなっている可能性がないかを判断します。 このしきい値は、テーブルまたはインデックス付きビューの行数に基づいて決められます。

AU7 へのアップグレード後に作成された新しいデータベースの場合、既定値は ON です。 アップグレードの前に作成されたデータベースの場合、既定値は OFF です。

統計の詳細については、「統計」を参照してください。

SET AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }

統計の非同期更新オプション AUTO_UPDATE_STATISTICS_ASYNC によって、クエリ オプティマイザーで統計の同期更新と非同期更新のどちらを使用するかが決まります。 AUTO_UPDATE_STATISTICS_ASYNC オプションは、インデックスに対して作成された統計オブジェクト、クエリ述語内の列に対して 1 列ずつ作成された統計オブジェクト、および CREATE STATISTICS ステートメントを使用して作成された統計に適用されます。

AU7 へのアップグレード後に作成された新しいデータベースの場合、既定値は ON です。 アップグレードの前に作成されたデータベースの場合、既定値は OFF です。

統計の詳細については、「統計」を参照してください。

アクセス許可

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

エラー メッセージ

自動統計が無効になっている場合に、統計の設定を変更しようとすると、This option is not supported in PDW というエラーが PDW から出力されます。 システム管理者は、機能スイッチ AutoStatsEnabled を有効にすることにより、自動統計を有効にすることができます。

解説

REPLICATED_SIZEDISTRIBUTED_SIZELOG_SIZE は、データベースの現在の値と同じ値か、それより大きい値か、それより小さい値に設定できます。

制限事項と制約事項

増加と縮小はおおよそで行われます。 結果的に与えられる実際のサイズはサイズ パラメーターとは異なる場合があります。

Analytics Platform System (PDW) によって ALTER DATABASE ステートメントはアトミック操作として実行されません。 実行中、ステートメントが中止された場合、既に発生している変更はそのまま残ります。

統計の設定は、管理者によって自動統計が有効にされた場合にのみ機能します。管理者である場合は、機能スイッチ AutoStatsEnabled を使用して自動統計を有効または無効にします。

ロック動作

DATABASE オブジェクトを共有ロックします。 別のユーザーが読み取りまたは書き込みをしているデータベースを変更することはできません。 データベースで USE ステートメントを発行しているセッションもこれに該当します。

パフォーマンス

データベース内の実際のデータ サイズとディスクの断片化の量によっては、データベースの縮小に多大な時間とシステム リソースが必要となります。 たとえば、データベースの縮小に数時間かかることがあります。

暗号化の進行状況を確認する

次のクエリを使用すると、データベースの Transparent Data Encryption の進捗状況を割合で見ることができます。

WITH
database_dek AS (
    SELECT ISNULL(db_map.database_id, dek.database_id) AS database_id,
        dek.encryption_state, dek.percent_complete,
        dek.key_algorithm, dek.key_length, dek.encryptor_thumbprint,
        type
    FROM sys.dm_pdw_nodes_database_encryption_keys AS dek
    INNER JOIN sys.pdw_nodes_pdw_physical_databases AS node_db_map
        ON dek.database_id = node_db_map.database_id
        AND dek.pdw_node_id = node_db_map.pdw_node_id
    LEFT JOIN sys.pdw_database_mappings AS db_map
        ON node_db_map .physical_name = db_map.physical_name
    INNER JOIN sys.dm_pdw_nodes nodes
        ON nodes.pdw_node_id = dek.pdw_node_id
    WHERE dek.encryptor_thumbprint <> 0x
),
dek_percent_complete AS (
    SELECT database_dek.database_id, AVG(database_dek.percent_complete) AS percent_complete
    FROM database_dek
    WHERE type = 'COMPUTE'
    GROUP BY database_dek.database_id
)
SELECT DB_NAME( database_dek.database_id ) AS name,
    database_dek.database_id,
    ISNULL(
       (SELECT TOP 1 dek_encryption_state.encryption_state
        FROM database_dek AS dek_encryption_state
        WHERE dek_encryption_state.database_id = database_dek.database_id
        ORDER BY (CASE encryption_state
            WHEN 3 THEN -1
            ELSE encryption_state
            END) DESC), 0)
        AS encryption_state,
dek_percent_complete.percent_complete,
database_dek.key_algorithm, database_dek.key_length, database_dek.encryptor_thumbprint
FROM database_dek
INNER JOIN dek_percent_complete
    ON dek_percent_complete.database_id = database_dek.database_id
WHERE type = 'CONTROL';

TDE 実装の全手順を包括的な例で見るには、「Transparent Data Encryption (TDE)」を参照してください。

例: Analytics Platform System (PDW)

A. AUTOGROW の設定を変更する

データベース CustomerSales の AUTOGROW を ON に設定します。

ALTER DATABASE CustomerSales
    SET ( AUTOGROW = ON );

B. 複製テーブルの最大記憶域を変更する

次の例では、データベース CustomerSales の複製テーブルの記憶域上限を 1 GB に設定します。 これは計算ノードごとの記憶域上限になります。

ALTER DATABASE CustomerSales
    SET ( REPLICATED_SIZE = 1 GB );

C. 分散テーブルの最大記憶域を変更する

次の例では、データベース CustomerSales の分散テーブルの記憶域上限を 1000 GB (1 テラバイト) に設定します。 これは、計算ノードごとの記憶域上限ではなく、アプライアンス全体の全計算ノードの記憶域上限を 1 つにしたものになります。

ALTER DATABASE CustomerSales
    SET ( DISTRIBUTED_SIZE = 1000 GB );

D. トランザクション ログの最大記憶域を変更する

次の例では、データベース CustomerSales を更新し、アプライアンスの SQL Server トランザクション ログの最大サイズを 10 GB にします。

ALTER DATABASE CustomerSales
    SET ( LOG_SIZE = 10 GB );

E. 現在の統計値を確認する

次のクエリを実行すると、すべてのデータベースについて現在の統計値が返されます。 値が 1 の場合は機能がオンであることを意味し、値が 0 の場合は機能がオフであることを意味します。

SELECT NAME,
    is_auto_create_stats_on,
    is_auto_update_stats_on,
    is_auto_update_stats_async_on
FROM sys.databases;

F. データベースに対して統計の自動作成および自動更新を有効にする

次のステートメントを使用して、データベース CustomerSales について自動的かつ非同期的に統計を作成および更新する機能を有効にします。 これにより、高品質のクエリ プランを作成するために必要に応じて単一列統計が作成および更新されます。

ALTER DATABASE CustomerSales
    SET AUTO_CREATE_STATISTICS ON;
ALTER DATABASE CustomerSales
    SET AUTO_UPDATE_STATISTICS ON;
ALTER DATABASE
    SET AUTO_UPDATE_STATISTICS_ASYNC ON;

次のステップ