CREATE SNAPSHOT POLICY

Crée une politique des instantanés. Vous associez la politique à un ou plusieurs ensembles d’instantanés. Les paramètres de la politique définissent la planification et les périodes d’expiration pour chaque ensemble d’instantanés qui utilise la politique.

La planification détermine la fréquence à laquelle Snowflake effectue automatiquement une sauvegarde et ajoute l’instantané résultant à l’ensemble d’instantanés régis par la politique. La période d’expiration détermine la durée de conservation de chaque instantané avant que Snowflake ne le supprime automatiquement de l’ensemble d’instantanés associé.

Astuce

La politique d’instantanés est facultative pour un ensemble d’instantanés. Si vous n’avez pas besoin de sauvegardes planifiées, d’un verrou de conservation ou d’une période d’expiration, vous pouvez créer un ensemble d’instantanés sans politique d’instantanés. Vous pouvez également utiliser ALTER SNAPSHOT SET pour appliquer ultérieurement une politique d’instantanés à un ensemble d’instantanés existant, ou pour suspendre et reprendre les sauvegardes planifiées spécifiées dans la politique d’instantanés.

Voir aussi :

ALTER SNAPSHOT POLICY, DROP SNAPSHOT POLICY, SHOW SNAPSHOT POLICIES, CREATE SNAPSHOT SET ALTER SNAPSHOT SET

Syntaxe

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> ];
Copy

Paramètres requis

name

