223 votes

Erreur lors du renommage d'une base de données dans SQL Server 2008 R2

J'utilise cette requête pour renommer la base de données :

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

Mais il affiche une erreur lors de l'excution :

Msg 5030, Niveau 16, Etat 2, Ligne 1
La base de données n'a pas pu être verrouillée de manière exclusive pour effectuer l'opération.

Y a-t-il un problème avec ma requête ?

5voto

DH__ Points 2210

C'est parce que quelqu'un d'autre accède à la base de données. Mettez la base de données en mode mono-utilisateur puis renommez-la.

Ce lien pourrait vous aider :
http://msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx

et aussi :
http://msdn.microsoft.com/en-us/library/ms345378.aspx

5voto

K GANGA Points 41

1.base de données set 1st single user mode

ALTER DATABASE BOSEVIKRAM METTRE SINGLE_USER AVEC ROLLBACK IMMÉDIAT

2.RENOMMER LA BASE DE DONNÉES

ALTER DATABASE BOSEVIKRAM MODIFIER LE NOM = [BOSEVIKRAM_Deleted]

3.DATABAE SET MULIUSER MODE

ALTER DATABASE BOSEVIKRAM_Supprimé SET MULTI_USER AVEC ROLLBACK IMMÉDIAT

3voto

slayernoah Points 294

Passez la base de données en mode mono-utilisateur comme indiqué dans les autres réponses.

Parfois, même après la conversion en mode mono-utilisateur, la seule connexion autorisée à la base de données peut être en cours d'utilisation.

Pour fermer une connexion même après avoir été converti en mode utilisateur unique, essayez :

select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
  and dbid = DB_ID('BOSEVIKRAM')

Regardez les résultats et voyez l'ID de la connexion à la base de données en question.

Ensuite, utilisez la commande ci-dessous pour fermer cette connexion (il ne devrait y en avoir qu'une seule puisque la base de données est maintenant en mode mono-utilisateur)

KILL connexion_ID

Remplacer connection_id par l'ID dans les résultats de la 1ère requête

2voto

remondo Points 87

Pour moi, la raison pour laquelle je n'ai pas pu renommer une base de données est qu'il y a des connexions actives. Je mets d'abord la base de données hors ligne, en cochant la case "Drop All Active Connections". Ensuite, je la remets en ligne et je peux déjà renommer la base de données. Take Offline

enter image description here

0voto

Chronozoa Points 50

Une autre façon de fermer toutes les connexions :

Outils administratifs > Afficher les services locaux

Arrêtez/Démarrez le service "SQL Server (MSSQLSERVER)".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X