Tous les produits
Search
Centre de documentation

ApsaraDB RDS:Gérer les bases de données à l'aide de commandes SQL

Dernière mise à jour :Aug 19, 2026

ApsaraDB RDS for SQL Server restreint certaines opérations natives de SQL Server afin de préserver la stabilité des instances et l'intégrité des sauvegardes. Cette rubrique explique comment créer, supprimer et renommer des bases de données en T-SQL, détaille les opérations ALTER DATABASE bloquées et présente les alternatives appropriées pour chaque cas.

Prérequis

Avant de commencer, assurez-vous de disposer :

  • D'une instance ApsaraDB RDS for SQL Server exécutant SQL Server 2012 ou une version ultérieure

Créer une base de données

Exécutez l'instruction suivante :

CREATE DATABASE TestDb
RDS attribue automatiquement le chemin d'accès aux fichiers de données. Ne spécifiez pas de chemin d'accès dans l'instruction.

Pour afficher les chemins d'accès aux fichiers de données et aux journaux de toutes les bases de données de l'instance :

SELECT db_name(database_id), physical_name
FROM sys.master_files;

Supprimer une base de données

Avertissement

Sauvegardez la base de données avant de la supprimer. Une base de données supprimée ne peut être récupérée qu'à partir d'une sauvegarde.

Exécutez l'instruction suivante :

DROP DATABASE [TestDb]

Si aucune sauvegarde n'existe au moment de la suppression, RDS affiche un message informatif accompagné de la confirmation de réussite :

DROP DATABASE [TestDb]
-------------------------------------------------------------------------------------------------
Kindly reminder:
    your database [TestDb] does not exist any backup set.
-------------------------------------------------------------------------------------------------
Login User [Test11] has dropped database [TestDb] .

Renommer une base de données

Utilisez la procédure stockée sp_rds_modify_db_name pour renommer une base de données. Cette procédure ne nécessite aucune autorisation supplémentaire et peut être exécutée par un compte standard. N'utilisez pas la commande native ALTER DATABASE ... MODIFY NAME ni l'interface graphique de SQL Server Management Studio (SSMS) : les deux méthodes échouent avec une erreur d'autorisation, car RDS n'accorde par défaut aux comptes que l'autorisation CREATE DATABASE sur la base de données master, ce qui est insuffisant pour renommer une base de données.

Éditions d'instances prises en charge :

  • Série Haute disponibilité (HA)

  • Édition Cluster

  • Série Basic

Syntaxe :

USE db
GO
EXEC sp_rds_modify_db_name 'db', 'new_db'
GO

Paramètre

Description

Premier paramètre

Nom d'origine de la base de données

Deuxième paramètre

Nouveau nom de la base de données

Sur les instances de la série Haute disponibilité (HA) et de l'édition Cluster, le renommage d'une base de données déclenche une reconstruction automatique de la configuration de réplication entre les instances primaire et secondaire. Durant cette opération, RDS sauvegarde et restaure les données de la base de données. Si la base de données est volumineuse, vérifiez que l'instance dispose d'un espace de stockage libre suffisant avant de la renommer.

Restrictions de modification des bases de données

La plupart des attributs ALTER DATABASE peuvent être modifiés. Les opérations suivantes sont bloquées.

Déplacer une base de données vers un autre chemin d'accès de fichier

La spécification d'un chemin d'accès invalide dans ALTER DATABASE ... MODIFY FILE renvoie une erreur :

ALTER DATABASE [TestDb] MODIFY FILE (NAME = N'TestDb', FILENAME = N'E:\KKKK\DDD\DATA\TestDb.mdf')
Msg 50000, Level 16, State 1, Procedure ******, Line 152
The file path [
E:\KKKK\DDD\DATA\TestDb.mdf ] is invalid, please specify correct path folder [ E:\mmm\gggg\ ].
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.

Modifier le modèle de récupération pour utiliser un modèle autre que FULL

RDS impose le modèle de récupération FULL afin de maintenir la chaîne des journaux pour les restaurations à un instant donné. Toute tentative de basculement vers SIMPLE :

ALTER DATABASE [TestDb]  -- [TestDb] is the database name.
SET RECOVERY SIMPLE

RDS bloque la modification et rétablit le modèle de récupération sur FULL :

Msg 50000, Level 16, State 1, Procedure ******, Line 46
Login User [Test11] can't change database [TestDb] recovery model.
Msg 3609, Level 16, State 2, Line 2
The transaction ended in the trigger. The batch has been aborted.
Important

Si le journal des transactions est saturé, la seule option de réduction consiste à tronquer la chaîne des journaux. Si vous devez impérativement passer au modèle de récupération SIMPLE en situation d'urgence — par exemple pour tronquer un journal trop volumineux — sachez que cette action interrompt la chaîne de sauvegarde. Toutes les tâches de restauration à un instant donné couvrant le moment de l'interruption échoueront. Après l'exécution des instructions, vous pouvez ignorer les messages d'erreur ; la chaîne des journaux est alors interrompue et le modèle est défini sur SIMPLE. Vous assumez la responsabilité des conséquences.

