Catégories :

Base de données, schéma et partage DDL

ALTER DATABASE

Modifie les propriétés d’une base de données existante, y compris :

  • Modification du nom de la base de données ou de la période de conservation des données Time Travel (si vous utilisez Snowflake Enterprise Edition ou une version supérieure).

  • Activation et gestion de la réplication de la base de données et du basculement.

Voir aussi :

CREATE DATABASE , SHOW DATABASES

Dans ce chapitre :

Syntaxe

ALTER DATABASE [ IF EXISTS ] <name> RENAME TO <new_db_name>

ALTER DATABASE [ IF EXISTS ] <name> SWAP WITH <target_db_name>

ALTER DATABASE [ IF EXISTS ] <name> SET [ DATA_RETENTION_TIME_IN_DAYS = <num> ]
                                        [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                        [ COMMENT = '<string_literal>' ]

ALTER DATABASE [ IF EXISTS ] <name> UNSET { DATA_RETENTION_TIME_IN_DAYS |
                                            DEFAULT_DDL_COLLATION       |
                                            COMMENT }
                                          [ , ... ]

Syntaxe de réplication de base de données et de basculement

Réplication de base de données

ALTER DATABASE <name> ENABLE REPLICATION TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] [ IGNORE EDITION CHECK ]

ALTER DATABASE <name> DISABLE REPLICATION [ TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] ]

ALTER DATABASE <name> SET AUTO_REFRESH_MATERIALIZED_VIEWS_ON_SECONDARY = { TRUE | FALSE }

ALTER DATABASE <name> REFRESH

Basculement de la base de données

ALTER DATABASE <name> ENABLE FAILOVER TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ]

ALTER DATABASE <name> DISABLE FAILOVER [ TO ACCOUNTS <snowflake_region>.<account_name> [ , <snowflake_region>.<account_name> ... ] ]

ALTER DATABASE <name> PRIMARY

Paramètres

nom

Spécifie l’identifiant de la base de données à 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 nouveau_nom_bdd

Indique le nouvel identifiant de la base de données ; il doit être unique pour votre compte.

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

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

SWAP WITH nom_bdd_cible

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

SET ...

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

DATA_RETENTION_TIME_IN_DAYS = nb

Spécifie le nombre de jours pendant lesquels des actions Time Travel (CLONE et UNDROP) peuvent être effectuées sur la base de données, ainsi que le temps de conservation Time Travel par défaut de tous les schémas créés dans la base de données.

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

DEFAULT_DDL_COLLATION = 'spécification_classement'

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

  • Toute nouvelle colonne ajoutée aux tables existantes dans la base de données.

  • Toutes les colonnes des nouvelles tables ajoutées à la base de données.

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.

COMMENT = 'litéral_chaine'

Ajoute un commentaire ou écrase un commentaire existant pour la base de données.

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

  • DEFAULT_DDL_COLLATION

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

Paramètres de réplication de base de données et de basculement

ENABLE REPLICATION TO ACCOUNTS région_snowflake.nom_compte [ , région_snowflake.nom_compte ... ]

Permet à une base de données locale de servir de base de données principale pour la réplication. Une base de données principale peut être répliquée dans un ou plusieurs comptes, permettant aux utilisateurs de ces comptes d’interroger des objets dans chaque base de données secondaire (c’est-à-dire un réplica).

Vous pouvez également modifier une base de données principale existante pour l’ajouter ou la supprimer de la liste des comptes pouvant stocker un réplica de la base de données.

Fournissez une liste de comptes de votre entreprise séparés par des virgules pouvant stocker un réplica de cette base de données. En plus du nom du compte, des segments supplémentaires sont requis, en fonction de la région dans laquelle se trouve votre compte distant :

Référence du compte

Nom du compte qualifié

Emplacement du compte distant

compte

Même région, mais compte différent du compte qui stocke la base de données principale.

région_snowflake.compte

Même groupe de régions, mais région différente du compte qui stocke la base de données principale

région_snowflake

Spécifiez l’ID de région Snowflake de votre région où chaque compte Snowflake est hébergé. Pour afficher la liste des comptes de votre entreprise, interrogez SHOW REPLICATION ACCOUNTS.

IGNORE EDITION CHECK

Permet de répliquer des données vers des comptes sur des éditions inférieures dans l’un des scénarios suivants :

  • La base de données principale se trouve dans un compte Business Critical (ou supérieur), mais un ou plusieurs des comptes approuvés pour la réplication se trouvent sur des éditions inférieures. Business Critical Edition est destiné aux comptes Snowflake contenant des données extrêmement sensibles.

  • La base de données principale se trouve dans un compte Business Critical (ou supérieur) et un accord de partenariat commercial signé est en place pour stocker des données PHI dans le compte conformément aux réglementations HIPAA, mais aucun accord de ce type n’est en place pour un ou plusieurs des comptes approuvés pour la réplication, qu’il s’agisse de comptes Business Critical (ou supérieurs).

Les deux scénarios sont interdits par défaut dans le but d’empêcher les administrateurs de comptes Business Critical (ou supérieurs) de répliquer par inadvertance des données sensibles vers des comptes sur des éditions inférieures.

DISABLE REPLICATION [ TO ACCOUNTS région_snowflake.nom_compte [ , région_snowflake.nom_compte ... ] ]

