ALTER SCHEMA

Modifie les propriétés d’un schéma existant, y compris le renommage du schéma ou son remplacement par un autre schéma et la modification de la période de conservation des données Time Travel (si vous utilisez Snowflake Enterprise Edition ou une version supérieure).

Voir aussi :

CREATE SCHEMA , DESCRIBE SCHEMA , DROP SCHEMA , SHOW SCHEMAS , UNDROP SCHEMA

Syntaxe

ALTER SCHEMA [ IF EXISTS ] <name> RENAME TO <new_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SWAP WITH <target_schema_name>

ALTER SCHEMA [ IF EXISTS ] <name> SET {
                                      [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
                                      [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
                                      [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                      [ LOG_LEVEL = '<log_level>' ]
                                      [ TRACE_LEVEL = '<trace_level>' ]
                                      [ COMMENT = '<string_literal>' ]
                                      }

ALTER SCHEMA [ IF EXISTS ] <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER SCHEMA [ IF EXISTS ] <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER SCHEMA [ IF EXISTS ] <name> UNSET {
                                        DATA_RETENTION_TIME_IN_DAYS         |
                                        MAX_DATA_EXTENSION_TIME_IN_DAYS     |
                                        DEFAULT_DDL_COLLATION               |
                                        LOG_LEVEL                           |
                                        TRACE_LEVEL                         |
                                        COMMENT
                                        }
                                        [ , ... ]

ALTER SCHEMA [ IF EXISTS ] <name> { ENABLE | DISABLE } MANAGED ACCESS
Copy

Paramètres

name

Indique l’identificateur du schéma à modifier. Si l’identificateur contient des espaces, des caractères spéciaux ou des caractères majuscules et minuscules, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

RENAME TO new_schema_name

Spécifie le nouvel identifiant du schéma ; il doit être unique pour la base de données.

Pour plus de détails, voir Exigences relatives à l’identificateur.

Vous pouvez déplacer l’objet vers une autre base de données tout en renommant éventuellement le schéma. Pour ce faire, spécifiez une valeur new_schema_name qualifiée qui inclut le nouveau nom de la base de données sous la forme db_name.new_schema_name.

Note

La base de données de destination doit déjà exister. En outre, un schéma portant le même nom ne peut pas déjà exister dans le nouvel emplacement ; sinon, l’instruction renvoie une erreur.

Lorsqu’un objet est renommé, les autres objets qui le référencent doivent être mis à jour avec le nouveau nom.

SWAP WITH target_schema_name

Permet d’échanger tous les objets (tables, vues, etc.) et métadonnées, y compris des identificateurs, entre deux schémas spécifiés. Échange également tous les privilèges de contrôle d’accès accordés aux schémas et aux objets qu’ils contiennent. SWAP WITH effectue essentiellement un renommage des deux schémas en une seule opération.

SET ...

Spécifie une ou plusieurs propriétés à définir pour le schéma (séparées par des espaces, des virgules ou de nouvelles lignes) :

DATA_RETENTION_TIME_IN_DAYS = integer

Spécifie le nombre de jours pendant lesquels des actions Time Travel (CLONE et UNDROP) peuvent être effectuées sur le schéma, ainsi que la durée de conservation Time Travel par défaut de toutes les tables créées dans le schéma.

La valeur que vous pouvez spécifier dépend de l’édition de Snowflake que vous utilisez :

  • Édition standard : 0 ou 1

  • Édition Enterprise (ou supérieure) : 0 à 90

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Paramètre d’objet qui spécifie le nombre maximum de jours pendant lesquels Snowflake peut prolonger la période de conservation des données pour les tables du schéma, afin d’éviter que les flux sur les tables ne deviennent obsolètes.

Pour une description détaillée de ce paramètre, voir MAX_DATA_EXTENSION_TIME_IN_DAYS.

DEFAULT_DDL_COLLATION = 'collation_specification'

Définit une spécification de classement par défaut pour :

  • Toute nouvelle colonne ajoutée aux tables existantes dans le schéma.

  • Toutes les colonnes des nouvelles tables ajoutées au schéma.

La définition du paramètre ne modifie pas la spécification de classement des colonnes existantes.

Pour plus de détails sur le paramètre, voir DEFAULT_DDL_COLLATION.

LOG_LEVEL = 'log_level'

Spécifie le niveau de gravité des messages qui doivent être ingérés et mis à disposition dans la table des événements actifs. Les messages du niveau spécifié (et des niveaux plus sévères) sont ingérés.

Pour plus d’informations sur les niveaux de journalisation, voir LOG_LEVEL. Pour plus d’informations sur la définition du niveau de journalisation, voir Réglage du niveau de journalisation.

TRACE_LEVEL = 'trace_level'

Contrôle la manière dont les événements de trace sont intégrés dans la table des événements.

Pour plus d’informations sur les niveaux, voir TRACE_LEVEL. Pour plus d’informations sur la définition du niveau de trace, voir Réglage du niveau de trace.

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

Spécifie le nom de la balise et la valeur de la chaîne de la balise.

La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.

Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.

COMMENT = 'string_literal'

Ajoute un commentaire ou remplace un commentaire existant pour le schéma.

UNSET ...

Spécifie une (ou plusieurs) propriété(s) et/ou paramètres à désactiver pour la base de données, qui les réinitialise aux valeurs par défaut :

  • DATA_RETENTION_TIME_IN_DAYS

  • MAX_DATA_EXTENSION_TIME_IN_DAYS

  • DEFAULT_DDL_COLLATION

  • TAG tag_name [ , tag_name ... ]

  • COMMENT

Vous pouvez réinitialiser plusieurs propriétés/paramètres avec une seule instruction ALTER ; cependant, chaque propriété/paramètre doit être séparé(e) par une virgule. Lors de la réinitialisation d’une propriété ou d’un paramètre, spécifiez seulement le nom ; si vous spécifiez une valeur pour la propriété, vous obtiendrez une erreur.

ENABLE | DISABLE MANAGED ACCESS

Activez l’accès géré pour un schéma ou désactivez-le pour convertir un schéma d’accès géré en un schéma standard. Les schémas d’accès gérés centralisent la gestion des privilèges avec le propriétaire du schéma.

Dans les schémas classiques, le propriétaire d’un objet (c’est-à-dire le rôle disposant du privilège OWNERSHIP sur l’objet) peut octroyer des privilèges supplémentaires sur leurs objets à d’autres rôles. Dans les schémas à accès gérés, le propriétaire du schéma gère toutes les attributions de privilèges, y compris les autorisations futures, sur les objets du schéma. Les propriétaires d’objets conservent les privilèges OWNERSHIP sur les objets ; cependant, seul le propriétaire du schéma peut gérer les attributions de privilèges sur les objets.

Notes sur l’utilisation

  • Pour renommer un schéma, le rôle utilisé pour effectuer l’opération doit avoir le privilège CREATE SCHEMA sur la base de données pour le schéma et les privilèges OWNERSHIP sur le schéma.

  • Pour échanger deux schémas, le rôle utilisé pour effectuer l’opération doit avoir des privilèges OWNERSHIP sur les deux schémas.

  • Pour convertir un schéma standard en un schéma d’accès géré :

    • Le propriétaire du schéma (c’est-à-dire le rôle qui dispose des privilèges OWNERSHIP sur le schéma) doit également disposer du privilège global MANAGE GRANTS. Le privilège MANAGE GRANTS est requis, car un autre rôle avec ce privilège pourrait avoir défini des octrois futurs sur des objets d’un type spécifié dans le schéma. Une fois qu’un schéma normal est devenu un schéma d’accès géré, le propriétaire du schéma peut révoquer les futures autorisations sans comprendre pourquoi un rôle doté du privilège MANAGE GRANTS les a accordés.

    • Toutes les autorisations futures ouvertes doivent être révoquées en utilisant REVOKE <privilèges> avec le mot clé FUTURE.

    Une fois qu’un schéma standard est converti en un schéma d’accès géré, tous les privilèges précédemment accordés sur des objets individuels sont conservés. Cependant, les propriétaires d’objets ne peuvent pas accorder d’autres privilèges sur ces objets.

  • Pour convertir un schéma d’accès géré en un schéma standard, le propriétaire du schéma doit également disposer du privilège global MANAGE GRANTS uniquement si le futur octroi de privilèges est défini.

  • 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.

Exemples

Renommer le schéma schema1 en schema2 :

ALTER SCHEMA IF EXISTS schema1 RENAME TO schema2;
Copy

Convertir un schéma standard en un schéma d’accès géré :

ALTER SCHEMA schema2 ENABLE MANAGED ACCESS;
Copy