- カテゴリ:
ALTER DATABASE¶
既存のデータベースのプロパティを変更します。
データベースの変更には、次が含まれます。
データベースの名前またはTime Travelデータ保持期間(Snowflake Enterprise Edition以降を使用している場合)の変更。
データベースの複製とフェールオーバーの有効化と管理。
- こちらもご参照ください。
このトピックの内容:
構文¶
ALTER DATABASE [ IF EXISTS ] <name> RENAME TO <new_db_name>
ALTER DATABASE [ IF EXISTS ] <name> SWAP WITH <target_db_name>
ALTER DATABASE [ IF EXISTS ] <name> SET [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COMMENT = '<string_literal>' ]
ALTER DATABASE <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]
ALTER DATABASE <name> UNSET TAG <tag_name> [ , <tag_name> ... ]
ALTER DATABASE [ IF EXISTS ] <name> UNSET { DATA_RETENTION_TIME_IN_DAYS |
MAX_DATA_EXTENSION_TIME_IN_DAYS |
DEFAULT_DDL_COLLATION |
COMMENT
}
[ , ... ]
データベースの複製とフェールオーバーの構文¶
データベースの複製
ALTER DATABASE <name> ENABLE REPLICATION TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ] [ IGNORE EDITION CHECK ]
ALTER DATABASE <name> DISABLE REPLICATION [ TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ] ]
ALTER DATABASE <name> REFRESH
データベースのフェールオーバー
ALTER DATABASE <name> ENABLE FAILOVER TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ]
ALTER DATABASE <name> DISABLE FAILOVER [ TO ACCOUNTS <account_identifier> [ , <account_identifier> ... ] ]
ALTER DATABASE <name> PRIMARY
パラメーター¶
名前
変更するデータベースの識別子を指定します。識別子にスペース、特殊文字、または大文字と小文字が混在する場合、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
RENAME TO 新しいデータベース名
データベースの新しい識別子を指定します。アカウントに対して一意である必要があります。
詳細については、 識別子の要件 をご参照ください。
オブジェクトの名前を変更すると、そのオブジェクトを参照する他のオブジェクトも新しい名前で更新する必要があります。
SWAP WITH ターゲットデータベース名
指定された2つのデータベース間で、すべてのオブジェクト(スキーマ、テーブル、ビューなど)および識別子を含むメタデータを交換します。また、データベースおよびそれに含まれるオブジェクトに対して付与されたすべてのアクセス制御権限をスワップします。
SWAP WITH
は、基本的に両方のデータベースの名前変更を単一の操作として実行します。SET ...
データベースに設定する1つ(または複数)のプロパティを指定します(空白、コンマ、または改行で区切られます):
DATA_RETENTION_TIME_IN_DAYS = 数値
データベースでTime Travelアクション(CLONE および UNDROP)を実行できる日数を指定し、さらにデータベースで作成されたすべてのスキーマのデフォルトのTime Travel保持時間を指定します。
指定できる値は、使用しているSnowflake Editionによって異なります。
Standard Edition:
0
または1
Enterprise Edition(またはそれ以上):
0
から90
MAX_DATA_EXTENSION_TIME_IN_DAYS = 整数
Snowflakeがデータベース内のテーブルのデータ保持期間を延長して、テーブル上のストリームが古くなるのを防ぐことができる最大日数を指定するオブジェクトパラメーター。
このパラメーターの詳細については、 MAX_DATA_EXTENSION_TIME_IN_DAYS をご参照ください。
DEFAULT_DDL_COLLATION = '照合仕様'
次のデフォルトの 照合仕様 を指定します。
データベース内の既存のテーブルに追加された新しい列。
データベースに追加された新しいテーブルのすべての列。
パラメーターを設定しても、既存の列の照合仕様は 変更されません 。
パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。
TAG タグ名 = 'タグ値' [ , タグ名 = 'タグ値' , ... ]
タグ 名(つまり、キー)とタグ値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。オブジェクトに設定できる 一意の タグキーの最大数は20です。
COMMENT = '文字列リテラル'
データベースのコメントを追加するか、既存のコメントを上書きします。
UNSET ...
データベースの設定を解除する1つ(または複数)のプロパティおよび/またはパラメーターを指定します。これにより、デフォルトにリセットします。
DATA_RETENTION_TIME_IN_DAYS
MAX_DATA_EXTENSION_TIME_IN_DAYS
DEFAULT_DDL_COLLATION
TAG タグ名 [ , タグ名 ... ]
COMMENT
単一の ALTER ステートメントで複数のプロパティ/パラメーターをリセットできます。ただし、各プロパティ/パラメーターはカンマで区切る 必要があります 。プロパティ/パラメーターをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。
データベースの複製とフェールオーバーのパラメーター¶
ENABLE REPLICATION TO ACCOUNTS アカウント識別子 [ , アカウント識別子 ... ]
複製のプライマリデータベースとして機能するローカルデータベースを昇格します。プライマリデータベースは1つ以上のアカウントで複製でき、これらのアカウントのユーザーは各 セカンダリ (つまり、レプリカ)データベースのオブジェクトをクエリできます。
または、既存のプライマリデータベースを変更して、データベースのレプリカを保存できるアカウントのリストに追加または削除します。
このデータベースのレプリカを保存できる組織内のアカウントのコンマ区切りリストを提供します。
アカウント参照
アカウント識別子
リモートアカウントの場所
アカウント
プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。
Snowflake地域.アカウント
プライマリデータベースを保存するアカウントと同じリージョングループですが、リージョンは異なります。
リージョングループ.Snowflakeリージョン.アカウント
プライマリデータベースを保存するアカウントと リージョングループ が異なります。
組織名.アカウント名
アカウントで 組織機能を有効にしている 場合、この形式のアカウント識別子は、プライマリデータベースを保存しているアカウントのリージョンまたはリージョングループに関係なく使用できます。
アカウント識別子
使用する アカウント識別子 については、上記の「アカウント参照」のテーブルをご参照ください。複製が有効化されたアカウントのリストを組織内で表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。
IGNORE EDITION CHECK
次のいずれかのシナリオで、下位エディションのアカウントにデータを複製できます。
プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにありますが、下位エディションには、複製が承認された1つ以上のアカウントがあります。Business Critical Editionは、非常に機密性の高いデータを有するSnowflakeアカウントを対象としています。
プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにあり、 HIPAA HITRUST 規制に従ってアカウントに PHI データを保存するために署名されたビジネスアソシエイト契約が整っています。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が承認された1つ以上のアカウントに対してはそのような契約がありません。
Business Critical(またはそれ以上)のアカウントのアカウント管理者が機密データを下位エディションのアカウントに誤って複製することを防ぐため、両方のシナリオともデフォルトで禁止されています。
DISABLE REPLICATION [ TO ACCOUNTS アカウント識別子 [ , アカウント識別子 ... ] ]
このプライマリデータベースの複製を無効にします。つまり、別のアカウントにあるこのデータベース(セカンダリデータベース)のレプリカは更新できません。セカンダリデータベースはプライマリデータベースにリンクされたままですが、セカンダリデータベースを更新する要求は拒否されます。
プライマリデータベースの複製を無効にしても、同じアカウントへの複製が妨げられることはありません。そのため、データベースは、引き続き SHOW REPLICATION DATABASES 出力にリストされます。
必要に応じて、組織内のアカウントのコンマ区切りリストを提供して、指定したアカウントでのみこのデータベースの複製を無効にします。
アカウント参照
アカウント識別子
リモートアカウントの場所
アカウント
プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。
Snowflake地域.アカウント
プライマリデータベースを保存するアカウントと同じリージョングループですが、リージョンは異なります。
リージョングループ.Snowflakeリージョン.アカウント
プライマリデータベースを保存するアカウントと リージョングループ が異なります。
組織名.アカウント名
アカウントで 組織機能を有効にしている 場合、この形式のアカウント識別子は、プライマリデータベースを保存しているアカウントのリージョンまたはリージョングループに関係なく使用できます。
アカウント識別子
使用する アカウント識別子 については、上記の「アカウント参照」のテーブルをご参照ください。複製が有効化されたアカウントのリストを組織内で表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。
REFRESH
プライマリデータベースのスナップショットからセカンダリデータベースを更新します。スナップショットには、オブジェクトとデータへの変更が含まれます。
ENABLE FAILOVER TO ACCOUNTS アカウント識別子 [ , アカウント識別子 ... ]
このプライマリデータベースのレプリカをプライマリデータベースとして機能するように昇格できる、組織内のアカウントのコンマ区切りリストを指定します。
アカウント参照
アカウント識別子
リモートアカウントの場所
アカウント
プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。
Snowflake地域.アカウント
プライマリデータベースを保存するアカウントと同じリージョングループですが、リージョンは異なります。
リージョングループ.Snowflakeリージョン.アカウント
プライマリデータベースを保存するアカウントと リージョングループ が異なります。
組織名.アカウント名
アカウントで 組織機能を有効にしている 場合、この形式のアカウント識別子は、プライマリデータベースを保存しているアカウントのリージョンまたはリージョングループに関係なく使用できます。
アカウント識別子
使用する アカウント識別子 については、上記の「アカウント参照」のテーブルをご参照ください。複製が有効化されたアカウントのリストを組織内で表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。
DISABLE FAILOVER [ TO ACCOUNTS アカウント識別子 [ , アカウント識別子 ... ] ]
このプライマリデータベースのフェールオーバーを無効にします。つまり、このデータベース(つまり、セカンダリデータベース)のレプリカをプライマリデータベースとして機能させることはできません。
必要に応じて、組織内のアカウントのコンマ区切りリストを指定して、指定したアカウントでのみこのデータベースのフェールオーバーを無効にします。
アカウント参照
アカウント識別子
リモートアカウントの場所
アカウント
プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。
Snowflake地域.アカウント
プライマリデータベースを保存するアカウントと同じリージョングループですが、リージョンは異なります。
リージョングループ.Snowflakeリージョン.アカウント
プライマリデータベースを保存するアカウントと リージョングループ が異なります。
組織名.アカウント名
アカウントで 組織機能を有効にしている 場合、この形式のアカウント識別子は、プライマリデータベースを保存しているアカウントのリージョンまたはリージョングループに関係なく使用できます。
アカウント識別子
使用する アカウント識別子 については、上記の「アカウント参照」のテーブルをご参照ください。複製が有効化されたアカウントのリストを組織内で表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。
PRIMARY
指定されたセカンダリ(レプリカ)データベースをプライマリデータベースとして機能するように昇格します。昇格すると、データベースは書き込み可能になります。同時に、以前のプライマリデータベースは読み取り専用のセカンダリデータベースになります。
使用上の注意¶
データベースの名前を変更するには、操作の実行に使用されるロールにはデータベースの CREATE DATABASE グローバル権限と OWNERSHIP 権限が必要です。
2つのデータベースを交換するには、操作の実行に使用されるロールには両方のデータベースの OWNERSHIP 権限が必要です。
メタデータについて。
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
データベースの複製とフェールオーバーの使用上の注意¶
アカウントの管理者( ACCOUNTADMIN ロールを持つユーザー)のみが、データベースの複製とフェールオーバーを有効にして管理できます。
デフォルトの10 TB サイズ制限は、プライマリデータベースがセカンダリデータベースに最初に複製されるときに適用されます。サイズ制限を変更または削除するには、アカウントレベルで INITIAL_REPLICATION_SIZE_LIMIT_IN_TB パラメーターを設定します。
現在、セカンダリデータベースの後続の更新に適用されるデフォルトのサイズ制限はありません。
データベース複製の例¶
ローカルデータベース mydb1
( aws_us_west_2
地域内)を昇格してプライマリデータベースとして機能させ、 myaccount2
と myaccount3
(aws_us_east_1
地域内(AWS)と azure_westeurope
(Azure)それぞれ)の各アカウントが、このデータベースのレプリカを保存できるように指定します。
ALTER DATABASE mydb1 ENABLE REPLICATION TO ACCOUNTS aws_us_east_1.myaccount2, azure_westeurope.myaccount3;
mydb1
プライマリデータベースの複製を無効にします。
ALTER DATABASE mydb1 DISABLE REPLICATION;