Désactive la réplication pour cette base de données principale, ce qui signifie qu’aucun réplica de cette base de données (c.-à-d. une base de données secondaire) dans un autre compte ne peut être actualisé. Toutes les bases de données secondaires restent liées à la base de données principale, mais que les demandes d’actualisation d’une base de données secondaire sont refusées.

Notez que la désactivation de la réplication pour une base de données principale ne l’empêche pas d’être répliquée sur le même compte ; par conséquent, la base de données continue d’être affichée dans la sortie SHOW REPLICATION DATABASES.

Vous pouvez éventuellement fournir une liste de comptes de votre entreprise séparés par des virgules, afin de désactiver la réplication pour cette base de données uniquement dans les comptes spécifiés. En plus du nom du compte, des segments supplémentaires sont requis, en fonction de la région dans laquelle se trouve votre compte distant :

Référence du compte

Nom du compte qualifié

Emplacement du compte distant

compte

Même région, mais compte différent du compte qui stocke la base de données principale.

région_snowflake.compte

Même groupe de régions, mais région différente du compte qui stocke la base de données principale

région_snowflake

Spécifiez l’ID de région Snowflake de votre région où chaque compte Snowflake est hébergé. Pour afficher la liste des comptes de votre entreprise, interrogez SHOW REPLICATION ACCOUNTS.

SET AUTO_REFRESH_MATERIALIZED_VIEWS_ON_SECONDARY = TRUE | FALSE

Spécifie si la maintenance en arrière-plan automatique des vues matérialisées dans une base de données secondaire doit être effectuée.

REFRESH

Actualise une base de données secondaire à partir d’un instantané de sa base de données principale. Un instantané inclut les modifications apportées aux objets et aux données.

ENABLE FAILOVER TO ACCOUNTS région_snowflake.nom_compte [ , région_snowflake.nom_compte ... ]

Spécifie une liste de comptes de votre entreprise séparés par des virgules où un réplica de cette base de données principale peut être promu pour servir de base de données principale. En plus du nom du compte, des segments supplémentaires sont requis, en fonction de la région dans laquelle se trouve votre compte distant :

Référence du compte

Nom du compte qualifié

Emplacement du compte distant

compte

Même région, mais compte différent du compte qui stocke la base de données principale.

région_snowflake.compte

Même groupe de régions, mais région différente du compte qui stocke la base de données principale

région_snowflake

Spécifiez l’ID de région Snowflake de votre région où chaque compte Snowflake est hébergé. Pour afficher la liste des comptes de votre entreprise, interrogez SHOW REPLICATION ACCOUNTS.

DISABLE FAILOVER [ TO ACCOUNTS région_snowflake.nom_compte [ , région_snowflake.nom_compte ... ] ]

Désactive le basculement pour cette base de données principale, ce qui signifie qu’aucun réplica de cette base de données (c.-à-d. une base de données secondaire) ne peut être promu pour servir de base de données principale.

Vous pouvez éventuellement fournir une liste de comptes de votre entreprise séparés par des virgules afin de désactiver le basculement pour cette base de données uniquement dans les comptes spécifiés. En plus du nom du compte, des segments supplémentaires sont requis, en fonction de la région dans laquelle se trouve votre compte distant :

Référence du compte

Nom du compte qualifié

Emplacement du compte distant

compte

Même région, mais compte différent du compte qui stocke la base de données principale.

région_snowflake.compte

Même groupe de régions, mais région différente du compte qui stocke la base de données principale

région_snowflake

Spécifiez l’ID de région Snowflake de votre région où chaque compte Snowflake est hébergé. Pour afficher la liste des comptes de votre entreprise, interrogez SHOW REPLICATION ACCOUNTS.

PRIMARY

Promeut la base de données secondaire spécifiée (réplica) comme base de données principale. Une fois promue, la base de données devient accessible en écriture. Dans le même temps, la base de données principale précédente devient une base de données secondaire en lecture seule.

Notes sur l’utilisation

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

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

Notes sur l’utilisation pour la réplication de base de données et le basculement

  • Seuls les administrateurs de compte (utilisateurs dotés du rôle ACCOUNTADMIN) peuvent activer et gérer la réplication et le basculement de la base de données.

  • Une limite de taille par défaut de 10 TB est appliquée lorsqu’une base de données principale est initialement répliquée sur une base de données secondaire. Pour modifier ou supprimer la limite de taille, définissez le paramètre INITIAL_REPLICATION_SIZE_LIMIT_IN_TB au niveau du compte.

    Notez qu’aucune limite de taille par défaut n’est actuellement appliquée aux actualisations suivantes d’une base de données secondaire.

Exemples généraux

Renommer la base de données db1 en db2 :

ALTER DATABASE IF EXISTS db1 RENAME TO db2;

Exemples de réplication de base de données

Promouvez la base de données locale mydb1 (dans la région aws_us_west_2) pour qu’elle serve de base de données principale et indiquez que les comptes myaccount2 et myaccount3 (dans les régions aws_us_east_1 [AWS] et azure_westeurope [Azure], respectivement) peuvent chacun stocker un réplica de cette base de données :

ALTER DATABASE mydb1 ENABLE REPLICATION TO ACCOUNTS aws_us_east_1.myaccount2, azure_westeurope.myaccount3;

Désactiver la réplication pour la base de données principale mydb1 :

ALTER DATABASE mydb1 DISABLE REPLICATION;