CREATE FAILOVER GROUP¶
システム内に指定されたオブジェクトの新しい フェールオーバーグループ を作成します。
フェールオーバーグループの使用に関する詳細情報については、 複数のアカウント間にわたる複製とフェールオーバーの概要 をご参照ください。
このコマンドは次の目的に使用できます。
- ソースアカウントにフェールオーバーグループを作成して、指定されたオブジェクトを同じ組織のターゲットアカウントに複製およびフェールオーバーできるようにする。 
- 同じ組織内にあるソースアカウントのプライマリフェールオーバーグループのレプリカとして、ターゲットアカウントにセカンダリフェールオーバーグループを作成する。 
- こちらもご参照ください。
- ALTER FAILOVER GROUP、 DROP FAILOVER GROUP、 SHOW FAILOVER GROUPS 
構文¶
CREATE FAILOVER GROUP [ IF NOT EXISTS ] <name>
    OBJECT_TYPES = <object_type> [ , <object_type> , ... ]
    [ ALLOWED_DATABASES = <db_name> [ , <db_name> , ... ] ]
    [ ALLOWED_SHARES = <share_name> [ , <share_name> , ... ] ]
    [ ALLOWED_INTEGRATION_TYPES = <integration_type_name> [ , <integration_type_name> , ... ] ]
    ALLOWED_ACCOUNTS = <org_name>.<target_account_name> [ , <org_name>.<target_account_name> ,  ... ]
    [ IGNORE EDITION CHECK ]
    [ REPLICATION_SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
    [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
    [ ERROR_INTEGRATION = <integration_name> ]
セカンダリフェールオーバーグループ
CREATE FAILOVER GROUP [ IF NOT EXISTS ] <secondary_name>
    AS REPLICA OF <org_name>.<source_account_name>.<name>
パラメーター¶
- name
- フェールオーバーグループの識別子を指定します。識別子はアルファベットで始まる必要があり、識別子の文字列が二重引用符で囲まれていない限り、スペースや特殊文字を含むことはできません(例えば、 - "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。- 詳細については、 識別子の要件 をご参照ください。 
- OBJECT_TYPES = object_type [ , object_type , ... ]
- ソースアカウントからターゲットアカウントへの複製とフェールオーバーを有効にしているオブジェクトの型。 - 次のオブジェクト型がサポートされています。 - ACCOUNT PARAMETERS:
- すべてのアカウントレベルのパラメーター。これには、 アカウントパラメーター と、 アカウントに設定 できるパラメーターが含まれます。 
- DATABASES:
- データベースオブジェクトをオブジェクト型のリストに追加します。指定されたオブジェクト型のリストにデータベースオブジェクトが含まれている場合は、 - ALLOWED_DATABASESパラメーターを設定する必要があります。
- INTEGRATIONS:
- 現在、セキュリティ、 API、ストレージ、外部アクセス、特定のタイプの通知統合のみがサポートされています。詳細については、 統合複製 をご参照ください。 - 指定されたオブジェクト型のリストに統合オブジェクトが含まれている場合は、 - ALLOWED_INTEGRATION_TYPESパラメーターを設定する必要があります。
- NETWORK POLICIES:
- ソースアカウントのすべてのネットワークポリシー。 
- RESOURCE MONITORS:
- ソースアカウントのすべてのリソースモニター。 
- ROLES:
- ソースアカウントのすべてのロール。ロールの複製には、複製グループに含まれるオブジェクト型のすべての付与が暗黙的に含まれます。例えば、 - ROLESが複製される唯一のオブジェクトタイプである場合、ロールの階層(つまり、他のロールに付与されたロール)のみがターゲットアカウントに複製されます。- USERSオブジェクト型も含まれている場合は、ユーザーへのロールの付与も複製されます。
- SHARES:
- オブジェクト型のリストに共有オブジェクトを追加します。指定されたオブジェクト型のリストに共有オブジェクトが含まれている場合は、 - ALLOWED_SHARESパラメーターを設定する必要があります。
- USERS:
- ソースアカウントのすべてのユーザー。 
- WAREHOUSES:
- ソースアカウントのすべてのウェアハウス。 
 - 注釈 - ユーザーとロールを複製すると、ユーザーのプログラムのアクセストークンも自動的に複製されます。 - 複製されたオブジェクト型のリストを指定されたターゲットアカウントに変更するには、 ALTER FAILOVER GROUP を使用してオブジェクト型のリストをリセットします。 
- ALLOWED_DATABASES = db_name [ , db_name , ... ]
- ソースアカウントからターゲットアカウントへの複製とフェールオーバーを有効にしているデータベースまたはデータベースのリストを指定します。このパラメーターを設定するには、 - OBJECT_TYPESリストに- DATABASESを含める必要があります。- db_name
- データベースの識別子を指定します。 
 
- ALLOWED_SHARES = share_name [ , share_name , ... ]
- ソースアカウントからターゲットアカウントへの複製とフェールオーバーを有効にしている共有または共有のリストを指定します。このパラメーターを設定するには、 - OBJECT_TYPESリストに- SHARESを含める必要があります。- share_name
- 共有の識別子を指定します。 
 
- 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:
- 通知統合を指定します。 - 一部の型の通知統合のみが複製されます。詳細については、 統合複製 をご参照ください。 
 
- ALLOWED_ACCOUNTS = org_name.target_account_name [ , org_name.target_account_name , ... ]
- ソースアカウントからの指定されたオブジェクトの複製とフェールオーバーが有効になっている、ターゲットアカウントまたはターゲットアカウントのリストを指定します。このリストにあるターゲットアカウントのセカンダリフェールオーバーグループは、フェールオーバーの場合にプライマリフェールオーバーグループとして機能するように昇格できます。 - org_name
- Snowflake組織の名前。 
- target_account_name
- 指定されたオブジェクトの複製を有効にするターゲットアカウント。 
 
- IGNORE EDITION CHECK
- 次のシナリオにおいて、オブジェクトのアカウントへの複製を許可します。 - プライマリフェールオーバーグループがBusiness Critical(またはそれ以上)のアカウントにあり、 HIPAA および HITRUST 規制に従ってアカウントに PHI データを格納するための署名済みビジネスアソシエイト契約が整っている。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が承認された1つ以上のアカウントに対してはそのような契約がない。 - このシナリオはデフォルトで禁止されています。 
- 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値が大きい場合、更新操作は実行されません。
 
 
- TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
- タグ の名前とタグ文字列の値を指定します。 - タグ値は常に文字列であり、タグ値の最大文字数は256です。 - ステートメントでのタグの指定に関する情報については、 オブジェクトのタグクォータ をご参照ください。 
- ERROR_INTEGRATION = integration_name
- フェールオーバーグループでリフレッシュエラーが発生した場合に通知を送信する際に使用する通知統合の名前を指定します。詳細については、 複製グループとフェールオーバーグループのエラー通知 をご参照ください。 
セカンダリフェールオーバーグループのパラメーター
- secondary_name
- セカンダリフェールオーバーグループの識別子を指定します。識別子はアルファベットで始まる必要があり、識別子の文字列が二重引用符で囲まれていない限り、スペースや特殊文字を含むことはできません(例えば、 - "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。- セカンダリフェールオーバーグループ( - secondary_name)とプライマリフェールオーバーグループ(- name)の識別子は同一である可能性がありますが、同一である必要はありません。
- AS REPLICA OF org_name.source_account_name.name
- セカンダリフェールオーバーグループを作成するプライマリフェールオーバーグループの識別子を指定します。 - org_name
- Snowflake組織の名前。 
- source_account_name
- 指定されたオブジェクトの複製とフェールオーバーを有効にするソースアカウント。 
- name
- ソースアカウントのプライマリフェールオーバーグループの識別子。 
 
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
| 権限 | オブジェクト | 注意 | 
|---|---|---|
| CREATE FAILOVER GROUP | アカウント | Only the ACCOUNTADMIN role has this privilege by default. The privilege can be granted to additional roles as needed. | 
| MONITOR | データベース | データベースをフェールオーバーグループに追加するには、データベースに対する MONITOR 権限がアクティブなロールに必要です。 | 
| OWNERSHIP | 共有 | フェールオーバーグループに共有を追加するには、共有に対する OWNERSHIP 権限がアクティブなロールに必要です。 | 
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
- アカウント内のフェールオーバーグループと複製グループの識別子は一意にする必要があります。 
- データベースと共有以外のオブジェクトは、同じフェールオーバーグループに属している必要があります。 
- データベースは、1つのフェールオーバーグループにのみ追加できます。 
- インバウンド共有 (プロバイダーからの共有)は、複製グループまたはフェールオーバーグループに追加 できません。 
- 複製が有効になっている組織内のアカウントのセットを取得するには、 SHOW REPLICATION ACCOUNTS を使用します。 
- 組織内のフェールオーバーグループのリストを取得するには、 SHOW FAILOVER GROUPS を使用します。 
- 複製中に 削除したくない ターゲットアカウントにアカウントオブジェクト(ユーザーやロールなど)がある場合は、 SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME システム関数を使用して、複製以外の方法で作成されたオブジェクトにグローバル識別子を適用します。詳細については、フェールオーバーグループを作成する前に、 ターゲットアカウントのスクリプトによって作成されたオブジェクトにグローバル IDs を適用する をご参照ください。 
- 自動的に スケジュールされたリフレッシュ操作 は、グループに対する OWNERSHIP 権限を持つロールを使用して実行されます。権限不足のためにスケジュールされたリフレッシュ操作が失敗した場合は、そのグループのOWNERSHIP権限を持つロールに必要な権限を付与します。 
- タグを使用して複製グループまたはフェールオーバーグループを作成した場合、またはタグをセットして複製グループまたはフェールオーバーグループを変更した場合、 タグ継承 は、複製グループまたはフェールオーバーグループで指定したオブジェクトには適用されません。 - タグ継承は、データベース、スキーマ、テーブルなど、 親子関係 があるオブジェクトにのみ適用されます。複製グループやフェールオーバー・グループの子オブジェクトはありません。 
- これらのオブジェクトは読み取り専用であるため、セカンダリ・複製・グループまたはフェールオーバー・グループにタグを設定したり、タグを変更したりすることはできません。 
- セカンダリ複製グループまたはフェールオーバー・グループをリフレッシュすると、プライマリ・グループに設定されているすべてのタグがセカンダリ・グループに設定されます。 
- メタデータについて、 - 注意 - Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。 
- アカウントを新たにBusiness Critical Edition(またはそれ以上)にアップグレードした場合、フェールオーバー機能が利用可能になるまで最大12時間かかる場合があります。 
例¶
フェールオーバーグループを作成して、データベースの複製とフェールオーバーを有効にする¶
ソースアカウントでの実行
myfg という名前のフェールオーバーグループを作成して、ソースアカウントからターゲットアカウント myaccount2 へのデータベース db1 の複製とフェールオーバーを有効にします。10分ごとにデータベースをリフレッシュするように myfg の複製スケジュールを設定します。
CREATE FAILOVER GROUP myfg
    OBJECT_TYPES = DATABASES
    ALLOWED_DATABASES = db1
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';
ターゲットアカウントでの実行
ソースアカウントのフェールオーバーグループ myfg のレプリカとして、ターゲットアカウントにフェールオーバーグループを作成します。
CREATE FAILOVER GROUP myfg
    AS REPLICA OF myorg.myaccount1.myfg;
複数のデータベースの複製とフェールオーバーを可能にするフェールオーバーグループを作成する¶
ソースアカウントでの実行
ソースアカウントに myfg という名前のフェールオーバーグループを作成して、ソースから myaccount2 アカウントへのデータベース db1、 db2、 db2 の複製とフェールオーバーを有効にします。10分ごとにデータベースをリフレッシュするように myfg の複製スケジュールを設定します。
CREATE FAILOVER GROUP myfg
    OBJECT_TYPES = DATABASES
    ALLOWED_DATABASES = db1, db2, db3
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';
ターゲットアカウントでの実行
ソースアカウントのフェールオーバーグループ myfg のレプリカとして、ターゲットアカウントにフェールオーバーグループを作成します。
CREATE FAILOVER GROUP myfg
    AS REPLICA OF myorg.myaccount1.myfg;
アカウントオブジェクトの複製とフェールオーバーを有効にするフェールオーバーグループを作成する¶
ソースアカウントでの実行
ソースアカウントから myaccount2 アカウントへのユーザー、ロール、ウェアハウス、リソースモニター、ストレージ統合、および通知統合の複製とフェールオーバーを有効にするために、ソースアカウントに myfg という名前のフェールオーバーグループを作成します。
CREATE FAILOVER GROUP myfg
    OBJECT_TYPES = USERS, ROLES, WAREHOUSES, RESOURCE MONITORS, INTEGRATIONS
    ALLOWED_INTEGRATION_TYPES = STORAGE INTEGRATIONS, NOTIFICATION INTEGRATIONS
    ALLOWED_ACCOUNTS = myorg.myaccount2
    REPLICATION_SCHEDULE = '10 MINUTE';
ターゲットアカウントでの実行
ソースアカウントのフェールオーバーグループ myfg のレプリカとして、ターゲットアカウントにフェールオーバーグループを作成します。
CREATE FAILOVER GROUP myfg
    AS REPLICA OF myorg.myaccount1.myfg;
フェールオーバーグループを作成して、セキュリティ統合とネットワークポリシーの複製とフェールオーバーを有効にする¶
セキュリティ統合とネットワークポリシーの複製に関する詳細と例については、 複数のアカウントにわたるセキュリティ統合とネットワークポリシーの複製 をご参照ください。