ALTER DATABASE (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse

Modifie une base de données, ou les fichiers et groupes de fichiers associés à la base de données. Ajoute ou supprime des fichiers et des groupes de fichiers d'une base de données, modifie ses attributs ou ses fichiers et groupes de fichiers, modifie le classement de la base de données et définit les options de la base de données. Les instantanés de base de données ne peuvent pas être modifiés. Pour modifier les options de base de données associées à la réplication, utilisez sp_replicationdboption.

En raison de sa longueur, la syntaxe d'ALTER DATABASE est divisée en plusieurs rubriques :

ALTER DATABASE
La rubrique actuelle fournit la syntaxe à utiliser pour renommer une base de données et en modifier le classement.

MODIFIER le fichier de base de DONNÉES et les Options de groupe de fichiers
Fournit la syntaxe à utiliser pour ajouter et supprimer des fichiers et groupes de fichiers d'une base de données, et pour modifier les attributs des fichiers et groupes de fichiers.

Options ALTER DATABASE SET
Fournit la syntaxe à utiliser pour modifier les attributs d'une base de données à l'aide des options SET d'ALTER DATABASE.

ALTER Database de base de DONNÉES mise en miroir
Fournit la syntaxe à utiliser pour les options SET d'ALTER DATABASE relatives à la mise en miroir de bases de données.

MODIFICATION DE BASE DE DONNÉES SET HADR
Fournit la syntaxe pour la Groupes de disponibilité AlwaysOn options ALTER DATABASE pour la configuration de base de données secondaire sur un réplica secondaire d’un groupe de disponibilité AlwaysOn.

Niveau de compatibilité ALTER DATABASE
Fournit la syntaxe à utiliser pour les options SET d'ALTER DATABASE relatives aux niveaux de compatibilité de bases de données.

Topic link icon Conventions de la syntaxe Transact-SQL

Pour la base de données SQL Azure, consultez ALTER DATABASE &#40 ; Base de données SQL Azure &#41 ;

  
      -- SQL Server Syntax  
ALTER DATABASE { database_name  | CURRENT }  
{  
    MODIFY NAME = new_database_name   
  | COLLATE collation_name  
  | <file_and_filegroup_options>  
  | <set_database_options>  
}  
[;]  
  
<file_and_filegroup_options >::=  
  <add_or_modify_files>::=  
  <filespec>::=   
  <add_or_modify_filegroups>::=  
  <filegroup_updatability_option>::=  
  
<set_database_options>::=  
  <optionspec>::=   
  <auto_option> ::=   
  <change_tracking_option> ::=  
  <cursor_option> ::=   
  <database_mirroring_option> ::=   
  <date_correlation_optimization_option> ::=  
  <db_encryption_option> ::=  
  <db_state_option> ::=  
  <db_update_option> ::=  
  <db_user_access_option> ::=  <delayed_durability_option> ::=  <external_access_option> ::=  
  <FILESTREAM_options> ::=  
  <HADR_options> ::=    
  <parameterization_option> ::=  
  <query_store_options> ::=  
  <recovery_option> ::=   
  <service_broker_option> ::=  
  <snapshot_option> ::=  
  <sql_option> ::=   
  <termination> ::=  
  

database_name
Nom de la base de données à modifier.

System_CAPS_ICON_note.jpg Remarque


Cette option n'est pas disponible dans une base de données à relation contenant-contenu.

CURRENT

S'applique à: SQL Server 2012 et SQL Server 2016.

Indique que la base de données actuelle en cours d'utilisation doit être modifiée.

MODIFY NAME =new_database_name
Renomme la base de données avec le nom spécifié en tant que new_database_name.

COLLATE collation_name
Spécifie le classement par défaut de la base de données. collation_name peut être un nom de classement Windows ou un nom de classement SQL. S'il n'est pas spécifié, le classement par défaut de l'instance de SQL Server sera appliqué à la base de données.

Lors de la création de bases de données autrement qu'avec le classement par défaut, les données dans la base de données respectent toujours le classement spécifié. Pour SQL Server, lorsque vous créez une relation contenant-contenu de la base de données, les informations de catalogue interne sont conservées à l’aide de la SQL Server classement, par défaut Latin1_General_100_CI_AS_WS_KS_SC.

Pour plus d’informations sur les noms de classements Windows et SQL, consultez la page COLLATE &#40 ; Transact-SQL &#41 ;.

< delayed_durability_option > :: =

S'applique à: SQL Server 2014 et SQL Server 2016.

Pour plus d’informations, consultez Options ALTER DATABASE SET &#40 ; Transact-SQL &#41 ; et contrôler la durabilité des transactions.

< file_and_filegroup_options > :: =
Pour plus d’informations, consultez ALTER DATABASE File et Filegroup Options &#40 ; Transact-SQL &#41 ;.

Pour supprimer une base de données, utilisez DROP DATABASE.

Pour diminuer la taille d’une base de données, utilisez DBCC SHRINKDATABASE.

L'instruction ALTER DATABASE doit être exécutée en mode de validation automatique (mode de gestion des transactions par défaut) et n'est pas autorisée dans une transaction explicite ou implicite.

L'état d'un fichier de base de données (par exemple, en ligne ou hors connexion) est préservé indépendamment de l'état de la base de données. Pour plus d’informations, consultez États des fichiers. L'état des fichiers dans un groupe de fichiers détermine la disponibilité de tout le groupe de fichiers. Pour qu'un groupe de fichiers soit disponible, tous ses fichiers doivent être en ligne. Si un groupe de fichiers est hors connexion, toute tentative d'accès au groupe par une instruction SQL échoue avec une erreur. Lorsque vous créez des plans de requête pour les instructions SELECT, l'optimiseur de requête évite les index non cluster et les vues indexées qui résident dans les groupes de fichiers hors connexion. Cela permet aux instructions de s'exécuter correctement. Cependant, si le groupe de fichiers hors connexion contient le segment ou l'index cluster d'une table cible, les instructions SELECT échouent. De plus, toute instruction INSERT, UPDATE ou DELETE modifiant une table assortie d'un index dans un groupe de fichiers hors connexion ne peut être exécutée.

Lorsque l'état d'une base de données est RESTORING, les instructions ALTER DATABASE, pour la plupart, échouent. La définition des options de mise en miroir de bases de données fait exception. Une base de données peut être à l'état RESTORING durant une opération de restauration active, ou lorsqu'une opération de restauration d'un fichier de base de données ou d'un fichier journal échoue car un fichier de sauvegarde est corrompu.

Le cache du plan pour l'instance de SQL Server est effacé par la définition de l'une des options suivantes :

OFFLINEREAD_WRITE
ONLINEMODIFY FILEGROUP DEFAULT
MODIFY_NAMEMODIFY FILEGROUP READ_WRITE
COLLATEMODIFY FILEGROUP READ_ONLY
READ_ONLYPAGE_VERIFY

Cette opération entraîne la recompilation de tous les plans d'exécution ultérieurs et peut entraîner une baisse temporaire et brutale des performances des requêtes. Pour chaque mémoire cache effacée dans le cache de plan, le journal des erreurs SQL Server contient le message d'information suivant : « SQL Server a rencontré %d occurrence(s) de vidages de mémoire cache pour la mémoire cache '%s' (partie du cache du plan) en raison d'opérations de maintenance ou de reconfiguration de base de données ». Ce message est enregistré toutes les cinq minutes si le cache est vidé au cours de cet intervalle de temps.

Le cache de procédures est également vidé dans les scénarios suivants :

  • L'option de base de données AUTO_CLOSE est activée (ON). Lorsqu'aucune connexion utilisateur ne fait référence ou n'utilise la base de données, la tâche en arrière-plan essaie de fermer et d'arrêter la base de données automatiquement.

  • Vous exécutez plusieurs requêtes sur une base de données dont les options par défaut sont activées. Puis, la base de données est supprimée.

  • Un instantané de base de données pour une base de données source est supprimé.

  • Vous reconstruisez avec succès le journal des transactions d'une base de données.

  • Vous restaurez une sauvegarde de base de données.

  • Vous détachez une base de données.

Avant d'appliquer un autre classement à une base de données, veillez à ce que les conditions suivantes soient remplies :

  1. Vous êtes actuellement le seul à utiliser la base de données.

  2. Aucun objet lié à un schéma ne dépend du classement de la base de données.

    Si les objets suivants, qui dépendent du classement de base de données, existent dans la base de données, l’instruction ALTER DATABASEdatabase_nameinstruction COLLATE échoue. SQL Server retourne un message d'erreur pour chaque objet bloquant l'action ALTER :

    • Fonctions et vues définies par l'utilisateur créées avec SCHEMABINDING

    • Colonnes calculées

    • Contraintes CHECK

    • Fonctions table qui retournent des tables comportant des colonnes de type caractère avec des classements hérités du classement par défaut de la base de données

    Les informations de dépendance des entités non liées au schéma sont mises à jour automatiquement lorsque le classement de la base de données est modifié.

La modification du classement de la base de données ne crée pas de doublons parmi les noms système des objets de la base de données. Si cette modification entraîne la duplication de noms, les espaces de noms suivants peuvent faire échouer une modification du classement de la base de données :

  • Noms d'objets tels qu'une procédure, une table, un déclencheur ou une vue

  • Noms de schémas.

  • Principaux, tels qu'un groupe, un rôle ou un utilisateur

  • Noms de types scalaires, comme les types système ou définis par l'utilisateur

  • Noms de catalogues de texte intégral

  • Noms de colonnes ou de paramètres dans un objet

  • Noms d'index dans une table

Les noms en double qui résultent du nouveau classement entraînent l'échec de l'action de modification et SQL Server retourne un message d'erreur spécifiant l'espace de noms en cause.

Vous pouvez utiliser les affichages catalogue, les fonctions système et les procédures stockées du système pour retourner des informations sur les bases de données, les fichiers et les groupes de fichiers.

Nécessite l'autorisation ALTER sur la base de données.

A. Modification du nom d'une base de données

L'exemple suivant modifie le nom de la base de données AdventureWorks2012 en Northwind.

USE master;  
GO  
ALTER DATABASE AdventureWorks2012  
Modify Name = Northwind ;  
GO  

B. Modification du classement d'une base de données

L'exemple suivant crée une base de données nommée testdb qui utilise le classement SQL_Latin1_General_CP1_CI_AS, puis modifie le classement de la base de données testdb en COLLATE French_CI_AI.

S'applique à: SQL Server 2008 et SQL Server 2016.
USE master;  
GO  
  
CREATE DATABASE testdb  
COLLATE SQL_Latin1_General_CP1_CI_AS ;  
GO  
  
ALTER DATABASE testDB  
COLLATE French_CI_AI ;  
GO  

Ajouts de la communauté

AJOUTER
Afficher: