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.

Les modifications de la base de données comprennent notamment :

  • 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 , DESCRIBE DATABASE , DROP DATABASE , SHOW DATABASES , UNDROP DATABASE

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 = <integer> ]
                                        [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
                                        [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
                                        [ COMMENT = '<string_literal>' ]

ALTER DATABASE <name> SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER DATABASE <name> UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER DATABASE [ IF EXISTS ] <name> UNSET { DATA_RETENTION_TIME_IN_DAYS         |
                                            MAX_DATA_EXTENSION_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 <account_identifier> [ , <account_identifier> ... ] [ IGNORE EDITION CHECK ]

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

ALTER DATABASE <name> REFRESH

Basculement de la base de données

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

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

ALTER DATABASE <name> PRIMARY

Paramètres

name

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 new_db_name

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 target_db_name

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 = num

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 la durée 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

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 de la base de données, 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 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.

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 é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

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

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

ENABLE REPLICATION TO ACCOUNTS account_identifier [ , account_identifier ... ]

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.

account_identifier

Identificateur unique du compte. L’identificateur préféré est organization_name.account_name. Pour afficher la liste des comptes activés pour la réplication dans votre organisation, interrogez SHOW REPLICATION ACCOUNTS.

Bien que l’ancien localisateur de compte puisse également être utilisé comme identificateur de compte, son utilisation est déconseillée, car il pourrait ne plus fonctionner à l’avenir. Pour plus de détails sur l’utilisation du localisateur de compte comme identificateur de compte, voir Notes sur l’utilisation pour la réplication de base de données et le basculement.

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 et HITRUST, 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 ou non 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 account_identifier [ , account_identifier ... ] ]

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.

account_identifier

Identificateur unique du compte. L’identificateur préféré est organization_name.account_name. Pour afficher la liste des comptes activés pour la réplication dans votre organisation, interrogez SHOW REPLICATION ACCOUNTS.

Bien que l’ancien localisateur de compte puisse également être utilisé comme identificateur de compte, son utilisation est déconseillée, car il pourrait ne plus fonctionner à l’avenir. Pour plus de détails sur l’utilisation du localisateur de compte comme identificateur de compte, voir Notes sur l’utilisation pour la réplication de base de données et le basculement.

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 account_identifier [ , account_identifier ... ]

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.

account_identifier

Identificateur unique du compte. L’identificateur préféré est organization_name.account_name. Pour afficher la liste des comptes activés pour la réplication dans votre organisation, interrogez SHOW REPLICATION ACCOUNTS.

Bien que l’ancien localisateur de compte puisse également être utilisé comme identificateur de compte, son utilisation est déconseillée, car il pourrait ne plus fonctionner à l’avenir. Pour plus de détails sur l’utilisation du localisateur de compte comme identificateur de compte, voir Notes sur l’utilisation pour la réplication de base de données et le basculement.

DISABLE FAILOVER [ TO ACCOUNTS account_identifier [ , account_identifier ... ] ]

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.

account_identifier

Identificateur unique du compte. L’identificateur préféré est organization_name.account_name. Pour afficher la liste des comptes activés pour la réplication dans votre organisation, interrogez SHOW REPLICATION ACCOUNTS.

Bien que l’ancien localisateur de compte puisse également être utilisé comme identificateur de compte, son utilisation est déconseillée, car il pourrait ne plus fonctionner à l’avenir. Pour plus de détails sur l’utilisation du localisateur de compte comme identificateur de compte, voir Notes sur l’utilisation pour la réplication de base de données et le basculement.

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.

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

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.

  • La méthode préférée d’identification d’un compte utilise le nom de l’organisation et le nom du compte comme identificateur du compte. Si vous décidez d’utiliser l’ancien localisateur de compte à la place, il se peut qu’il doive contenir des segments supplémentaires afin d’identifier le compte de manière unique. Voir le tableau ci-dessous à titre de référence :

    Identificateur du compte

    Emplacement du compte distant

    organization_name.account_name

    Identificateur de compte préféré qui peut être utilisé quelle que soit la région ou quel que soit le groupe de régions du compte stockant la base de données principale.

    account_locator

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

    snowflake_region.account_locator

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

    region_group.snowflake_region.account_locator

    Groupe de régions différent du compte qui stocke la base de données principale.

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 le compte account1) pour qu’elle serve de base de données principale et indiquez que les comptes account2 et account3 dans l’organisation myorg peuvent chacun stocker un réplica de cette base de données :

ALTER DATABASE mydb1 ENABLE REPLICATION TO ACCOUNTS myorg.account2, myorg.account3;

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

ALTER DATABASE mydb1 DISABLE REPLICATION;
Revenir au début