CREATE SNAPSHOT POLICY¶
スナップショット ポリシーを作成します。ポリシーを1つ以上のスナップショットセットに関連付けます。ポリシーの設定は、ポリシーを使用する各スナップショットセットのスケジュールと有効期限を定義します。
スケジュールでは、Snowflakeが自動的にバックアップを作成し、結果のスナップショットをポリシーが管理するスナップショットセットに追加する頻度を決定します。有効期限は、関連付けされたスナップショットセットからSnowflakeが自動的にスナップショットを削除するまでの各スナップショットの保持期間を決定します。
Tip
スナップショットポリシーは、スナップショットセットのオプションです。スケジュールされたバックアップ、保持ロック、または有効期限が不要な場合は、スナップショットポリシーなしでスナップショットセットを作成できます。ALTER SNAPSHOT SET を使用して、後で既存のスナップショットセットにスナップショットポリシーを適用することも、スナップショットポリシーで指定されたスケジュールされたバックアップを一時停止して再開することもできます。
- こちらもご参照ください。
ALTER SNAPSHOT POLICY、DROP SNAPSHOT POLICY、SHOW SNAPSHOT POLICIES、CREATE SNAPSHOT SET ALTER SNAPSHOT SET
構文¶
CREATE [OR REPLACE] SNAPSHOT POLICY [IF NOT EXISTS] <name>
[ WITH RETENTION LOCK ]
[ SCHEDULE = '{ <num> MINUTE | USING CRON <expr> <time_zone> }' ]
[ EXPIRE_AFTER_DAYS = <days_integer> ]
[ COMMENT = <string> ];
必須パラメーター¶
name
スナップショットポリシーの識別子。アカウントに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object"
)。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
オプションのパラメーター¶
OR REPLACE
この名前のスナップショットポリシーが既に存在する場合は、削除して新しいものを作成します。この句は
IF NOT EXISTS
と相互に排他的です。IF NOT EXISTS
同じ名前のスナップショットポリシーがない場合にのみ、スナップショットポリシーを作成します。スナップショットポリシーが既に存在する場合、コマンドは影響がなくても成功メッセージを返します。この句は
OR REPLACE
と相互に排他的です。WITH RETENTION LOCK
スナップショットの必須保持期間を指定します。保持ロックを持つスナップショットは、権限を持つユーザーであっても削除できません。詳細については、保持ロックを持つスナップショットの制限 をご参照ください。
注釈
APPLY SNAPSHOT RETENTION LOCK 権限を持つユーザーのみが保持ロック付きのスナップショットポリシーを作成できます。
重要
保持ロックを持つスナップショットポリシーをスナップショットセットに適用すると 元に戻せません。規制コンプライアンスに必要な強力な保証により、スナップショットセットに保持ロックを設定すると、ロックを取り消すことはできません。Snowflakeサポートもそのような保持ロックを取り消すことはできません。削除できないスナップショットセットとそれを含むスキーマとデータベースの予期しないストレージ料金を回避するために、長い有効期間のスナップショットセットに保持ロックを設定する前に慎重に計画してください。
Snowflake組織が削除された場合、その組織はSnowflakeカスタマーではなくなります。この場合、Snowflakeは保持ロックを持つスナップショットを含むすべてのスナップショットを削除します。Snowflake組織を削除するには、Snowflakeサポートの関与が必要です。これは、管理者が誤って実行できるものではありません。
SCHEDULE = '{ num MINUTE | USING CRON expr time_zone }'
オブジェクトのスナップショットを作成するためのスケジュールを指定します。
注釈
スナップショットの最短スケジュールは60分である必要があります。
各スナップショットポリシーには、スケジュールと有効期限プロパティのどちらかまたは両方が必要です。詳細については、 スナップショットポリシー をご参照ください。
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月(つまり、1年の中で4番目の月から始まり、3か月ごと)にスケジュールされます。その後も同じスケジュールが維持されます。つまり、スナップショットは1月(10月の実行から3か月後)に実行されるようにスケジュールされては:emph:いません
。
注釈
cron式は現在、指定されたタイムゾーンに対してのみ評価します。アカウントの TIMEZONE パラメーター値を変更(またはユーザーレベルまたはセッションレベルで値を設定)しても、スナップショットのタイムゾーンは変更 されません。
cron式は、スナップショットのすべての 有効な 実行時間を定義します。Snowflakeはこのスケジュールに基づいてスナップショットの作成を試みますが、次の有効な実行時間が始まる前に前の実行が完了していない場合、有効な実行時間はスキップされます。
cron式に特定の月の日と曜日の両方が含まれている場合、スナップショットは月の日または曜日の いずれか を満たす日にスケジュールされます。たとえば、:samp:`SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC'`は、月の10日から20日、およびそれらの日付以外の火曜日または木曜日の0AM(真夜中)にスナップショットをスケジュールします。
num MINUTE
スナップショット間の待機時間の間隔(分単位)を指定します。正の整数のみを受け入れます。
num M
構文もサポートしています。あいまいさを避けるために、次の状況では 基本間隔時間 が設定されます。
オブジェクトの作成時(CREATE SNAPSHOTSET...WITHSNAPSHOTPOLICYを使用)。
異なる間隔が設定されている場合( ALTERSNAPSHOT SET ... APPLY SNAPSHOT POLICYまたはALTERSNAPSHOTPOLICYSETSCHEDULE を使用)。
基本間隔時間は、現在のクロックタイムから間隔カウンターを開始します。たとえば、 INTERVAL の
10
値が設定され、スケジュールされたスナップショット9:03 AM で有効になっている場合、次のスナップショットは9:13 AM、9:23 AM というように作成されます。絶対精度を確保するために最善を尽くしますが、保証されるのは、設定間隔の:emph:` 前に` スナップショットが実行されないようにすることのみです(つまり、現在の例では、スナップショットは最初に9:14AM に実行されることはあっても、9:12AMに実行されることは決してありません)。
EXPIRE_AFTER_DAYS = days_integer
スナップショットの有効期限が切れるまでの日数を指定します。Snowflakeは、期限切れのスナップショットを自動的に削除します。このパラメーターが指定されない場合、スナップショットはスナップショットセットから手動で削除されるまで、スナップショットセットに残ります。
最小値:
1
。最大値:
SCHEDULE
句を指定しない場合は、``3653``(約10年)。SCHEDULE
句を指定した場合、最大値はスナップショットの作成頻度に応じて異なります。詳細については、 パブリックプレビュー期間中のスナップショットの制限 をご参照ください。
注釈
各スナップショットポリシーには、スケジュールと有効期限プロパティのどちらかまたは両方が必要です。詳細については、 スナップショットポリシー をご参照ください。
COMMENT = 'string_literal'
スナップショットポリシーのコメントを指定します。
デフォルト: 値なし
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
メモ |
---|---|
CREATE SNAPSHOT POLICY |
スナップショットポリシーの作成に使用されるロールは、ポリシーが作成されるスキーマに対してこの権限を持っている必要があります。 |
APPLY SNAPSHOT RETENTION LOCK |
アカウントでこの権限を持つユーザーのみが、保持ロックを持つスナップショットポリシーを作成できます。 |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
Time TravelおよびFailsafe 保持はスナップショットには適用されません。スナップショットは、期限切れになると復元できません。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
重要
スナップショットポリシーに保持ロックが適用されており、スナップショットセットに有効期限が切れていないスナップショットが存在する場合は、スナップショットセットを削除できません。その場合は、セット内のすべてのスナップショットの有効期限が切れるのを待つ必要があります。この制限は、ACCOUNTADMINなどの権限ロールにも適用され、Snowflakeをサポートします。そのため、スナップショットポリシーで保持ロックの指定や長期の有効期限を指定する場合は注意してください。
例¶
1時間ごとにスナップショットを作成し、90日後に期限切れになるスナップショットポリシーを作成します。
CREATE SNAPSHOT POLICY hourly_snapshot_policy
SCHEDULE = '60 MINUTE'
EXPIRE_AFTER_DAYS = 90
COMMENT = 'Hourly snapshots that expire after 90 days';
24時間ごとにスナップショットを作成し、90日後に期限切れになる保持ロックを持つスナップショットポリシーを作成します。このスナップショットポリシーを使用して作成されたスナップショットは、有効期限が切れる前に変更または削除できません。
CREATE SNAPSHOT POLICY daily_snapshot_policy_with_lock
WITH RETENTION LOCK
SCHEDULE = '1440 MINUTE'
EXPIRE_AFTER_DAYS = 90
COMMENT = 'regulatory backups expire after 90 days with retention lock';
スケジュールにcron式を使用してスナップショットポリシーを作成します。次のステートメントは、毎週火曜日と金曜日の 11PM にスナップショットを作成するポリシーを作成します。
CREATE SNAPSHOT POLICY twice_weekly_snapshot_policy
SCHEDULE = 'USING CRON 0 23 * * 2,5 UTC'
EXPIRE_AFTER_DAYS = 7
COMMENT = 'Twice-weekly snapshots that expire after 7 days';