カテゴリ:

データベース、スキーマ、共有 DDL

ALTER DATABASE

次を含む既存のデータベースのプロパティを変更します。

  • データベースの名前またはTime Travelデータ保持期間(Snowflake Enterprise Edition以降を使用している場合)の変更。

  • データベースの複製とフェールオーバーの有効化と管理。

こちらもご参照ください:

CREATE DATABASESHOW DATABASES

このトピックの内容:

構文

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 = <num> ]
                                        [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                        [ COMMENT = '<string_literal>' ]

ALTER DATABASE [ IF EXISTS ] <name> UNSET { DATA_RETENTION_TIME_IN_DAYS |
                                            DEFAULT_DDL_COLLATION       |
                                            COMMENT }
                                          [ , ... ]

データベースの複製とフェールオーバーの構文

データベースの複製

ALTER DATABASE <name> ENABLE REPLICATION TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] [ IGNORE EDITION CHECK ]

ALTER DATABASE <name> DISABLE REPLICATION [ TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] ]

ALTER DATABASE <name> SET AUTO_REFRESH_MATERIALIZED_VIEWS_ON_SECONDARY = { TRUE | FALSE }

ALTER DATABASE <name> REFRESH

データベースのフェールオーバー

ALTER DATABASE <name> ENABLE FAILOVER TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ]

ALTER DATABASE <name> DISABLE FAILOVER [ TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] ]

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

DEFAULT_DDL_COLLATION = '照合仕様'

次のデフォルトの 照合仕様 を指定します。

  • データベース内の既存のテーブルに追加された新しい列。

  • データベースに追加された新しいテーブルのすべての列。

パラメーターを設定しても、既存の列の照合仕様は 変更されません

パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。

COMMENT = '文字列リテラル'

データベースのコメントを追加するか、既存のコメントを上書きします。

UNSET ...

データベースの設定を解除する1つ(または複数)のプロパティおよび/またはパラメーターを指定します。これにより、デフォルトにリセットします。

  • DATA_RETENTION_TIME_IN_DAYS

  • DEFAULT_DDL_COLLATION

  • COMMENT

単一の ALTER ステートメントで複数のプロパティ/パラメーターをリセットできます。ただし、各プロパティ/パラメーターはカンマで区切る 必要があります 。プロパティ/パラメーターをリセットするときは、名前のみを指定します。プロパティの値を指定すると、エラーが返されます。

データベースの複製とフェールオーバーのパラメーター

ENABLE REPLICATION TO ACCOUNTS Snowflake地域.アカウント名 [ , Snowflake地域.アカウント名 ... ]

複製のプライマリデータベースとして機能するローカルデータベースを昇格します。プライマリデータベースは1つ以上のアカウントで複製でき、これらのアカウントのユーザーは各 セカンダリ (つまり、レプリカ)データベースのオブジェクトをクエリできます。

または、既存のプライマリデータベースを変更して、データベースのレプリカを保存できるアカウントのリストに追加または削除します。

このデータベースのレプリカを保存できる組織内のアカウントのコンマ区切りリストを提供します。アカウント名に加えて、リモートアカウントがある地域に応じて、次の追加のセグメントが必要です。

アカウント参照

修飾アカウント名

リモートアカウントの場所

アカウント

プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。

Snowflake地域.アカウント

プライマリデータベースを格納するアカウントと同じ地域グループですが、地域は異なります。

Snowflake地域

各Snowflakeアカウントがホストされている地域のSnowflake地域 ID を指定します。組織内のアカウントのリストを表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。

IGNORE EDITION CHECK

次のいずれかのシナリオで、下位エディションのアカウントにデータを複製できます。

  • プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにありますが、下位エディションには、複製が承認された1つ以上のアカウントがあります。Business Critical Editionは、非常に機密性の高いデータを有するSnowflakeアカウントを対象としています。

  • プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにあり、 HIPAA 規制に従ってアカウントに PHI データを保存するために署名されたビジネスアソシエイト契約が整っています。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が承認された1つ以上のアカウントに対してはそのような契約がありません。

Business Critical(またはそれ以上)のアカウントのアカウント管理者が機密データを下位エディションのアカウントに誤って複製することを防ぐため、両方のシナリオともデフォルトで禁止されています。

DISABLE REPLICATION [ TO ACCOUNTS Snowflake地域.アカウント名 [ , Snowflake地域.アカウント名 ... ] ]

このプライマリデータベースの複製を無効にします。つまり、別のアカウントのこのデータベース(セカンダリデータベース)のレプリカは更新できません。セカンダリデータベースはプライマリデータベースにリンクされたままですが、セカンダリデータベースを更新する要求は拒否されます。

