CREATE SNAPSHOT SET

テーブル、スキーマ、またはデータベースに設定する:doc:スナップショット </user-guide/snapshots> を作成します。スナップショットセットが存在すると、ALTER SNAPSHOT SET コマンドを実行していつでもスナップショットセットに新しいバックアップ(スナップショット)を追加できます。スナップショットポリシー でスケジュールを定義し、スナップショットセットにそのスナップショットポリシーを関連付けた場合、Snowflakeは、スナップショットセットにスナップショットも自動的に追加します。

各スナップショットセットは、特定のテーブル、特定のスキーマ内のオブジェクト、または特定のデータベース内のオブジェクトのバックアップセットを表します。そうすることで、非常に細かい、または包括的なバックアップにすることができます。また、各テーブル、スキーマ、またはデータベースのバックアップには、それぞれ独立したスケジュールを設定できます。

スキーマスナップショットとデータベーススナップショットに含まれるオブジェクトの種類については、スナップショットオブジェクト をご参照ください。

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

ALTER SNAPSHOT SETDROP SNAPSHOT SETSHOW SNAPSHOT SETSCREATE SNAPSHOT POLICY

構文

CREATE [OR REPLACE] SNAPSHOT SET [IF NOT EXISTS] <name>
   FOR [DYNAMIC] TABLE <table_name>
   [ WITH SNAPSHOT POLICY <policy_name> ]
   [ COMMENT = <string> ]
Copy
CREATE [OR REPLACE] SNAPSHOT SET [IF NOT EXISTS] <name>
  FOR SCHEMA <schema_name>
   [ WITH SNAPSHOT POLICY <policy_name> ]
   [ COMMENT = <string> ]
Copy
CREATE [OR REPLACE] SNAPSHOT SET [IF NOT EXISTS] <name>
  FOR DATABASE <database_name>
   [ WITH SNAPSHOT POLICY <policy_name> ]
   [ COMMENT = <string> ]
Copy

必須パラメーター

name

スナップショットセットの識別子。アカウントに対して一意である必要があります。

また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例: "My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。

詳細については、 識別子の要件 をご参照ください。

FOR [DYNAMIC] TABLE table_name

テーブルまたは動的テーブルの名前を指定します。その場合、スナップショットセットは単一テーブルのバックアップを表します。

FOR SCHEMA schema_name

スキーマの名前を指定します。その場合、スナップショットセットは特定のスキーマにあるすべてのテーブルとその他のオブジェクトのバックアップを表します。

FOR DATABASE database_name

データベースの名前を指定します。その場合、スナップショットセットは特定のデータベース内のすべてのテーブル、スキーマ、およびその他のオブジェクトのバックアップを表します。

オプションのパラメーター

OR REPLACE

この名前のスナップショットセットが既に存在する場合は、それを削除して新しいものを作成します。保持ロック、法的保持、および有効期限に関するスナップショットポリシールールのためにスナップショットセットを削除できない場合、コマンドは失敗します。この句は IF NOT EXISTS と相互に排他的です。

IF NOT EXISTS

同じ名前のスナップショットセットがない場合にのみ、スナップショットセットを作成します。スナップショットセットが既に存在する場合、コマンドは影響がなくても成功メッセージを返します。この句は OR REPLACE と相互に排他的です。

WITH SNAPSHOT POLICY policy_name

セットのスナップショットポリシーの名前を指定します。スナップショットポリシーは、バックアップのスケジュール、各スナップショットの保持期間、保持期間の終了前にスナップショットが削除されるのを防ぐかどうかなど、スナップショットセットのプロパティを定義します。

CREATE SNAPSHOT SET コマンドからこのパラメーターを省略した場合、後から ALTER SNAPSHOT SET コマンドを使用してポリシーを適用できます。

重要

保持ロックを持つスナップショットポリシーをスナップショットセットに適用すると 元に戻せません。規制コンプライアンスに必要な強力な保証により、スナップショットセットに保持ロックを設定すると、ロックを取り消すことはできません。Snowflakeサポートもそのような保持ロックを取り消すことはできません。削除できないスナップショットセットとそれを含むスキーマとデータベースの予期しないストレージ料金を回避するために、長い有効期間のスナップショットセットに保持ロックを設定する前に慎重に計画してください。

Snowflake組織が削除された場合、その組織はSnowflakeの顧客ではなくなります。この場合、Snowflakeは保持ロックを持つスナップショットを含むすべてのスナップショットを削除します。Snowflake組織を削除するには、Snowflakeサポートの関与が必要です。これは、管理者が誤って実行できるものではありません。

COMMENT = 'string_literal'

スナップショットセットのコメントを指定します。

デフォルト: 値なし

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

メモ

CREATE SNAPSHOT SET

スナップショットセットの作成に使用するロールには、スナップショットセットが作成されるスキーマに対してこの権限が付与されている必要があります。スナップショットセットを実際に作成するには、スナップショットセットのサブジェクトであるオブジェクトに対する適切な権限も必要です。テーブルスナップショットの場合は SELECT 、スキーマスナップショットまたはデータベーススナップショットの場合は USAGE です。

SELECT

テーブルのスナップショットセットの作成に使用されるロールには、テーブルに対する SELECT 権限が必要です。

USAGE

スキーマまたはデータベースのスナップショットセットの作成に使用するロールには、そのスキーマまたはデータベースに対する USAGE 権限が必要です。

APPLY SNAPSHOT RETENTION LOCK

スナップショットセットに対して保持ロックを持つスナップショットポリシーを適用するために使用するロールには、アカウントに対するこの権限が必要です。

これらの権限は、セカンダリロールではなく、現在アクティブなプライマリロールに対して必要です。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

メタデータについて:

注意

Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。

重要

スナップショットポリシーに保持ロックが適用されており、スナップショットセットに有効期限が切れていないスナップショットが存在する場合は、スナップショットセットを削除できません。その場合は、セット内のすべてのスナップショットの有効期限が切れるのを待つ必要があります。この制限は、ACCOUNTADMINなどの権限ロールにも適用され、Snowflakeをサポートします。そのため、スナップショットポリシーで保持ロックの指定や長期の有効期限を指定する場合は注意してください。

テーブル t1 に対して t1_snapshots という名前のスナップショットセットを作成します:

CREATE SNAPSHOT SET t1_snapshots
  FOR TABLE t1;
Copy

テーブル t1 に対して、スナップショットポリシーを持つ t1_snapshots スナップショットセットを作成します:

CREATE SNAPSHOT SET t1_snapshots
  FOR TABLE t1
  WITH SNAPSHOT POLICY hour_snapshot_policy;
Copy

スキーマ s1 に対して、スナップショットポリシーを持つ s1_snapshots スナップショットセットを作成します:

CREATE SNAPSHOT SET s1_snapshots
  FOR SCHEMA s1
  WITH SNAPSHOT POLICY hour_snapshot_policy;
Copy

データベース d1 に対して、スナップショットポリシーを持つ d1_snapshots スナップショットセットを作成します :

CREATE SNAPSHOT SET d1_snapshots
  FOR DATABASE d1
  WITH SNAPSHOT POLICY hour_snapshot_policy;
Copy