ALTER DATABASE (Transact-SQL)ALTER DATABASE (Transact-SQL)

Modifie une base de données.Modifies a database.

Cliquez sur l’un des onglets suivants pour connaître la syntaxe, les arguments, les remarques, les autorisations et des exemples propres à la version de SQL que vous utilisez.Click one of the following tabs for the syntax, arguments, remarks, permissions, and examples for a particular SQL version with which you are working.

Pour plus d’informations sur les conventions de la syntaxe, consultez Conventions de la syntaxe Transact-SQL.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

Vue d'ensembleOverview

Dans SQL Server, cette instruction modifie une base de données ou les fichiers et groupes de fichiers associés à la base de données.In SQL Server, this statement modifies a database, or the files and filegroups associated with the database. 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.Adds or removes files and filegroups from a database, changes the attributes of a database or its files and filegroups, changes the database collation, and sets database options. Les instantanés de base de données ne peuvent pas être modifiés.Database snapshots cannot be modified. Pour modifier les options de base de données associées à la réplication, utilisez sp_replicationdboption.To modify database options associated with replication, use sp_replicationdboption.

En raison de sa longueur, la syntaxe d’ALTER DATABASE est divisée en plusieurs rubriques.Because of its length, the ALTER DATABASE syntax is separated into the multiple topics.

ALTER DATABASEALTER DATABASE
La présente rubrique indique la syntaxe à utiliser et les informations associées pour modifier le nom et le classement d’une base de données.The current topic provides the syntax and related information for changing the name and the collation of a database.

Options de fichiers et de groupes de fichiers ALTER DATABASEALTER DATABASE File and Filegroup Options
Indique la syntaxe à utiliser et les informations associées 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.Provides the syntax and related information for adding and removing files and filegroups from a database, and for changing the attributes of the files and filegroups.

Options ALTER DATABASE SETALTER DATABASE SET Options
Indique la syntaxe à utiliser et les informations associées pour modifier les attributs d’une base de données à l’aide des options SET d’ALTER DATABASE.Provides the syntax and related information for changing the attributes of a database by using the SET options of ALTER DATABASE.

Mise en miroir de bases de données ALTER DATABASEALTER DATABASE Database Mirroring
Indique la syntaxe et les informations associées des options SET d’ALTER DATABASE relatives à la mise en miroir de bases de données.Provides the syntax and related information for the SET options of ALTER DATABASE that are related to database mirroring.

ALTER DATABASE SET HADRALTER DATABASE SET HADR
Indique la syntaxe et les informations associées des options Groupes de disponibilité Always OnAlways On availability groups d’ALTER DATABASE pour configurer une base de données secondaire sur un réplica secondaire d’un groupe de disponibilité Always On.Provides the syntax and related information for the Groupes de disponibilité Always OnAlways On availability groups options of ALTER DATABASE for configuring a secondary database on a secondary replica of an Always On availability group.

Niveau de compatibilité ALTER DATABASEALTER DATABASE Compatibility Level
Indique la syntaxe et les informations associées des options SET d’ALTER DATABASE relatives aux niveaux de compatibilité des bases de données.Provides the syntax and related information for the SET options of ALTER DATABASE that are related to database compatibility levels.

SyntaxeSyntax

-- SQL Server Syntax  
ALTER DATABASE { database_name  | CURRENT }  
{  
    MODIFY NAME = new_database_name   
  | COLLATE collation_name  
  | <file_and_filegroup_options>  
  | SET <option_spec> [ ,...n ] [ WITH <termination> ] 
  | SET COMPATIBILITY_LEVEL = { 140 | 130 | 120 | 110 | 100 | 90 }   

}  
[;]  

<file_and_filegroup_options>::=  
  <add_or_modify_files>::=  
  <filespec>::=   
  <add_or_modify_filegroups>::=  
  <filegroup_updatability_option>::=  

<option_spec>::=  
  <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> ::=  

<compatibility_level>
   { 140 | 130 | 120 | 110 | 100 | 90 }   

ArgumentsArguments

database_namedatabase_name
Nom de la base de données à modifier.Is the name of the database to be modified.

Note

Cette option n'est pas disponible dans une base de données autonome.This option is not available in a Contained Database.

CURRENTCURRENT
S'applique à: SQL Server 2012 (11.x)SQL Server 2012 (11.x) jusqu'à SQL Server 2017SQL Server 2017.Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) through SQL Server 2017SQL Server 2017.

Indique que la base de données actuelle en cours d'utilisation doit être modifiée.Designates that the current database in use should be altered.

MODIFY NAME =new_database_nameMODIFY NAME =new_database_name
Renomme la base de données avec le nom spécifié nouveau_nom_base_de_données.Renames the database with the name specified as new_database_name.

