web-dev-qa-db-fra.com

Erreur lors du changement de nom de la 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 cela montre une erreur lors de l’excursion:

Msg 5030, niveau 16, état 2, ligne 1
La base de données ne peut pas être exclusivement verrouillée pour effectuer l'opération.

Quelque chose ne va pas avec ma requête?

136
Vikram Bose

Vous pouvez essayer de définir la base de données en mode mono-utilisateur.

https://stackoverflow.com/a/11624/2408095

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE    
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
273
Squid
  1. Définissez la base de données en mode unique: 

    ALTER DATABASE dbName
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    
  2. Essayez de renommer la base de données:

    ALTER DATABASE dbName MODIFY NAME = NewName
    
  3. Définissez la base de données en mode multi-utilisateur:

    ALTER DATABASE NewName
    SET MULTI_USER WITH ROLLBACK IMMEDIATE
    
47
Samiey Mehdi

Essayez de fermer toutes les connexions à votre base de données en premier:

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER

Tiré de ici

18
Andrey Gordeev

Vous pouvez également cliquer avec le bouton droit sur votre base de données dans l'Explorateur d'objets et accéder à Propriétés. De là, allez dans Options. Faites défiler à fond et définissez Restreindre l'accès sur SINGLE_USER. Changez le nom de votre base de données, puis revenez dans et réglez-le sur MULTI_USER.

16
Justin Woodmancy

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 peut vous aider à résoudre le problème: http://msdn.Microsoft.com/en-IN/library/ms345378(v=sql.105).aspx lien: http://msdn.Microsoft.com/en-us/library/ms345378.aspx

3
Dhwani

Cela l'a fait pour moi: 

USE [master];
GO
ALTER DATABASE [OldDataBaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_renamedb N'OldDataBaseName', N'NewDataBaseName';


-- Add users again
ALTER DATABASE [NewDataBaseName] SET MULTI_USER
GO
2
t_plusplus

Changer 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 utilisée.

Pour fermer une connexion même après la conversion en mode mono-utilisateur, essayez: 

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

Examinez les résultats et consultez 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 en exister qu'une, car la base de données est maintenant en mode mono-utilisateur)

KILL connection_ID

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

2
slayernoah

1.Base de données définie 1er mode mono-utilisateur

ALTER DATABASE BOSEVIKRAM SET SINGLE_USER AVEC ROLLBACK IMMEDIATE

2.NOMMER LA BASE DE DONNEES 

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

3.MODE DE CONFIGURATION MODE MULIUSER

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER AVEC ROLLBACK IMMEDIATE

1
K GANGA

Une autre façon de fermer toutes les connexions:

Outils d'administration> Afficher les services locaux

Arrêter/Démarrer le service "SQL Server (MSSQLSERVER)"

0
Chronozoa
  1. Définissez la base de données en mode unique:

ALTER DATABASE dbName SET SINGLE_USER WITH ROLLBACK IMMEDIATE

Cette instruction SQL modifiera le contrôle d'accès de la base de données de plusieurs utilisateurs à un seul utilisateur (c'est-à-dire vous) et fera de vous l'unique utilisateur de la base de données. Vous pouvez maintenant modifier le nom de votre base de données.

2. Nommez la base de données:

ALTER DATABASE dbName MODIFY NAME = NewName

Cette déclaration SQL effectue le travail crucial pour changer votre nom de base de données en un nom de votre choix.

3.Réglez la base de données en mode multi-utilisateur:

ALTER DATABASE NewName SET MULTI_USER WITH ROLLBACK IMMEDIATE

Après avoir changé notre nom de base de données, nous modifions simplement le contrôle d’accès à son emplacement actuel, qui est par défaut Multi_user.

Remarque: Si des erreurs subsistent, lisez cet article pour référence ultérieure Comment: renommer une base de données (Sql Server Management Studio)

0
Tahir77667
use master

ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE  

exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
0
KamalDeep