ALTER FAILOVER GROUP¶
既存の フェールオーバーグループ のプロパティを変更します。
ソースアカウントから、次のアクションを実行できます。
フェールオーバーグループの名前を変更する。
複製とフェールオーバーが有効になっている指定されたオブジェクト型のリストをリセットする。
セカンダリフェールオーバーグループの自動更新の複製スケジュールを設定または更新する。
次の型のアカウントオブジェクトをフェールオーバーグループに追加、またはフェールオーバーグループから削除する。
複製とフェールオーバーが有効になっているターゲットアカウントを追加または削除する。
共有またはデータベースを別のフェールオーバーグループに移動する。
ターゲットアカウントから、次のアクションを実行できます。
ソースアカウントからターゲットアカウントのオブジェクトを更新する。
セカンダリフェールオーバーグループをプライマリに昇格する(つまり、オブジェクトのフェールオーバーグループをフェールオーバーする)。
スケジュールされた複製を一時停止する。
スケジュールされた複製を再開する。
- こちらもご参照ください。
CREATE FAILOVER GROUP、 DROP FAILOVER GROUP、 SHOW FAILOVER GROUPS
構文¶
ソースアカウント
ALTER FAILOVER GROUP [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER FAILOVER GROUP [ IF EXISTS ] <name> SET
[ OBJECT_TYPES = <object_type> [ , <object_type> , ... ] ]
[ ALLOWED_DATABASES = <db_name> [ , <db_name> , ... ] ]
[ ALLOWED_SHARES = <share_name> [ , <share_name> , ... ] ]
ALTER FAILOVER GROUP [ IF EXISTS ] <name> SET
OBJECT_TYPES = INTEGRATIONS [ , <object_type> , ... ]
ALLOWED_INTEGRATION_TYPES = <integration_type_name> [ , <integration_type_name> ... ]
ALTER FAILOVER GROUP [ IF EXISTS ] <name> SET
REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }'
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
ADD <db_name> [ , <db_name> , ... ] TO ALLOWED_DATABASES
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
MOVE DATABASES <db_name> [ , <db_name> , ... ] TO FAILOVER GROUP <move_to_fg_name>
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
REMOVE <db_name> [ , <db_name> , ... ] FROM ALLOWED_DATABASES
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
ADD <share_name> [ , <share_name> , ... ] TO ALLOWED_SHARES
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
MOVE SHARES <share_name> [ , <share_name> , ... ] TO FAILOVER GROUP <move_to_fg_name>
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
REMOVE <share_name> [ , <share_name> , ... ] FROM ALLOWED_SHARES
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
ADD <org_name>.<target_account_name> [ , <org_name>.<target_account_name> , ... ] TO ALLOWED_ACCOUNTS
[ IGNORE EDITION CHECK ]
ALTER FAILOVER GROUP [ IF EXISTS ] <name>
REMOVE <org_name>.<target_account_name> [ , <org_name>.<target_account_name> , ... ] FROM ALLOWED_ACCOUNTS
ターゲットアカウント
ALTER FAILOVER GROUP [ IF EXISTS ] <name> REFRESH
ALTER FAILOVER GROUP [ IF EXISTS ] <name> PRIMARY
ALTER FAILOVER GROUP [ IF EXISTS ] <name> SUSPEND
ALTER FAILOVER GROUP [ IF EXISTS ] <name> RESUME
パラメーター¶
ソースアカウント
name
フェールオーバーグループの識別子を指定します。
RENAME TO new_name
new_name
フェールオーバーグループの新しい識別子を指定します。識別子が別の複製またはフェールオーバーにすでに配置されている場合、新しい識別子は使用できません。
詳細については、 識別子の要件 をご参照ください。
SET ...
フェールオーバーグループに設定するプロパティを指定します(空白、コンマ、または改行で区切り)。
OBJECT_TYPES = object_type [ , object_type , ... ]
ソースアカウントからターゲットアカウントへの複製とフェールオーバーを有効にしているオブジェクト型のリストをリセットします。
注釈
データベースおよび共有オブジェクトの場合、
DATABASES または SHARES が OBJECT_TYPES リストに含まれ、リストがリセットされた後も OBJECT_TYPES リストに残っている場合、それぞれの許可オブジェクトリスト(ALLOWED_DATABASES または ALLOWED_SHARES)は変更なしのままになります。
DATABASES を追加または削除するために OBJECT_TYPES リストがリセットされると、 ALLOWED_DATABASES リストは NULL に設定されます。
SHARES を追加または削除するために OBJECT_TYPES リストがリセットされると、 ALLOWED_SHARES リストは NULL に設定されます。
ADD、 MOVE、 REMOVE 句を使用して、許可データベースまたは共有オブジェクトのリストを変更します。
次のオブジェクト型がサポートされています。
- ACCOUNT PARAMETERS:
すべてのアカウントレベルのパラメーター。これには、 アカウントパラメーター と、 アカウントに設定 できるパラメーターが含まれます。
- DATABASES:
データベースオブジェクトをオブジェクト型のリストに追加します。指定されたオブジェクト型のリストにデータベースオブジェクトがすでに含まれている場合は、
ALLOWED_DATABASES
リストは変更なしのままになります。データベースのリストを変更するには、 ADD、 MOVE、または REMOVE 句を使用します。- INTEGRATIONS:
現在、セキュリティ、 API、ストレージ [3]、外部アクセス [4]、および特定の型の通知統合のみがサポートされています。詳細については、 統合複製 をご参照ください。
指定されたオブジェクト型のリストに統合オブジェクトが含まれている場合は、
ALLOWED_INTEGRATION_TYPES
パラメーターを設定する必要があります。- NETWORK POLICIES:
ソースアカウントのすべてのネットワークポリシー。
- RESOURCE MONITORS:
ソースアカウントのすべてのリソースモニター。
- ROLES:
ソースアカウントのすべてのロール。ロールの複製には、複製グループに含まれるオブジェクト型のすべての付与が暗黙的に含まれます。たとえば、
ROLES
が複製される唯一のオブジェクト型である場合は、ロールの階層(つまり、他のロールに付与されたロール)のみがターゲットアカウントに複製されます。USERS
オブジェクト型も含まれている場合は、ユーザーへのロールの付与も複製されます。- SHARES:
オブジェクト型のリストに共有オブジェクトを追加します。指定されたオブジェクト型のリストに共有オブジェクトがすでに含まれている場合は、
ALLOWED_SHARES
リストは変更なしのままになります。共有のリストを変更するには、 ADD、 MOVE、または REMOVE 句を使用します。- USERS:
ソースアカウントのすべてのユーザー。
- WAREHOUSES:
ソースアカウントのすべてのウェアハウス。
[3] ストレージ統合の複製は現在プレビュー中です。
[4] 政府リージョンでは外部アクセスはサポートされていません。
ALLOWED_DATABASES = db_name [ , db_name , ... ]
ソースアカウントからターゲットアカウントへの複製とフェールオーバーを有効にしているデータベースまたはデータベースのリストを指定します。このパラメーターを設定するには、
OBJECT_TYPES
リストにDATABASES
を含める必要があります。db_name
データベースの識別子を指定します。
ALLOWED_SHARES = share_name [ , share_name , ... ]
ソースアカウントからターゲットアカウントへの複製とフェールオーバーを有効にしている共有または共有のリストを指定します。このパラメーターを設定するには、
OBJECT_TYPES
リストにSHARES
を含める必要があります。share_name
共有の識別子を指定します。
注釈
ALLOWED_DATABASES または ALLOWED_SHARES リストが変更された場合、以前にリスト内にあり削除されたオブジェクトは、次のリフレッシュ操作が発生したときに、セカンダリフェールオーバーグループがリンクされているターゲットアカウントですべてドロップされます。
ALLOWED_INTEGRATION_TYPES = integration_type_name [ , integration_type_name , ... ]
ソースアカウントからターゲットアカウントへの複製とフェールオーバーを有効にしている統合の型。
このプロパティには、このパラメーターを設定するために、
OBJECT_TYPES
リストにINTEGRATIONS
を含める必要があります。次の統合型がサポートされています。
- SECURITY INTEGRATIONS:
セキュリティ統合を指定します。
このプロパティには、
OBJECT_TYPES
リストにROLES
を含める必要があります。- API INTEGRATIONS:
API 統合を指定します。
API 統合複製では、 API 統合がターゲットアカウントに複製された後で追加のセットアップが必要です。詳細については、 API 統合のリモートサービスの更新 をご参照ください。
- STORAGE INTEGRATIONS:
ストレージ統合を指定します。
- EXTERNAL ACCESS INTEGRATIONS:
外部アクセス統合 を指定します。
詳細については、 ストアドプロシージャとユーザー定義関数の複製(UDFs) をご参照ください。
注釈
政府リージョンでは外部アクセスはサポートされていません。
- NOTIFICATION INTEGRATIONS:
通知統合を指定します。
一部の型の通知統合のみが複製されます。詳細については、 統合複製 をご参照ください。
REPLICATION_SCHEDULE ...
セカンダリフェールオーバーグループを更新するスケジュールを指定します。
USING CRON expr time_zone
セカンダリグループの更新のcron式とタイムゾーンを指定します。標準のcronユーティリティ構文のサブセットをサポートします。
タイムゾーンのリストについては、 tzデータベースタイムゾーンのリスト (Wikipedia)をご参照ください。
cron式は、次のフィールドで構成されます。
# __________ minute (0-59) # | ________ hour (0-23) # | | ______ day of month (1-31, or L) # | | | ____ month (1-12, JAN-DEC) # | | | | __ day of week (0-6, SUN-SAT, or L) # | | | | | # | | | | | * * * * *
次の特殊文字がサポートされています。
*
ワイルドカード。フィールドのオカレンスを指定します。
L
「最後」の略。曜日フィールドで使用すると、特定の月の「最後の金曜日」(「5L」)などの構造を指定できます。月の日フィールドでは、月の最後の日を指定します。
/n
特定の時間単位の nth インスタンスを示します。時間の各クォンタムは独立して計算されます。たとえば、月フィールドに
4/3
が指定されている場合、更新は4月、7月、および10月にスケジュールされます(つまり、年の4番目の月から始まる3か月ごと)。その後も同じスケジュールが維持されます。つまり、更新は1月(10月の実行から3か月後)に実行されるようにスケジュールされては いません。
注釈
cron式は現在、指定されたタイムゾーンに対してのみ評価します。アカウントの TIMEZONE パラメーター値を変更(またはユーザーレベルまたはセッションレベルで値を設定)しても、更新のタイムゾーンは変更 されません。
cron式は、更新のすべての 有効な 実行時間を定義します。Snowflakeは、このスケジュールに基づいてセカンダリグループを更新しようとします。ただし、次の有効な実行時間が始まる前に前の実行が完了していない場合、有効な実行時間はスキップされます。
cron式に特定の月の日と曜日の両方が含まれている場合、更新は月の日または曜日の いずれか を満たす日にスケジュールされます。たとえば、
SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'
は、月の10日から20日、およびそれらの日付以外の火曜日または木曜日の 0AM に更新をスケジュールします。
num MINUTE
更新間の待機時間の間隔(分単位)を指定します。正の整数のみを受け入れます。
num M
構文もサポートしています。あいまいさを避けるために、次の場合には 基本間隔時間 が設定されます。
オブジェクトの作成時(CREATE <オブジェクト> を使用) または
異なる間隔が設定されている場合(ALTER <オブジェクト> ... SET REPLICATION_SCHEDULE を使用)
基本間隔は、現在のクロックタイムから間隔カウンターを開始します。たとえば、
10
の INTERVAL 値が設定され、スケジュールされた更新が9:03 AM で有効になっている場合、更新は9:13 AM、9:23 AM というように実行されます。絶対精度を確保するために最善を尽くしますが、保証されるのは、設定間隔が発生する 前に 更新が実行されないようにすることのみです(たとえば、現在の例では、更新は最初に9:14 AM に実行されることはあっても、9:12 AM に実行されることは決してありません)。注釈
サポートされる最大値は
11520
(8日間)です。複製スケジュールのnum MINUTE
値が大きい場合、更新操作は実行されません。
ENABLE_ETL_REPLICATION = TRUE | FALSE
ADD db_name [ , db_name , ... ] TO ALLOWED_DATABASES
複製とフェールオーバーを有効にする追加データベースのコンマ区切りリストを指定します。データベースを追加するには、指定されたオブジェクト型のリストに DATABASES を含める必要があります。オブジェクト型のリストにまだ DATABASES が含まれていない場合は、追加する必要があります。
db_name
データベースの識別子を指定します。
MOVE DATABASES db_name [ , db_name , ... ] TO FAILOVER GROUP move_to_fg_name
あるフェールオーバーグループから別のフェールオーバーグループに移動するデータベースのコンマ区切りリストを指定します。データベースの移動先のフェールオーバーグループには、指定されたオブジェクト型のリストに DATABASES を含める必要があります。
db_name
データベースの識別子を指定します。
move_to_fg_name
データベースの移動先のフェールオーバーグループに対する識別子を指定します。
REMOVE db_name [ , db_name , ... ] FROM ALLOWED_DATABASES
複製とフェールオーバーが有効になっているデータベースのリストから、削除するデータベースのコンマ区切りリストを指定します。
注釈
プライマリフェールオーバーグループからデータベースを削除すると、次のリフレッシュ操作が発生したときに、リンクされたセカンダリフェールオーバーグループを持つすべてのターゲットアカウントでデータベースがドロップされます。
ターゲットアカウントでデータベースのドロップを回避するには、変更されたプライマリフェールオーバーグループが次回ターゲットアカウントに複製される 前 に、セカンダリフェールオーバーグループをドロップします。セカンダリフェールオーバーグループをドロップすると、グループに含まれていた読み取り専用のセカンダリデータベースは、ターゲットアカウントのスタンドアロン読み取り/書き込みデータベースになります。
ADD share_name [ , share_name , ... ] TO ALLOWED_SHARES
複製とフェールオーバーを有効にする追加の共有のコンマ区切りリストを指定します。共有を追加するには、指定されたオブジェクト型のリストに SHARES を含める必要があります。オブジェクト型のリストにまだ SHARES が含まれていない場合は、追加する必要があります。
share_name
共有の識別子を指定します。
MOVE SHARES share_name [ , share_name , ... ] TO FAILOVER GROUP move_to_fg_name
あるフェールオーバーグループから別のフェールオーバーグループに移動する共有のコンマ区切りリストを指定します。共有の移動先のフェールオーバーグループには、指定されたオブジェクト型のリストに SHARES を含める必要があります。
share_name
共有の識別子を指定します。
move_to_fg_name
共有の移動先のフェールオーバーグループに対する識別子を指定します。
REMOVE share_name [ , share_name , ... ] FROM ALLOWED_SHARES
複製とフェールオーバーが有効になっている共有のリストから、削除する共有のコンマ区切りリストを指定します。
注釈
プライマリフェールオーバーグループから共有を削除すると、次のリフレッシュ操作が発生したときに、セカンダリフェールオーバーグループを持つすべてのターゲットアカウントでその共有がドロップされます。
ADD org_name.target_account_name [ , org_name.target_account_name , ... ] TO ALLOWED_ACCOUNTS
プライマリフェールオーバーグループに追加するターゲットアカウントのコンマ区切りリストを指定して、ソースアカウント内にある指定されたオブジェクトのターゲットアカウントへの複製とフェールオーバーを有効にします。このリストにあるターゲットアカウントのセカンダリフェールオーバーグループは、フェールオーバーの場合にプライマリフェールオーバーグループとして機能するように昇格できます。
org_name
Snowflake組織の名前。
target_account_name
指定されたオブジェクトの複製を有効にするターゲットアカウント。
REMOVE org_name.target_account_name [ , org_name.target_account_name , ... ] FROM ALLOWED_ACCOUNTS
プライマリフェールオーバーグループから削除するターゲットアカウントのコンマ区切りリストを指定して、ソースアカウント内にある指定されたオブジェクトのターゲットアカウントへの複製を無効にします。ターゲットアカウントを削除すると、現在のアカウントからこのターゲットアカウントへのフェールオーバーが無効になります。
org_name
Snowflake組織の名前。
target_account_name
指定されたオブジェクトの複製を無効にするターゲットアカウント。
IGNORE EDITION CHECK
次のシナリオにおいて、オブジェクトのアカウントへの複製を許可します。
プライマリフェールオーバーグループがBusiness Critical(またはそれ以上)のアカウントにあり、 HIPAA および HITRUST 規制に従ってアカウントに PHI データを格納するための署名済みビジネスアソシエイト契約が整っている。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が承認された1つ以上のアカウントに対してはそのような契約がない。
このシナリオはデフォルトで禁止されています。
ターゲットアカウント
name
フェールオーバーグループの識別子を指定します。
REFRESH
ソースアカウントからターゲット(現在の)アカウントのオブジェクトを更新します。
PRIMARY
ターゲット(現在の)アカウント内のセカンダリフェールオーバーグループとその指定されたオブジェクトをプライマリに昇格します(フェールオーバーの場合)。
SUSPEND
セカンダリフェールオーバーグループのスケジュールされた更新を一時停止します(プライマリフェールオーバーグループが、
REPLICATION_SCHEDULE
プロパティを使用してスケジュールされた更新を行っている場合)。RESUME
セカンダリフェールオーバーグループのスケジュールされた更新を再開します(プライマリフェールオーバーグループが、
REPLICATION_SCHEDULE
プロパティを使用してスケジュールされた更新を行っている場合)。
使用上の注意¶
次の最小限の権限が必要です。
ALTER FAILOVER GROUP ... REFRESH を使用してセカンダリフェールオーバーグループを更新するには、アクティブなプライマリロールに、フェールオーバーグループに対する OWNERSHIP または REPLICATE 権限のいずれかが必要です。
ALTER FAILOVER GROUP ... PRIMARY を使用してセカンダリフェールオーバーグループをフェールオーバーするには、フェールオーバーグループに対する OWNERSHIP または FAILOVER 権限のいずれかがロールに必要です。
フェールオーバーグループにその他の変更を加える、この SQL コマンドを実行できるのは、グループに対して OWNERSHIP 権限のあるロールのみです。
データベースをフェールオーバーグループに追加するには、データベースに対する MONITOR 権限がアクティブなロールに必要です。
フェールオーバーグループに共有を追加するには、共有に対する OWNERSHIP 権限がアクティブなロールに必要です。
アカウント内のフェールオーバーグループと複製グループの識別子は一意にする必要があります。
データベースと共有以外のオブジェクトは、同じフェールオーバーグループに属している必要があります。
データベースは、1つのフェールオーバーグループにのみ追加できます。
インバウンド共有 (プロバイダーからの共有)は、複製グループまたはフェールオーバーグループに追加 できません。
更新が進行中の場合は、セカンダリフェールオーバーグループのプライマリへの昇格(フェールオーバーの場合)に失敗します。
複製スケジュールの更新時に更新が進行中の場合、更新は完了するまで続行され、次の更新で新しいスケジュールが使用されます。
フェールオーバー時に、すべてのセカンダリフェールオーバーグループでスケジュールされた更新が中断されます。自動更新を再開するには、各セカンダリで
ALTER FAILOVER GROUP ... RESUME
を実行する必要があります。データベースまたは共有を1つのフェールオーバーグループ(移動元グループ)から別のフェールオーバーグループ(移動先グループ)に移動するには、
両方のグループを同じ型の FAILOVER GROUP にする必要があります。
移動元グループの最後のデータベースが別のグループに移動された場合、移動元グループの
allowed_databases
プロパティは NULL に設定されます。同じ動作が共有にも当てはまります。移動先グループの
object_types
リストに移動先のオブジェクト型(databases
またはshares
)がない場合は、オブジェクトを移動する前に、移動先グループに明示的に追加する必要があります。
データベースまたは共有オブジェクトがプライマリフェールオーバーグループから削除された場合(REMOVE パラメーターまたは SET パラメーターを使用して、 ALLOWED_DATABASES リストまたは ALLOWED_SHARES リストを変更した場合)、それらのオブジェクトは、次のリフレッシュ操作が発生したときに、ターゲットアカウントでドロップされます。
ターゲットアカウントでこれらのオブジェクトのドロップを回避するには、変更されたプライマリフェールオーバーグループが次回ターゲットアカウントに複製される 前 に、セカンダリフェールオーバーグループをドロップします。
複製が有効になっている組織内のアカウントのリストを取得するには、 SHOW REPLICATION ACCOUNTS コマンドを使用します。
組織内のフェールオーバーグループのリストを取得するには、 SHOW FAILOVER GROUPS を使用します。
メタデータについて、
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
ソースアカウントから実行¶
ソースアカウントからの指定されたオブジェクトの複製とフェールオーバーが有効になっている、ターゲットアカウントのリストに myorg.myaccount3
を追加します。
ALTER FAILOVER GROUP myfg ADD myorg.myaccount3 TO ALLOWED_ACCOUNTS;
ソースアカウントで複製用のオブジェクト型リストをリセットし、データベース db1
を追加します。
ALTER FAILOVER GROUP myfg SET
OBJECT_TYPES = USERS, ROLES, WAREHOUSES, RESOURCE MONITORS, DATABASES
ALLOWED_DATABASES = db1;
データベース db2
と db3
をデータベースのリストに追加します。
ALTER FAILOVER GROUP myfg
ADD db2, db3 TO ALLOWED_DATABASES;
データベース db3
を別のフェールオーバーグループ myfg2
に移動します。
ALTER FAILOVER GROUP myfg
MOVE DATABASES db3 TO FAILOVER GROUP myfg2;
myfg
のデータベース db2
を現在データベースがない別のフェールオーバーグループ myfg3
に移動します。
最初に
databases
をobject_types
に追加します。ALTER FAILOVER GROUP myfg3 SET OBJECT_TYPES = DATABASES, SHARES;
db2
をmyfg3
に移動します。ALTER FAILOVER GROUP myfg MOVE DATABASES db2 TO FAILOVER GROUP myfg3;
複製とフェールオーバーのために、ソースアカウントのデータベースのリストからすべてのデータベースを削除します。
ALTER FAILOVER GROUP myfg
SET ALLOWED_DATABASES = NULL;
注釈
上記のステートメントを実行すると、複製されるデータベースのリストからすべてのデータベースが削除されますが、複製とフェールオーバーのために指定されたオブジェクト型のリストからは、データベースオブジェクトは削除されません。
すべてのデータベースの複製とフェールオーバーを無効にし、指定されたオブジェクト型のリストからデータベースを削除するには次を行います。
ALTER FAILOVER GROUP myfg
REMOVE databases FROM OBJECT_TYPES;
自動的にスケジュールされた更新の間隔を追加(または変更)します。
ALTER FAILOVER GROUP myfg
SET REPLICATION_SCHEDULE = '15 MINUTE';
ターゲットアカウントから実行¶
ターゲットアカウントのフェールオーバーグループ myfg
のオブジェクトを更新します。
ALTER FAILOVER GROUP myfg REFRESH;
現在のターゲットアカウントのセカンダリフェールオーバーグループをプライマリに昇格します。
ALTER FAILOVER GROUP myfg PRIMARY;
自動更新を一時停止します。
ALTER FAILOVER GROUP myfg SUSPEND;