Identificateur de la politique d’instantanés ; doit être unique pour votre compte.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (par exemple, "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus d’informations, voir Exigences relatives à l’identificateur.

Paramètres facultatifs

OR REPLACE

Si une politique d’instantanés portant ce nom existe déjà, supprimez-la et créez-en une nouvelle. Cette clause s’exclut mutuellement avec IF NOT EXISTS.

IF NOT EXISTS

Crée la politique d’instantanés uniquement s’il n’existe pas de politique d’instantanés portant le même nom. Si une politique d’instantanés existe déjà, la commande renvoie un message de réussite, même si cela n’a aucun effet. Cette clause s’exclut mutuellement avec OR REPLACE.

WITH RETENTION LOCK

Spécifie la période de conservation obligatoire pour les instantanés. Les instantanés avec verrous de conservation ne peuvent pas être supprimés, même par un utilisateur ayant les privilèges adéquats. Pour plus d’informations, voir restrictions pour un instantané avec un verrou de conservation.

Note

Seul un utilisateur avec le privilège APPLY SNAPSHOT RETENTION LOCK peut créer une politique d’instantanés avec un verrou de conservation.

Important

L’application d’une politique d’instantanés avec un verrou de conservation à un ensemble d’instantanés est irréversible. En raison des garanties strictes nécessaires à la conformité réglementaire, après avoir placé un verrou de conservation sur un ensemble d’instantanés, vous ne pouvez plus révoquer ce verrou. Le support Snowflake ne peut pas non plus révoquer un tel verrou de conservation. Réfléchissez bien avant de définir un verrou de conservation sur un ensemble d’instantanés avec une longue période d’expiration, afin d’éviter des frais de stockage inattendus pour les ensembles d’instantanés non supprimables, ainsi que pour les schémas et les bases de données qui les contiennent.

Si une organisation Snowflake est supprimée, l’organisation n’est plus un client Snowflake. Dans ce cas, Snowflake supprime tous les instantanés, y compris ceux avec des verrous de conservation. La suppression d’une organisation Snowflake nécessite l’intervention du support Snowflake. Il ne s’agit pas d’une opération qu’un administrateur peut effectuer par accident.

SCHEDULE = '{ num MINUTE | USING CRON expr time_zone }'

Spécifie la planification de création des instantanés d’un objet.

Note

La planification minimale des instantanés doit être de 60 minutes.

Chaque politique d’instantanés doit disposer d’une ou des deux propriétés de planification et de période d’expiration. Pour plus d’informations, voir Politique des instantanés.

  • USING CRON expr time_zone

    Spécifie une expression cron et un fuseau horaire pour le moment où un instantané d’un objet est créé. Prend en charge un sous-ensemble de la syntaxe standard de l’utilitaire cron.

    Pour obtenir une liste des fuseaux horaires, voir la liste des fuseaux horaires de la base de données tz (dans Wikipédia).

    L’expression cron comprend les champs suivants :

    # __________ 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)
    # | | | | |
    # | | | | |
      * * * * *
    

    Les caractères spéciaux suivants sont acceptés :

    *

    Caractère générique. Spécifie toute occurrence du champ.

    L

    Signifie « dernier ». Lorsqu’il est utilisé dans le champ du jour de la semaine, il vous permet de spécifier des constructions telles que « le dernier vendredi » (« 5L ») d’un mois donné. Dans le champ du mois, il spécifie le dernier jour du mois.

    /n

    Indique l’instance n d’une unité de temps donnée. Chaque quanta de temps est calculé indépendamment. Par exemple, si 4/3 est spécifié dans le champ du mois, la tâche est planifiée pour avril, juillet et octobre, (c’est-à-dire tous les 3 mois, à partir du 4e mois de l’année). Le même calendrier est maintenu les années suivantes. En d’autres termes, l’exécution de l’instantané n’est pas prévue en janvier (3 mois après l’exécution d’octobre).

    Note

    • L’expression cron est actuellement évaluée par rapport au fuseau horaire spécifié. La modification de la valeur du paramètre TIMEZONE pour le compte (ou la définition de la valeur au niveau de l’utilisateur ou de la session) ne modifie pas le fuseau horaire de l’instantané.

    • L’expression cron définit toutes les heures d’exécution valides de l’instantané. Snowflake tente de créer un instantané en fonction de cette planification ; toutefois, tout moment d’exécution valide est ignoré si une exécution précédente n’a pas été terminée avant le début du moment d’exécution valide suivant.

    • Lorsqu’un jour de mois et un jour de semaine spécifiques sont inclus dans l’expression cron, l’instantané est planifié les jours satisfaisant le jour du mois ou le jour de la semaine. Par exemple, SCHEDULE = 'USING CRON 0 0 10-20 * TUE,THU UTC' planifie un instantané à 0AM (minuit) entre le 10e et le 20e jour du mois ainsi que le mardi ou le jeudi en dehors de ces dates.

  • num MINUTE

    Spécifie un intervalle (en minutes) de temps d’attente entre les instantanés. Accepte uniquement les entiers positifs.

    Prend également en charge la syntaxe num M.

    Pour éviter toute ambiguïté, un intervalle de base est défini dans les circonstances suivantes :

    • Lorsque l’objet est créé (à l’aide de CREATE SNAPSHOT SET … WITH SNAPSHOT POLICY).

    • Lorsqu’un intervalle différent est défini (avec ALTER SNAPSHOT SET … APPLY SNAPSHOT POLICY or ALTER SNAPSHOT POLICY … SET SCHEDULE).

    L’intervalle de base démarre le compteur d’intervalle à partir de l’heure actuelle. Par exemple, si une INTERVAL valeur de 10 est définie et l’instantané planifié est activé à 9:03 AM, l’instantané suivant est créé à 9:13 AM, 9:23 AM, et ainsi de suite. Notez que nous faisons de notre mieux pour assurer une précision absolue, mais nous garantissons uniquement qu’un instantané ne s’exécute pas avant l’intervalle défini (par exemple, dans cet exemple, l’instantané pourrait d’abord être exécutée à 9:14 AM, mais ne fonctionnera certainement pas à 9:12 AM).

EXPIRE_AFTER_DAYS = days_integer

Spécifie le nombre de jours jusqu’à l’expiration de l’instantané. Snowflake supprime automatiquement les instantanés ayant expiré. Si ce paramètre n’est pas spécifié, les instantanés restent dans l’ensemble d’instantanés jusqu’à ce qu’ils soient supprimés manuellement de l’ensemble.

Note

Chaque politique d’instantanés doit disposer d’une ou des deux propriétés de planification et de période d’expiration. Pour plus d’informations, voir Politique des instantanés.

COMMENT = 'string_literal'

Spécifie un commentaire pour la politique d’instantanés.

Par défaut : aucune valeur

Exigences en matière de contrôle d’accès

Un rôle utilisé pour exécuter cette opération doit au minimum disposer des privilèges suivants :

Privilège

Remarques

CREATE SNAPSHOT POLICY

Le rôle utilisé pour créer une politique d’instantanés doit disposer de ce privilège sur le schéma dans lequel la politique est créée.

APPLY SNAPSHOT.RETENTION.LOCK

Seul un utilisateur disposant de ce privilège sur le compte peut créer une politique d’instantané avec un verrou de conservation.

Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.

Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.

Notes sur l’utilisation

  • La conservation Time Travel et Failsafe ne s’applique pas aux instantanés. Un instantané ne peut pas être récupéré après son expiration.

  • Concernant les métadonnées :

    Attention

    Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.

Important

Si la politique d’instantanés est associée à un verrouillage de conservation et qu’il existe des instantanés non expirés dans l’ensemble d’instantanés, vous ne pouvez pas supprimer l’ensemble d’instantanés. Dans ce cas, vous devez attendre que tous les instantanés de l’ensemble expirent. Cette restriction s’applique même aux rôles privilégiés tels que ACCOUNTADMIN, et à l’assistance Snowflake. C’est pourquoi vous devez être prudent lorsque vous spécifiez le verrouillage de conservation et une longue période d’expiration dans une politique d’instantané.

Exemples

Créez une politique d’instantanés qui crée un instantané toutes les heures et expire après 90 jours :

CREATE SNAPSHOT POLICY hourly_snapshot_policy
  SCHEDULE = '60 MINUTE'
  EXPIRE_AFTER_DAYS = 90
  COMMENT = 'Hourly snapshots that expire after 90 days';
Copy

Créez une politique d’instantanés avec un verrou de conservation qui crée un instantané toutes les 24 heures et qui expire après 90 jours. Les instantanés créés à l’aide de cette politique d’instantanés ne peuvent être modifiés ou supprimés avant la fin de la période d’expiration :

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';
Copy

Créez une politique d’instantanés en utilisant une expression cron pour la planification. L’instruction suivante crée une politique qui crée des instantanés tous les mardis et vendredis de la semaine à 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';
Copy