Rétablir une base de données en ligne (ONLINE) après l'avoir mise hors ligne (OFFLINE)

L'exécution directe de ALTER DATABASE [TestDb] SET ONLINE après la mise hors ligne d'une base de données renvoie :

Msg 5011, Level 14, State 9, Line 1
User does not have permission to alter database 'TestDb', the database does not exist, or the database is not in a state that allows access checks.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.

Utilisez plutôt la procédure stockée sp_rds_set_db_online :

EXEC sp_rds_set_db_online 'TestDb'

Erreurs courantes

Erreur lors de la modification du nom d'une base de données RDS SQL Server avec la commande SQL native ALTER DATABASE ou l'interface graphique SSMS ?

Description du problème

L'utilisation de ALTER DATABASE ... MODIFY NAME renvoie :

Msg 5011, Level 14, State 2, Line 4
User does not have permission to alter database 'jmdb01', the database does not exist, or the database is not in a state that allows access checks.

image

L'utilisation de l'interface graphique SSMS renvoie : unable to rename db_name.

image

Par défaut, tous les comptes — y compris les comptes standard et privilégiés — ne disposent que de l'autorisation CREATE DATABASE sur la base de données master. Cette autorisation est insuffisante pour renommer une base de données.

Si vous souhaitez comprendre le modèle d'autorisations complet, le tableau suivant présente les autorisations effectives de renommage lors de l'utilisation d'octrois de niveau SA. L'activation des autorisations SA n'est pas recommandée ; utilisez plutôt sp_rds_modify_db_name.

Autorisation

Portée du renommage

CREATE DATABASE sur master uniquement

Impossible de renommer toute base de données

CREATE ANY DATABASE au niveau de l'instance

Peut renommer les bases de données dont le compte est propriétaire (doit être le propriétaire de la base de données, et non simplement membre du rôle db_owner)

ALTER ANY DATABASE au niveau de l'instance

Peut renommer toute base de données sur laquelle le compte dispose de l'autorisation ALTER

Cause

  • Par défaut, les comptes utilisateur dans ApsaraDB RDS for SQL Server, y compris les comptes standard et privilégiés, ne disposent que de l'autorisation CREATE DATABASE sur la base de données master. Cette autorisation est insuffisante pour renommer une base de données. Par conséquent, vous ne pouvez pas renommer directement une base de données à l'aide de SQL natif ou de l'interface graphique SSMS.

  • (Non recommandé) Vous pouvez activer les autorisations d'administrateur système (SA) pour renommer une base de données. Ensuite, vous pouvez utiliser un compte disposant des autorisations SA pour accorder manuellement les autorisations requises à un compte standard ou privilégié. Les autorisations sont décrites ci-dessous :

    • Un compte disposant uniquement de l'autorisation CREATE DATABASE sur la base de données master ne peut renommer aucune base de données.

    • Un compte disposant de l'autorisation CREATE ANY DATABASE au niveau de l'instance peut renommer les bases de données dont il est propriétaire. Remarque : l'utilisateur doit être le propriétaire de la base de données, et pas seulement membre du rôle db_owner. Pour plus d'informations, consultez Modifier les propriétés de la base de données (informations avancées : db_owner).

    • Un compte disposant de l'autorisation ALTER ANY DATABASE au niveau de l'instance peut renommer toute base de données sur laquelle il dispose de l'autorisation ALTER.

Solution

Utilisez la procédure stockée sp_rds_modify_db_name fournie par ApsaraDB RDS for SQL Server pour renommer une base de données en toute sécurité. Cette procédure ne nécessite aucune autorisation supplémentaire et peut être exécutée par des comptes standard.

Commande T-SQL

sp_rds_modify_db_name

Éditions d'instances prises en charge

édition Basic, édition Haute disponibilité et édition Cluster

Description

Cette procédure stockée renomme une base de données. Avant d'exécuter cette procédure, assurez-vous que le compte utilisé pour la connexion dispose des autorisations requises sur la base de données cible et que la base de données est en ligne.

Sur les instances des éditions Haute disponibilité et Cluster, le renommage d'une base de données reconstruit automatiquement la configuration de réplication. Ce processus implique des opérations de sauvegarde et de restauration. Si vous renommez une base de données volumineuse, surveillez l'espace de stockage disponible sur l'instance. Si l'espace de stockage est insuffisant, vous devrez peut-être augmenter la capacité.

Utilisation

USE master
GO
EXEC sp_rds_modify_db_name 'db','new_db'
GO
  • Le premier paramètre correspond au nom d'origine de la base de données.

  • Le deuxième paramètre correspond au nouveau nom de la base de données.

Étapes suivantes