プライマリデータベースの複製を無効にしても、同じアカウントへの複製が妨げられることはありません。そのため、データベースは、引き続き SHOW REPLICATION DATABASES 出力にリストされます。

必要に応じて、組織内のアカウントのコンマ区切りリストを提供して、指定したアカウントでのみこのデータベースの複製を無効にします。アカウント名に加えて、リモートアカウントがある地域に応じて、次の追加のセグメントが必要です。

アカウント参照

修飾アカウント名

リモートアカウントの場所

アカウント

プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。

Snowflake地域.アカウント

プライマリデータベースを格納するアカウントと同じ地域グループですが、地域は異なります。

Snowflake地域

各Snowflakeアカウントがホストされている地域のSnowflake地域 ID を指定します。組織内のアカウントのリストを表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。

SET AUTO_REFRESH_MATERIALIZED_VIEWS_ON_SECONDARY = TRUE | FALSE

セカンダリデータベースのマテリアライズドビューの自動バックグラウンドメンテナンスを実行するかどうかを指定します。

REFRESH

プライマリデータベースのスナップショットからセカンダリデータベースを更新します。スナップショットには、オブジェクトとデータへの変更が含まれます。

ENABLE FAILOVER TO ACCOUNTS Snowflake地域.アカウント名 [ , Snowflake地域.アカウント名 ... ]

このプライマリデータベースのレプリカをプライマリデータベースとして機能するように昇格できる、組織内のアカウントのコンマ区切りリストを指定します。アカウント名に加えて、リモートアカウントがある地域に応じて、次の追加のセグメントが必要です。

アカウント参照

修飾アカウント名

リモートアカウントの場所

アカウント

プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。

Snowflake地域.アカウント

プライマリデータベースを格納するアカウントと同じ地域グループですが、地域は異なります。

Snowflake地域

各Snowflakeアカウントがホストされている地域のSnowflake地域 ID を指定します。組織内のアカウントのリストを表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。

DISABLE FAILOVER [ TO ACCOUNTS Snowflake地域.アカウント名 [ , Snowflake地域.アカウント名 ... ] ]

このプライマリデータベースのフェールオーバーを無効にします。つまり、このデータベース(つまり、セカンダリデータベース)のレプリカをプライマリデータベースとして機能させることはできません。

必要に応じて、組織内のアカウントのコンマ区切りリストを指定して、指定したアカウントでのみこのデータベースのフェールオーバーを無効にします。アカウント名に加えて、リモートアカウントがある地域に応じて、次の追加のセグメントが必要です。

アカウント参照

修飾アカウント名

リモートアカウントの場所

アカウント

プライマリデータベースを格納するアカウントと同じ地域ですが、アカウントは異なります。

Snowflake地域.アカウント

プライマリデータベースを格納するアカウントと同じ地域グループですが、地域は異なります。

Snowflake地域

各Snowflakeアカウントがホストされている地域のSnowflake地域 ID を指定します。組織内のアカウントのリストを表示するには、 SHOW REPLICATION ACCOUNTS をクエリします。

PRIMARY

指定されたセカンダリ(レプリカ)データベースをプライマリデータベースとして機能するように昇格します。昇格すると、データベースは書き込み可能になります。同時に、以前のプライマリデータベースは読み取り専用のセカンダリデータベースになります。

使用上の注意

  • データベースの名前を変更するには、操作の実行に使用されるロールにはデータベースの CREATE DATABASE グローバル権限と OWNERSHIP 権限が必要です。

  • 2つのデータベースを交換するには、操作の実行に使用されるロールには両方のデータベースの OWNERSHIP 権限が必要です。

データベースの複製とフェールオーバーの使用上の注意

  • アカウントの管理者( ACCOUNTADMIN ロールを持つユーザー)のみが、データベースの複製とフェールオーバーを有効にして管理できます。

  • デフォルトの10 TB サイズ制限は、プライマリデータベースがセカンダリデータベースに最初に複製されるときに適用されます。サイズ制限を変更または削除するには、アカウントレベルで INITIAL_REPLICATION_SIZE_LIMIT_IN_TB パラメーターを設定します。

    現在、セカンダリデータベースの後続の更新に適用されるデフォルトのサイズ制限はありません。

一般的な例

データベース db1 の名前を db2 に変更します。

ALTER DATABASE IF EXISTS db1 RENAME TO db2;

データベース複製の例

ローカルデータベース mydb1aws_us_west_2 地域内)を昇格してプライマリデータベースとして機能させ、 myaccount2myaccount3aws_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;