Ошибка при переименовании базы данных в SQL Server 2008 R2

Я использую этот запрос для переименования базы данных:

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

Но при выдаче ошибки возникает ошибка:

Msg 5030, уровень 16, состояние 2, строка 1
База данных не может быть заблокирована исключительно для выполнения операции.

Что-то не так с моим запросом?

Ответ 1

Вы можете попробовать установить базу данных в однопользовательский режим.

fooobar.com/questions/25463/...

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

Ответ 2

  • Установите базу данных в один режим:

    ALTER DATABASE dbName
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    
  • Попробуйте переименовать базу данных:

    ALTER DATABASE dbName MODIFY NAME = NewName
    
  • Установите базу данных в режим Многопользовательский режим:

    ALTER DATABASE NewName
    SET MULTI_USER WITH ROLLBACK IMMEDIATE
    

Ответ 3

Сначала попробуйте закрыть все подключения к вашей базе данных:

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

Взято из здесь

Ответ 4

Вы также можете щелкнуть правой кнопкой мыши свою базу данных в Обозревателе объектов и перейти в "Свойства". Оттуда перейдите в раздел "Параметры". Прокрутите весь путь вниз и установите параметр Ограничить доступ к SINGLE_USER. Измените имя своей базы данных, затем вернитесь и верните его в MULTI_USER.

Ответ 6

Измените базу данных на однопользовательский режим, как показано в других ответах

Иногда даже после преобразования в однопользовательский режим может использоваться только подключение к базе данных.

Чтобы закрыть соединение даже после преобразования в однопользовательский режим, попробуйте:

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

Посмотрите на результаты и посмотрите идентификатор соединения с соответствующей базой данных.

Затем используйте приведенную ниже команду, чтобы закрыть это соединение (там должен быть только один, так как база данных теперь находится в однопользовательском режиме)

KILL connection_ID

Заменить connection_id с идентификатором в результатах первого запроса

Ответ 7

Это сделало это для меня:

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

Ответ 8

1. набор базы данных 1-й однопользовательский режим

ALTER DATABASE BOSEVIKRAM УСТАНОВИТЬ SINGLE_USER WITH ROLLBACK IMMEDIATE

2. ИЗМЕНИТЬ БАЗУ ДАННЫХ

ALTER DATABASE BOSEVIKRAM ИЗМЕНИТЬ ИМЯ = [BOSEVIKRAM_Deleted]

3. НАСТРОЙКА МУЛЬТИЗИРОВАННОГО УСТРОЙСТВА

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER WITH ROLLBACK IMMEDIATE

Ответ 9

use master

ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE  

exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER

Ответ 10

Другой способ закрыть все соединения:

Администрирование > Просмотр локальных служб

Остановить/запустить службу SQL Server (MSSQLSERVER)