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 ?

420voto

Squid Points 720

Vous pouvez essayer de configurer 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

85voto

Samiey Mehdi Points 3683
  1. Configurez 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. Configurez la base de données en mode multi-utilisateur :

    ALTER DATABASE NewName
    SET MULTI_USER WITH ROLLBACK IMMEDIATE

59voto

Justin Woodmancy Points 762

En SQL Server Management Studio (SSMS) :

Vous pouvez également faire un clic droit sur votre base de données dans le Explorateur d'objets et aller à Propriétés . De là, allez à Options . Faites défiler vers le bas et réglez Restreindre l'accès a SINGLE_USER . Changez le nom de votre base de données, puis revenez en arrière et remettez-le à MULTI_USER .

23voto

Andrey Gordeev Points 6348

Essayez d'abord de fermer toutes les connexions à votre base de données :

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 aquí

7voto

t_plusplus Points 452

Ça 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

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