COLLATE collation_nameCOLLATE collation_name
Spécifie le classement par défaut de la base de données.Specifies the collation for the database. collation_name peut être un nom de classement Windows ou SQL.collation_name can be either a Windows collation name or a SQL collation name. S'il n'est pas spécifié, le classement par défaut de l'instance de SQL ServerSQL Server sera appliqué à la base de données.If not specified, the database is assigned the collation of the instance of SQL ServerSQL Server.

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é.When creating databases with other than the default collation, the data in the database always respects the specified collation. Pour SQL ServerSQL Server, quand vous créez une base de données autonome, les informations de catalogue interne sont conservées à l'aide du classement par défaut SQL ServerSQL Server, Latin1_General_100_CI_AS_WS_KS_SC.For SQL ServerSQL Server, when creating a contained database, the internal catalog information is maintained using the SQL ServerSQL Server default collation, Latin1_General_100_CI_AS_WS_KS_SC.

Pour plus d’informations sur les noms de classements Windows et SQL, voir COLLATE.For more information about the Windows and SQL collation names, see COLLATE.

<delayed_durability_option> ::=<delayed_durability_option> ::=
S'applique à: SQL Server 2014 (12.x)SQL Server 2014 (12.x) jusqu'à SQL Server 2017SQL Server 2017.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) through SQL Server 2017SQL Server 2017.

Pour plus d’informations, voir Options d’ALTER DATABASE SET et Contrôler la durabilité d’une transaction.For more information see ALTER DATABASE SET Options and Control Transaction Durability.

<file_and_filegroup_options>::=<file_and_filegroup_options>::=
Pour plus d’informations, voir Options de fichiers et de groupes de fichiers d’ALTER DATABASE.For more information, see ALTER DATABASE File and Filegroup Options.

Notes Remarks

Pour supprimer une base de données, utilisez DROP DATABASE.To remove a database, use DROP DATABASE.

Pour diminuer la taille d'une base de données, utilisez DBCC SHRINKDATABASE.To decrease the size of a database, use 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.The ALTER DATABASE statement must run in autocommit mode (the default transaction management mode) and is not allowed in an explicit or implicit transaction.

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.The state of a database file (for example, online or offline), is maintained independently from the state of the database. Pour plus d’informations, consultez États des fichiers.For more information, see File States. L'état des fichiers dans un groupe de fichiers détermine la disponibilité de tout le groupe de fichiers.The state of the files within a filegroup determines the availability of the whole filegroup. Pour qu'un groupe de fichiers soit disponible, tous ses fichiers doivent être en ligne.For a filegroup to be available, all files within the filegroup must be online. Si un groupe de fichiers est hors connexion, toute tentative d'accès au groupe par une instruction SQL échoue avec une erreur.If a filegroup is offline, any try to access the filegroup by an SQL statement will fail with an error. 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.When you build query plans for SELECT statements, the query optimizer avoids nonclustered indexes and indexed views that reside in offline filegroups. Cela permet aux instructions de s'exécuter correctement.This enables these statements to succeed. Cependant, si le groupe de fichiers hors connexion contient le segment ou l'index cluster d'une table cible, les instructions SELECT échouent.However, if the offline filegroup contains the heap or clustered index of the target table, the SELECT statements fail. 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.Additionally, any INSERT, UPDATE, or DELETE statement that modifies a table with any index in an offline filegroup will fail.

Lorsque l'état d'une base de données est RESTORING, les instructions ALTER DATABASE, pour la plupart, échouent.When a database is in the RESTORING state, most ALTER DATABASE statements will fail. La définition des options de mise en miroir de bases de données fait exception.The exception is setting database mirroring options. 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.A database may be in the RESTORING state during an active restore operation or when a restore operation of a database or log file fails because of a corrupted backup file.

Le cache du plan pour l'instance de SQL ServerSQL Server est effacé par la définition de l'une des options suivantes :The plan cache for the instance of SQL ServerSQL Server is cleared by setting one of the following options.

OFFLINEOFFLINE READ_WRITEREAD_WRITE
ONLINEONLINE MODIFY FILEGROUP DEFAULTMODIFY FILEGROUP DEFAULT
MODIFY_NAMEMODIFY_NAME MODIFY FILEGROUP READ_WRITEMODIFY FILEGROUP READ_WRITE
COLLATECOLLATE MODIFY FILEGROUP READ_ONLYMODIFY FILEGROUP READ_ONLY
READ_ONLYREAD_ONLY PAGE_VERIFYPAGE_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.Clearing the plan cache causes a recompilation of all subsequent execution plans and can cause a sudden, temporary decrease in query performance. Pour chaque mémoire cache effacée dans le cache de plan, le journal des erreurs SQL ServerSQL Server contient le message d'information suivant : « SQL ServerSQL 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 ».For each cleared cachestore in the plan cache, the SQL ServerSQL Server error log contains the following informational message: " SQL ServerSQL Server has encountered %d occurrence(s) of cachestore flush for the '%s' cachestore (part of plan cache) due to some database maintenance or reconfigure operations". Ce message est enregistré toutes les cinq minutes si le cache est vidé au cours de cet intervalle de temps.This message is logged every five minutes as long as the cache is flushed within that time interval.

