ALTER DATABASE (liée à un catalogue)¶
Modifie les propriétés d’une base de données liée au catalogue existante.
Les modifications de la base de données comprennent les actions suivantes :
Activation ou désactivation de la découverte automatique.
Modification des espaces de noms autorisés et bloqués.
Modification de l’intervalle de temps que Snowflake doit utiliser pour découvrir automatiquement les schémas et les tables dans votre catalogue distant.
Modification si votre catalogue distant est en lecture seule ou en écriture.
Syntaxe¶
ALTER DATABASE [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER DATABASE [ IF EXISTS ] <name> SUSPEND DISCOVERY
ALTER DATABASE [ IF EXISTS ] <name> RESUME DISCOVERY
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
ADD ( '<namespace>' [ , ... ] ) TO ALLOWED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
REMOVE ( '<namespace>' [ , ... ] ) FROM ALLOWED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
UNSET ALLOWED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
ADD ( '<namespace>' [ , ... ] ) TO BLOCKED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
REMOVE ( '<namespace>' [ , ... ] ) FROM BLOCKED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
UNSET BLOCKED_NAMESPACES
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
SET SYNC_INTERVAL_SECONDS = <value>
ALTER DATABASE [ IF EXISTS ] <name> UPDATE LINKED_CATALOG
SET ALLOWED_WRITE_OPERATIONS = { NONE | ALL }
ALTER DATABASE [ IF EXISTS ] <name> SET [ BASE_LOCATION_PREFIX = '<string>' ]
[ COMMENT = '<string_literal>' ]
[ CONTACT <purpose> = <contact_name> [ , <purpose> = <contact_name> ... ] ]
ALTER DATABASE [ IF EXISTS ] <name> UNSET { BASE_LOCATION_PREFIX |
COMMENT |
CONTACT
}
Paramètres¶
nameIndique l’identificateur de la base de données liée au catalogue à modifier.
Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.
Pour plus d’informations, voir Exigences relatives à l’identificateur.
RENAME TO new_nameRemplace le nom de la base de données liée au catalogue par
new_name. Le nouvel identificateur doit être unique pour le compte.Pour plus d’informations, 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.
SUSPEND DISCOVERYSuspend la découverte automatique. Vous pouvez souhaiter suspendre la découverte automatique pour éviter de consommer des crédits ou des ressources inutiles si un problème sous-jacent empêche Snowflake de découvrir les tables de votre catalogue distant. Par exemple, vous pouvez souhaiter suspendre la découverte automatique en raison d’un problème sous-jacent lié à des autorisations manquantes ou à une mauvaise configuration. Après avoir résolu le problème, exécutez ALTER DATABASE … RESUME DISCOVERY pour reprendre la découverte.
Pour confirmer que la découverte automatique est suspendue, appelez la fonction SYSTEM$CATALOG_LINK_STATUS et vérifiez que le champ
executionStateest défini surSUSPENDED. Si vous suspendez la détection automatique alors qu’une tâche de détection automatique est en cours d’exécution, l’état d’exécution ne passera pas à « suspendu » tant que la tâche ne sera pas terminée.Note
La suspension de la découverte automatique ne désactive pas l’actualisation automatique. Pour désactiver l’actualisation automatique d’une table Iceberg existante, voir Activation ou désactivation de l’actualisation automatique.
RESUME DISCOVERYReprend la découverte automatique. Vous souhaiterez peut-être reprendre la découverte pour les raisons suivantes :
Vous avez suspendu la découverte pour résoudre un problème et vous êtes maintenant prêt à reprendre la découverte.
Vous souhaitez forcer une exécution de découverte immédiate pour garantir que les modifications récentes, telles que les autorisations fixes, sont prises en compte.
Pour confirmer la reprise de la découverte automatique, appelez la fonction SYSTEM$CATALOG_LINK_STATUS, puis vérifiez que le champ
executionStateest défini surRUNNING.UPDATE LINKED_CATALOGMet à jour les propriétés qui s’appliquent aux bases de données liées au catalogue. Vous pouvez définir les propriétés suivantes :
ADD ( 'namespace1' [ , 'namespace2' , ... ] ) TO ALLOWED_NAMESPACESSpécifie un ou plusieurs espaces de noms dans votre catalogue distant pour limiter la portée de la découverte automatique. Snowflake synchronise les espaces de noms spécifiés et tous les espaces de noms et toutes les tables qui leur sont imbriqués.
Si vous avez créé une base de données liée à un catalogue avec une liste ALLOWED_NAMESPACES vide, Snowflake synchronise l’ensemble des espaces de noms et des tables du catalogue distant.
Si vous modifiez ultérieurement la base de données en spécifiant le paramètre ALLOWED_NAMESPACES pour n’autoriser qu’une liste spécifique d’espaces de noms, Snowflake met à jour la base de données liée au catalogue pour ne conserver que les espaces de noms que vous autorisez. Tous les autres espaces de noms et toutes les autres tables sont supprimés de la base de données liée au catalogue.
Si vous avez créé une base de données liée à un catalogue avec une liste de ALLOWED_NAMESPACES, Snowflake ne crée que les espaces de noms autorisés dans la base de données liée au catalogue.
Si vous modifiez ultérieurement la base de données pour ajouter des espaces de noms à la liste ALLOWED_NAMESPACES, Snowflake ne crée que les espaces de noms nouvellement ajoutés et conserve les espaces de noms autorisés existants. Si vous supprimez des espaces de noms de la liste ALLOWED_NAMESPACES, Snowflake ne supprime que les espaces de noms nouvellement supprimés de la base de données liée au catalogue et conserve tous les espaces de noms restants autorisés.
Si un espace de noms imbriqué se trouve dans la liste ALLOWED_NAMESPACES mais que vous définissez le paramètre NAMESPACE_MODE sur IGNORE_NESTED_NAMESPACE, Snowflake ne synchronise pas l’espace de noms imbriqué ni les schémas et tables sous celui-ci.
REMOVE ( 'namespace1' [ , 'namespace2' , ... ] ) FROM ALLOWED_NAMESPACESSpécifie un ou plusieurs espaces de noms de votre catalogue distant à supprimer de votre liste des espaces de noms autorisés.
UNSET ALLOWED_NAMESPACESRéinitialise votre liste d’espaces de noms autorisés à la valeur par défaut, c’est-à-dire que tous les espaces de noms sont autorisés.
ADD ( 'namespace1' [ , 'namespace2' , ... ] ) TO BLOCKED_NAMESPACESSpécifie un ou plusieurs espaces de noms dans votre catalogue distant à bloquer pour la découverte automatique.
Snowflake bloque les espaces de noms spécifiés et tous les espaces de noms et toutes les tables qui leur sont imbriqués.
Si vous spécifiez ALLOWED_NAMESPACES et BLOCKED_NAMESPACES, la liste BLOCKED_NAMESPACES est prioritaire. Par exemple, si
ns1.ns2est autorisé, mais quens1est bloqué, Snowflake ne synchronisera pasns1.ns2.REMOVE ( 'namespace1' [ , 'namespace2' , ... ] ) FROM BLOCKED_NAMESPACESSpécifie un ou plusieurs espaces de noms de votre catalogue distant à supprimer de votre liste des espaces de noms bloqués.
UNSET BLOCKED_NAMESPACESRéinitialise votre liste d’espaces de noms bloqués à la valeur par défaut, c’est-à-dire qu’aucun espace de noms n’est bloqué.
SET SYNC_INTERVAL_SECONDS = valueSpécifie l’intervalle de temps en secondes que Snowflake doit utiliser pour découvrir automatiquement les schémas et les tables dans votre catalogue distant. Vous pouvez réduire votre consommation de crédit en fixant un intervalle de temps plus long.
Valeurs : 30 à 86 400 (1 jour), inclusif
Par défaut : 30 secondes
SET ALLOWED_WRITE_OPERATIONS = { NONE | ALL }Spécifie si votre base de données liée au catalogue est en lecture seule ou en écriture.
NONE: Votre base de données liée au catalogue est en lecture seule.Lorsque votre base de données liée au catalogue est en lecture seule, toute opération que vous exécutez qui nécessite une validation du catalogue échoue. Par exemple, DROP ICEBERG TABLE.
ALL: Votre base de données liée au catalogue est accessible en écriture.Avertissement
Lorsque les autorisations d’écriture sont activées dans votre base de données liée au catalogue, Snowflake propage les suppressions de table vers le catalogue distant, ce qui supprime la table et les données des deux systèmes.
Par défaut :
ALL
SET ...Spécifie une ou plusieurs propriétés ou un ou plusieurs paramètres à définir pour la base de données liée au catalogue, séparés par des espaces, des virgules ou de nouvelles lignes :
BASE_LOCATION_PREFIX = 'string'Spécifie un préfixe à utiliser par Snowflake dans le chemin d’écriture pour les tables Apache Iceberg™ gérées en externe. Pour plus d’informations, voir Répertoires de données et de métadonnées pour les tables Iceberg et BASE_LOCATION_PREFIX.
Par défaut : aucune valeur
COMMENT = 'string_literal'Ajoute un commentaire ou écrase un commentaire existant pour la base de données liée au catalogue.
CONTACT purpose = contact [ , purpose = contact ... ]Associez l’objet existant à un ou plusieurs contacts.
Vous ne pouvez pas définir la propriété CONTACT avec d’autres propriétés dans la même instruction.
UNSET ...Spécifie une ou plusieurs propriétés ou un ou plusieurs paramètres à désactiver pour la base de données, qui les réinitialise aux valeurs par défaut :
BASE_LOCATION_PREFIXCOMMENTCONTACT
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 |
Objet |
Remarques |
|---|---|---|
OWNERSHIP |
Base de données liée au catalogue en cours de modification. |
Nécessaire pour suspendre ou reprendre la découverte automatique des tables. |
OWNERSHIP ou MODIFY |
Base de données liée au catalogue en cours de modification. |
Requis pour toutes les autres opérations. |
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.
Exemples¶
Réinitialiser la liste des espaces de noms autorisés pour une base de données liée à un catalogue nommée my_linked_db à la valeur par défaut.
ALTER DATABASE IF EXISTS my_linked_db UPDATE LINKED_CATALOG
UNSET ALLOWED_NAMESPACES;
Ajouter my_namespace à la liste des espaces de noms autorisés pour une base de données liée à un catalogue nommée my_linked_db.
ALTER DATABASE IF EXISTS my_linked_db UPDATE LINKED_CATALOG
ADD ('my_namespace') TO ALLOWED_NAMESPACES;