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>
{ 160 | 150 | 140 | 130 | 120 | 110 | 100 | 90 }
}
引数
database_name
変更するデータベースの名前です。
Note
このオプションは、包含データベースでは使用できません。
CURRENT
適用対象: SQL Server 2012 (11.x) 以降。
使用中の現在のデータベースを変更することを指定します。
MODIFY NAME = new_database_name
データベースの名前を、new_database_name で指定した名前に変更します。
COLLATE collation_name
データベースの照合順序を指定します。 collation_name には、Windows 照合順序名または SQL 照合順序名を指定できます。 指定しない場合は、データベースに SQL Server インスタンスの照合順序が割り当てられます。
Note
Azure SQL Database でデータベースが作成された後は、照合順序を変更できません。
既定の照合順序以外でデータベースを作成する場合、データベース内のデータは常に、指定された照合順序を優先します。 SQL Server では、包含データベースを作成する場合、内部カタログの情報は SQL Server の既定の照合順序、Latin1_General_100_CI_AS_WS_KS_SC を使用して維持されます。
Windows 照合順序名および SQL 照合順序名について詳しくは、「COLLATE」をご覧ください。
<delayed_durability_option> ::=
適用対象: SQL Server 2014 (12.x) 以降。
詳細については、「
<file_and_filegroup_options>::=
詳しくは、「ALTER DATABASE の File および Filegroup オプション」をご覧ください。
解説
データベースを削除するには、DROP DATABASE を使用します。
データベースのサイズを縮小するには、DBCC SHRINKDATABASE を使用します。
ALTER DATABASE
ステートメントは自動コミット モード (既定のトランザクション管理モード) で実行する必要があり、明示的または暗黙的なトランザクションでは使用できません。
データベース ファイルの状態 (オンラインかオフラインかなど) は、データベースの状態とは別に保持されます。 詳しくは、「ファイルの状態」をご覧ください。 ファイル グループ内のファイルの状態は、ファイル グループ全体の可用性を決定します。 ファイル グループを使用可能にするには、ファイル グループ内のすべてのファイルがオンラインである必要があります。 ファイル グループがオフラインの場合、SQL ステートメントによってファイル グループにアクセスしようとするとエラーで失敗します。 SELECT ステートメントのクエリ プランを作成する場合、クエリ オプティマイザーは、オフラインのファイル グループにある非クラスター化インデックスやインデックス付きビューを回避します。 これにより、これらのステートメントは正常に実行できます。 ただし、オフラインのファイル グループに、対象テーブルのヒープやクラスター化インデックスが含まれている場合には、SELECT ステートメントは失敗します。 さらに、オフライン ファイル グループ内のインデックスを持つテーブルを変更する INSERT
、 UPDATE
、または 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. データベースの照合順序を変更する
次の例では、testdb
照合順序で SQL_Latin1_General_CP1_CI_AS
という名前のデータベースを作成した後、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_S_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>
{ 160 | 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 が変更される可能性があります。
Note
MAXSIZE 引数は、ハイパースケール サービス層の単一データベースには適用されません。 単一の Hyperscale サービス レベル データベースは、必要に応じて最大 128 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 の増分 1 | 該当なし | 該当なし | 該当なし | 該当なし | はい |
1 P11 および P15 では最大 4 TB の MAXSIZE が許可され、1024 GB が既定のサイズになります。 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 購入モデルの場合:
S0
、S1
、S2
、S3
、S4
、S6
、S7
、S9
、S12
、P1
、P2
、P4
、P6
、P11
、P15
。 各コンピューティング サイズに 割り当てられている DTU の数については、DTU 単一データベース のリソース制限または DTU Elastic Pool のリソース制限を参照してください。 - 仮想コア購入モデルの場合は、レベルを選び、あらかじめ設定されている値の一覧から仮想コアの数を指定します。ここで、仮想コアの数は
n
です。 仮想コア単一データベースのリソース制限または仮想コア Elastic Pool のリソース制限に関する記事をご覧ください。- 次に例を示します。
- General Purpose、プロビジョニング済みコンピューティング、Standard シリーズ (Gen5)、8 仮想コア用の
GP_Gen5_8
。 - 汎用、サーバーレス コンピューティング、Standard シリーズ (Gen5)、8 仮想コア用の
GP_S_Gen5_8
。 - Hyperscale、プロビジョニング済みコンピューティング、Standard シリーズ (Gen5)、8 仮想コアの
HS_Gen5_8
。 - Hyperscale、サーバーレス コンピューティング、Standard シリーズ (Gen5)、8 仮想コアの
HS_S_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 名前付きレプリカにのみ使用されます。 詳細については、「 Hyperscale セカンダリ レプリカ」を参照してください。
SECONDARY_TYPE
Azure SQL Database Hyperscale の場合のみ。 GEO により geo レプリカが指定され、NAMED により名前付きレプリカが指定されます。 既定値は [GEO] です。 詳細については、「 Hyperscale セカンダリ レプリカ」を参照してください。
サービス目標の説明と、サイズ、エディション、およびサービス目標の組み合わせの詳細については、「 Azure SQL Database の仮想コアと DTU ベースの購入モデル、 DTU リソース制限 および 仮想コア リソース制限を参照してください。 PRS サービスの目標のサポートはなくなりました。
SERVICE_OBJECTIVEが指定されていない場合、セカンダリ データベースはプライマリ データベースと同じサービス レベルで作成されます。 SERVICE_OBJECTIVE を指定した場合は、指定したレベルでセカンダリ データベースが作成されます。 指定する SERVICE_OBJECTIVE は、ソースと同じエディション内でなければなりません。 たとえば、エディションが Premium の場合、S0 を指定することはできません。
MODIFY (SERVICE_OBJECTIVE = ELASTIC_POOL (name = <elastic_pool_name>)
エラスティック プールに既存のデータベースを追加するには、データベースの SERVICE_OBJECTIVE を ELASTIC_POOL に設定し、エラスティック プールの名前を指定します。 このオプションを使用して、データベースを同じサーバー内の別のエラスティック プールに変更することもできます。 詳細については、Elastic Pool を利用した Azure SQL データベース内の、複数のデータベースの管理およびスケーリングに関するページをご覧ください。 エラスティック プールからデータベースを削除するには、ALTER DATABASE を使用して、SERVICE_OBJECTIVE を単一のデータベースのコンピューティング サイズ (サービス目標) に設定します。
Note
Hyperscale サービス レベルのデータベースをエラスティック プールに追加することはできません。
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 レプリケーション モードは、非同期モードから同期モードへと一時的に切り替わります。 フェールオーバー プロセス時:
- プライマリでは、新しいトランザクションが処理が停止されます。
- すべての未処理のトランザクションは、セカンダリにフラッシュされます。
- セカンダリがプライマリになり、古いプライマリと新しいセカンダリを使用して、非同期の geo レプリケーションが開始されます。
このシーケンスは、データの損失が発生しないことを保証します。 両方のデータベースが使用できない期間は、ロールを切り替えている間の 0 から 25 秒程度です。 操作全体を約 1 分以内に実行する必要があります。 このコマンドの発行時にプライマリ データベースが使用できない場合、コマンドは失敗し、プライマリ データベースが使用できないことを示すエラー メッセージが表示されます。 フェールオーバー プロセスが完了せず、スタックしているように見える場合は、まず、強制フェールオーバー コマンドを使用して、データの消失を許容します。次に、消失したデータを復旧する必要がある場合は、DevOps (CSS) に連絡して、消失したデータの復旧を依頼します。
重要
FAILOVER コマンドを実行するユーザーは、プライマリ サーバーとセカンダリ サーバーの両方で DBManager になる必要があります。
FORCE_FAILOVER_ALLOW_DATA_LOSS
コマンドを実行する geo レプリケーション パートナーシップ内のセカンダリ データベースのレベルを上げてプライマリにし、現在のプライマリのレベルを下げて新しいセカンダリにします。 現在のプライマリが使用できない場合にのみ、このコマンドを使用します。 これは、可用性の復元が不可欠で、一部のデータ消失が許容される場合のディザスター リカバリー専用に設計されています。
強制フェールオーバー中:
- 指定したセカンダリ データベースはすぐに、プライマリ データベースになり、新しいトランザクションの受け入れを開始します。
- 元のプライマリが新しいプライマリに再接続できると、元のプライマリ上で増分バックアップが実行され、元のプライマリは新しいセカンダリになります。
- 古いプライマリのこの増分バックアップからデータを復旧するには、ユーザーは devops/CSS である必要があります。
- その他のセカンダリがある場合は、自動的に再構成されて新しいプライマリのセカンダリになります。 このプロセスは非同期であり、このプロセスが完了するまで遅延が発生する可能性があります。 再構成が完了するまで、セカンダリは古いプライマリのセカンダリであり続けます。
重要
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 管理者、 master
の dbmanager データベース ロールのメンバー、現在のデータベースの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 の組み込みロールを参照してください。
例
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 レプリケーションのセカンダリを削除します。
サーバー db1
上のセカンダリ データベース secondaryserver
を削除します。
ALTER DATABASE db1
REMOVE SECONDARY ON SERVER testsecondaryserver;
E. geo レプリケーションのセカンダリにフェールオーバーします。
サーバー db1
で実行されると、サーバー secondaryserver
上のセカンダリ データベース secondaryserver
を昇格させて新しいプライマリ データベースにします。
ALTER DATABASE db1 FAILOVER;
Note
詳細については、「 Disaster の復旧ガイダンス - Azure SQL Database および Azure SQL Database の高可用性とディザスター リカバリーのチェックリストを参照してください。
F. geo レプリケーションのセカンダリへのフェールオーバーを強制します (この場合、データが失われることがあります)。
プライマリ サーバーが使用不可能になった場合、サーバー db1
で実行されると、サーバー secondaryserver
上のセカンダリ データベース secondaryserver
が新しいプライマリ データベースとして強制されます。 このオプションでは、データ損失が発生する可能性があります。
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';
関連するコンテンツ
- CREATE DATABASE - Azure SQL Database
- DATABASEPROPERTYEX
- DROP DATABASE
- SET TRANSACTION ISOLATION LEVEL
- EVENTDATA
- sp_spaceused
- sys.databases
- sys.database_files
- sys.filegroups
- sys.master_files
- システム データベース
- ディザスター リカバリー ガイダンス - Azure SQL Database
- Azure SQL Database の高可用性とディザスター リカバリーのチェックリスト
- DTU リソースの制限
- 単一データベースに対する仮想コア リソースの制限
- エラスティック プールに対する仮想コア リソースの制限
* 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>
{ 160 | 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 エラー ログに、以下の通知メッセージが記録されます。
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 分間隔でログに記録されます。 既定オプションのデータベースに対して複数のクエリが実行されても、プラン キャッシュはフラッシュされます。 データベースはその後削除されます。
一部の
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 に設定されており、変更することはできません。 詳しくは、「ALTER DATABASE 互換性レベル」を参照してください。
Note
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_encryption が 1 に設定されているときにのみ構成できます。 Transparent Data Encryption を構成するには、先にデータベース暗号化キーを作成する必要があります。 データベース暗号化の詳細については、「 Transparent データ暗号化 (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 isn't supported in PDW
というエラーが PDW から出力されます。 システム管理者は、機能スイッチ AutoStatsEnabled を有効にすることにより、自動統計を有効にすることができます。
解説
REPLICATED_SIZE
、DISTRIBUTED_SIZE
、LOG_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;
関連するコンテンツ
概要: Microsoft Fabric
Microsoft Fabric
Microsoft Fabric Warehouse では、このステートメントによってウェアハウスが変更されます。
解説が長くなるため、ALTER DATABASE
の構文は複数の記事に分けて説明します。
[アーティクル] | 説明 |
---|---|
ALTER DATABASE |
この記事では、データベースの名前と照合順序を変更するための構文および関連情報について説明します。 |
ALTER DATABASE SET オプション | ALTER DATABASE の SET オプションを使ってデータベースの属性を変更するための構文と関連情報について説明します。 |
解説
現時点では、Delta Lake ログの発行および V オーダーの動作を中断するは、Microsoft Fabric のALTER DATABASE ... SET
に対する唯一の用途です。 「ALTER DATABASE の SET オプション」を参照してください。