CREATE REPLICATION GROUP¶
システム内に指定されたオブジェクトの新しい複製グループを作成します。
詳細については、 複数のアカウント間にわたる複製とフェールオーバーの概要 をご参照ください。
このコマンドは次の目的に使用できます。
ソースアカウントに複製グループを作成して、指定されたオブジェクトを同じ組織のターゲットアカウントに複製できるようにする。
同じ組織内にあるソースアカウントのプライマリ複製グループのレプリカとして、ターゲットアカウントにセカンダリ複製グループを作成する。
構文¶
CREATE REPLICATION 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> }' ]
セカンダリ複製グループ
CREATE REPLICATION 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:
Business Critical Edition(またはそれ以上)が必要です。
すべてのアカウントレベルのパラメーター。これには、 アカウントパラメーター と、 アカウントに設定 できるパラメーターが含まれます。
- DATABASES:
データベースオブジェクトをオブジェクト型のリストに追加します。指定されたオブジェクト型のリストにデータベースオブジェクトが含まれている場合は、
ALLOWED_DATABASES
パラメーターを設定する必要があります。- INTEGRATIONS:
Business Critical Edition(またはそれ以上)が必要です。
現在、セキュリティ、 API、ストレージ [1]、外部アクセス [2]、および特定の型の通知統合のみがサポートされています。詳細については、 統合複製 をご参照ください。
指定されたオブジェクト型のリストに統合オブジェクトが含まれている場合は、
ALLOWED_INTEGRATION_TYPES
パラメーターを設定する必要があります。- NETWORK POLICIES:
Business Critical Edition(またはそれ以上)が必要です。
ソースアカウントのすべてのネットワークポリシー。
- RESOURCE MONITORS:
Business Critical Edition(またはそれ以上)が必要です。
ソースアカウントのすべてのリソースモニター。
- ROLES:
Business Critical Edition(またはそれ以上)が必要です。
ソースアカウントのすべてのロール。ロールの複製には、複製グループに含まれるオブジェクト型のすべての付与が暗黙的に含まれます。たとえば、
ROLES
が複製される唯一のオブジェクト型である場合は、ロールの階層(つまり、他のロールに付与されたロール)のみがターゲットアカウントに複製されます。USERS
オブジェクト型も含まれている場合は、ユーザーへのロールの付与も複製されます。- SHARES:
オブジェクト型のリストに共有オブジェクトを追加します。指定されたオブジェクト型のリストに共有オブジェクトが含まれている場合は、
ALLOWED_SHARES
パラメーターを設定する必要があります。- USERS:
Business Critical Edition(またはそれ以上)が必要です。
ソースアカウントのすべてのユーザー。
- WAREHOUSES:
Business Critical Edition(またはそれ以上)が必要です。
ソースアカウントのすべてのウェアハウス。
複製されたオブジェクト型のリストを指定されたターゲットアカウントに変更するには、 ALTER REPLICATION GROUP を使用してオブジェクト型のリストをリセットします。
ALLOWED_DATABASES = db_name [ , db_name , ... ]
ソースアカウントからターゲットアカウントへの複製を有効にしているデータベースまたはデータベースのリストを指定します。このパラメーターを設定するには、
OBJECT_TYPES
リストにDATABASES
を含める必要があります。ALLOWED_SHARES = share_name [ , share_name , ... ]
ソースアカウントからターゲットアカウントへの複製を有効にしている共有または共有のリストを指定します。このパラメーターを設定するには、
OBJECT_TYPES
リストにSHARES
を含める必要があります。ALLOWED_INTEGRATION_TYPES = integration_type_name [ , integration_type_name , ... ]
Business Critical Edition(またはそれ以上)が必要です。
ソースアカウントからターゲットアカウントへの複製を有効にしている統合の型。
このプロパティには、このパラメーターを設定するために、
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_name1 [ , org_name.target_account_name2 , ... ]
ソースアカウントからの指定されたオブジェクトの複製が有効になっている、ターゲットアカウントまたはターゲットアカウントのリストを指定します。
org_name
Snowflake組織の名前。
target_account_name
指定されたオブジェクトの複製を有効にするターゲットアカウント。
IGNORE EDITION CHECK
次のいずれかのシナリオで、下位エディションのアカウントにオブジェクトを複製できるようにします。
データベースのみおよび/または共有オブジェクトがあるプライマリ複製グループはBusiness Critical(またはそれ以上)のアカウントにあるが、複製を承認された1つ以上のアカウントは下位エディションにある。Business Critical Editionは、非常に機密性の高いデータを有するSnowflakeアカウントを対象としています。
任意の オブジェクトタイプ があるプライマリ複製グループがBusiness Critical(またはそれ以上)のアカウントにあり、 HIPAA および HITRUST 規制に従ってアカウントに PHI データを格納するための署名済みビジネスアソシエイト契約が整っている。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が承認された1つ以上のアカウントに対してはそのような契約がない。
Business Critical(またはそれ以上)のアカウントのアカウント管理者が機密データを下位エディションのアカウントに誤って複製することを防ぐため、両方のシナリオともデフォルトで禁止されています。
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
値が大きい場合、更新操作は実行されません。
セカンダリ複製グループパラメーター
secondary_name
セカンダリ複製グループの識別子を指定します。識別子はアルファベットで始まる必要があり、識別子の文字列が二重引用符で囲まれている場合(例:
"My object"
)を除き、スペースや特殊文字を含めることはできません二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。セカンダリ複製グループ(
secondary_name
)とプライマリ複製グループ(name
)の識別子は同一である可能性がありますが、同一である必要はありません。AS REPLICA OF org_name.source_account_name.name
セカンダリ複製グループを作成するプライマリ複製グループの識別子を指定します。
org_name
Snowflake組織の名前。
source_account_name
指定されたオブジェクトの複製を有効にするソースアカウント。
name
ソースアカウントのプライマリ複製グループの識別子。
アクセス制御の要件¶
この SQL コマンドの実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
メモ |
---|---|---|
CREATE REPLICATION 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 REPLICATION GROUPS を使用します。
allowed_accounts
列には、ソースアカウントからのオブジェクト複製が有効になっているすべてのターゲットアカウントがリストされます。ターゲットアカウントに、複製中に ドロップしたくない アカウントオブジェクト(例: ユーザーまたはロール)がある場合は、 SYSTEM$LINK_ACCOUNT_OBJECTS_BY_NAME システム関数を使用して、複製以外の方法で作成されたオブジェクトにグローバル識別子を適用します。詳細については、複製グループを作成する前に、 ターゲットアカウントのスクリプトによって作成されたオブジェクトにグローバル IDs を適用する をご参照ください。
メタデータについて、
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
ソースアカウントでの実行¶
ソースアカウントに myrg
という名前の複製グループを作成し、データベース db1
の複製を有効にし、ソースアカウントから myaccount2
アカウントに s1
を共有して、10分ごとに自動で更新します。
CREATE REPLICATION GROUP myrg
OBJECT_TYPES = DATABASES, SHARES
ALLOWED_DATABASES = db1
ALLOWED_SHARES = s1
ALLOWED_ACCOUNTS = myorg.myaccount2
REPLICATION_SCHEDULE = '10 MINUTE';
ターゲットアカウントでの実行¶
ソースアカウントの複製グループ myrg
のレプリカとして、ターゲットアカウントに複製グループを作成します。
CREATE REPLICATION GROUP myrg
AS REPLICA OF myorg.myaccount1.myrg;