Le cache de procédures est également vidé dans les scénarios suivants :The procedure cache is also flushed in the following scenarios:

  • L'option de base de données AUTO_CLOSE est activée (ON).A database has the AUTO_CLOSE database option set to 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.When no user connection references or uses the database, the background task tries to close and shut down the database automatically.
  • Vous exécutez plusieurs requêtes sur une base de données dont les options par défaut sont activées.You run several queries against a database that has default options. Puis, la base de données est supprimée.Then, the database is dropped.
  • Un instantané de base de données pour une base de données source est supprimé.A database snapshot for a source database is dropped.
  • Vous reconstruisez avec succès le journal des transactions d'une base de données.You successfully rebuild the transaction log for a database.
  • Vous restaurez une sauvegarde de base de données.You restore a database backup.
  • Vous détachez une base de données.You detach a database.

Modification du classement de la base de donnéesChanging the Database Collation

Avant d'appliquer un autre classement à une base de données, veillez à ce que les conditions suivantes soient remplies :Before you apply a different collation to a database, make sure that the following conditions are in place:

  • Vous êtes actuellement le seul à utiliser la base de données.You are the only one currently using the database.
  • Aucun objet lié à un schéma ne dépend du classement de la base de données.No schema-bound object depends on the collation of the database.

    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_nameCOLLATE échoue.If the following objects, which depend on the database collation, exist in the database, the ALTER DATABASEdatabase_nameCOLLATE statement will fail. SQL ServerSQL Server retourne un message d'erreur pour chaque objet bloquant l'action ALTER : will return an error message for each object blocking the ALTER action:

    • Fonctions et vues définies par l'utilisateur créées avec SCHEMABINDINGUser-defined functions and views created with SCHEMABINDING.

    • Colonnes calculéesComputed columns.

    • Contraintes CHECKCHECK constraints.

    • 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éesTable-valued functions that return tables with character columns with collations inherited from the default database collation.

      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é.Dependency information for non-schema-bound entities is automatically updated when the database collation is changed.

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.Changing the database collation does not create duplicates among any system names for the database objects. 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 :If duplicate names result from the changed collation, the following namespaces may cause the failure of a database collation change:

  • Noms d'objets tels qu'une procédure, une table, un déclencheur ou une vueObject names such as a procedure, table, trigger, or view.
  • Noms de schémas.Schema names.
  • Principaux, tels qu'un groupe, un rôle ou un utilisateurPrincipals such as a group, role, or user.
  • Noms de types scalaires, comme les types système ou définis par l'utilisateurScalar-type names such as system and user-defined types.
  • Noms de catalogues de texte intégralFull-text catalog names.
  • Noms de colonnes ou de paramètres dans un objetColumn or parameter names within an object.
  • Noms d'index dans une tableIndex names within a table.

Les noms en double qui résultent du nouveau classement entraînent l'échec de l'action de modification et SQL ServerSQL Server retourne un message d'erreur spécifiant l'espace de noms en cause.Duplicate names resulting from the new collation will cause the change action to fail, and SQL ServerSQL Server will return an error message specifying the namespace where the duplicate was found.

Affichage des informations de bases de donnéesViewing Database Information

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.You can use catalog views, system functions, and system stored procedures to return information about databases, files, and filegroups.

PermissionsPermissions

Nécessite l'autorisation ALTER sur la base de données.Requires ALTER permission on the database.

ExemplesExamples

A.A. Modification du nom d'une base de donnéesChanging the name of a database

L'exemple suivant modifie le nom de la base de données AdventureWorks2012 en Northwind.The following example changes the name of the AdventureWorks2012 database to Northwind.

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

B.B. Modification du classement d'une base de donnéesChanging the collation of a database

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.The following example creates a database named testdb with the SQL_Latin1_General_CP1_CI_AS collation, and then changes the collation of the testdb database to COLLATE French_CI_AI.

S'applique à: SQL Server 2008SQL Server 2008 jusqu'à SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

USE master;  
GO  

CREATE DATABASE testdb  
COLLATE SQL_Latin1_General_CP1_CI_AS ;  
GO  

ALTER DATABASE testDB  
COLLATE French_CI_AI ;  
GO  

Voir aussiSee Also