Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

ALTER DATABASE (Transact-SQL)

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.

S'applique à : SQL Server (SQL Server 2008 jusqu'à la version actuelle, Base de données SQL Windows Azure (version initiale jusqu'à la version actuelle).

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.

Options de fichiers et de groupes de fichiers ALTER DATABASE

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.

Mise en miroir de bases de données ALTER DATABASE

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

ALTER DATABASE SET HADR

Fournit la syntaxe des options Groupes de disponibilité AlwaysOn d'ALTER DATABASE en vue de la configuration d'une 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.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

-- 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> ::=
  <recovery_option> ::= 
  <service_broker_option> ::=
  <snapshot_option> ::=
  <sql_option> ::= 
  <termination> ::=
-- Azure SQL Database Syntax
ALTER DATABASE database_name 
{
    MODIFY NAME =new_database_name
  | MODIFY ( <edition_options> [, ... n] ) 
  | SET { <set_database_options> } 
}

<edition_options> ::= 
{
    ( MAXSIZE = {1 | 5 | 10 | 20 | 30 … 150} GB ) 
  | ( EDITION = {'web' | 'business'} ) 
}

<set_database_options> ::= 
    <db_update_option>
<db_update_option> ::= 
    { READ_ONLY | READ_WRITE }
 [;]

database_name

Nom de la base de données à modifier.

Remarque Remarque

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

CURRENT

S'applique à : SQL Server 2012 jusqu'à SQL Server 2014.

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é comme new_database_name.

COLLATE collation_name

S'applique à : SQL Server 2008 jusqu'à SQL Server 2014.

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.

Pour plus d'informations sur les noms de classement Windows et SQL, consultez COLLATE (Transact-SQL).

MODIFY (MAXSIZE = [1 | 5 | 10 | 20 | 30 … 150….500] GB)

S'applique à : Base de données SQL Azure

Spécifie la taille maximale de la base de données. La taille maximale doit être conforme au jeu de valeurs valide pour la propriété EDITION de la base de données. Le fait de modifier la taille maximale de la base de données peut entraîner la modification de la propriété EDITION de la base de données. Le tableau suivant dresse la liste des valeurs MAXSIZE prises en charge et des valeurs par défaut (D) des couches de service Base de données SQL :

MAXSIZE

Web

Business

Basic

Standard

Premium

100 Mo

√ (D)

500 Mo

√ (D)

1 Go

√ (D)

2 Go

5 Go

10 Go

√ (D)

√ (D)

20 Go

30 Go

40 Go

50 Go

100 Go

150 Go

200 Go

250 Go

300 Go

400 Go

500 Go

Les règles suivantes s'appliquent aux arguments MAXSIZE et EDITION.

Il existe deux types de serveurs de base de données : l'un prend en charge Web, Business et Premium, et l'autre prend en charge Basic, Standard et Premium. Les règles peuvent varier en fonction du serveur sur lequel vous exécutez la commande ALTER :

Serveurs prenant en charge Web, Business, et Premium (ou version de serveur 1.0)

  • La valeur MAXSIZE, si spécifiée, doit être une valeur valide indiquée dans le tableau ci-dessus.

  • Si MAXSIZE est inférieur à 5 Go et EDITION n'est pas spécifié, l'édition de la base de données sera automatiquement Web.

  • Si MAXSIZE est supérieur à 5 Go et EDITION n'est pas spécifié, l'édition de la base de données sera automatiquement Business.

  • Si EDITION est spécifié, mais MAXSIZE n'est pas spécifié, la valeur par défaut de l'édition est utilisée. Par exemple, si EDITION est défini sur Business, et MAXSIZE n'est pas spécifié, alors MAXSIZE est automatiquement défini sur 10 Go.

  • Si MAXSIZE et EDITION ne sont pas spécifiés, EDITION est défini sur Web et MAXSIZE est défini sur 1 Go.

Serveurs prenant en charge Basic, Standard, et Premium (ou version de serveur 2.0)

  • La valeur MAXSIZE, si spécifiée, doit être une valeur valide indiquée dans le tableau ci-dessus.

  • Si EDITION est spécifié, mais MAXSIZE n'est pas spécifié, la valeur par défaut de l'édition est utilisée. Par exemple, si EDITION est défini sur Standard, et MAXSIZE n'est pas spécifié, alors MAXSIZE est automatiquement défini sur 500 Mo.

  • Si MAXSIZE et EDITION ne sont pas spécifiés, EDITION est défini sur Basic et MAXSIZE est défini sur 100 Mo.

MODIFY (EDITION = ['web' | 'business'| 'basic' | 'standard' 'premium' |])

S'applique à : Base de données SQL Azure

Modifie l'édition de la base de données. Les couches de service Base de données SQL peuvent être définies ou modifiées à l'aide du paramètre EDITION. La modification de EDITION échoue si la propriété MAXSIZE de la base de données a une valeur située hors de la plage valide prise en charge par cette édition.

La valeur spécifiée pour EDITION doit être prise en charge par le serveur de base de données sur lequel vous exécutez la commande ALTER. Par exemple, si vous exécutez la commande sur un serveur qui prend en charge Web, Business et Premium, vous ne pouvez pas définir EDITION sur « Web ».

Important Important

Les couches de service Web et Business ne seront plus prises en charge dans les versions futures. Pour plus d'informations, consultez Questions fréquentes sur Web et Business.

<db_update_option> ::=

S'applique à : Base de données SQL Azure

Contrôle si des mises à jour sont autorisées dans la base de données.

{ READ_ONLY | READ_WRITE }

READ_ONLY

Les utilisateurs peuvent lire des données dans la base de données mais ils n'ont pas le droit de les modifier.

READ_WRITE

La base de données est accessible aux opérations de lecture et d'écriture.

Remarque Remarque

Dans les bases de données fédérées Base de données SQL, SET {READ_ONLY | READ_WRITE} est désactivé.

<delayed_durability_option> ::=

S'applique à : SQL Server 2014 jusqu'à SQL Server 2014.

Pour plus d'informations, consultez Options SET d'ALTER DATABASE (Transact-SQL) et Contrôler la durabilité d'une transaction.

<file_and_filegroup_options >::=

Pour plus d'informations, consultez Options de fichiers et de groupes de fichiers ALTER DATABASE (Transact-SQL).

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 les fichiers du groupe 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. Toutefois, si le groupe de fichiers hors connexion contient le segment de mémoire ou l'index cluster de la table cible, les instructions SELECT échouent. Par ailleurs, toute instruction INSERT, UPDATE ou DELETE qui modifie une table avec un index dans un groupe de fichiers hors connexion échoue.

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 de plan pour l'instance de SQL Server est effacé par la configuration d'une des options suivantes :

OFFLINE

READ_WRITE

ONLINE

MODIFY FILEGROUP DEFAULT

MODIFY_NAME

MODIFY FILEGROUP READ_WRITE

COLLATE

MODIFY FILEGROUP READ_ONLY

READ_ONLY

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

Modification du classement de la 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 DATABASE database_name 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.

Affichage des informations de bases de données

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.

SQL Server

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

Base de données SQL Azure

Seule la connexion principale au niveau du serveur (créée par le processus de configuration) ou les membres du rôle de base de données dbmanager peuvent modifier une base de données.

Remarque relative à la sécurité Remarque relative à la sécurité

Le propriétaire de la base de données ne peut pas modifier la base de données à moins d'être membre du rôle dbmanager.

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 jusqu'à SQL Server 2014.

USE master;
GO

CREATE DATABASE testdb
COLLATE SQL_Latin1_General_CP1_CI_AS ;
GO

ALTER DATABASE testDB
COLLATE French_CI_AI ;
GO
Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft