2015-06-05 2 views
26

У меня есть база данных под названием «ip_ent_site». И я хочу переименовать его на «ip_ent_site1», например.переименовать имя базы данных в студии управления сервером sql 2014

enter image description here

я сделал правой кнопкой мыши и переименовывать, он держит на неудачу. Это сообщение об ошибке:

enter image description here

Любой человек может помочь?

+0

@JasonClark - I подумайте, что ссылки на эту ссылку ссылаются на эту страницу ... –

ответ

7

Перед переименованием, установить базу данных в режиме одного пользователя MSDN

USE master; 
GO 
ALTER DATABASE ip_ent_site 
SET SINGLE_USER 
WITH ROLLBACK IMMEDIATE; 

Затем переименуйте его

USE master 
GO 
ALTER DATABASE ip_ent_site 
Modify Name = ip_ent_site1 
GO 

А затем положить его обратно в мульти режиме пользователя

ALTER DATABASE ip_ent_site1 
SET MULTI_USER; 
+1

Установка базы данных только для чтения не требуется, если вы временно установите ее на single_user. Кроме того, вы не поставили скрипт, чтобы удалить его из чтения только! – ErikE

+0

Вы правы @ErikE. Я отредактировал ответ. Хороший улов. – sqluser

0
системы

Execute процедуры sp_who2, чтобы узнать, какие сеансы используют данные а затем закрыть приложения или убить сеансы командой kill.

25

Это потому, что есть открытые транзакции. Если эти операции могут быть убиты, то это можно легко сделать с этим SQL

ALTER DATABASE ip_ent_site 
SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 
sp_rename 'ip_ent_site', 'new_db_name' ,'DATABASE'; 
GO 
ALTER DATABASE new_db_name 
SET MULTI_USER 
GO 
+1

Можете ли вы объяснить, что каждое утверждение мне очень интересно знать, заранее спасибо –

+0

Первый оператор устанавливает БД одному пользователю и убивает все открытые соединения и откатывает все открытые транзакции. Второй оператор переименовывает БД. Последний оператор открывает переименованную БД для пользовательских подключений. – Raj

+3

Downvoting в порядке. Но может ли кто-нибудь, кто заверил, также должен объяснить, чтобы мы все узнали что-то новое? – Raj

10

Причина в том, что база данных должна предотвратить любое другое соединение/транзакции БД в то время как вы его переименования.

Простой сценарий, чтобы получить блокировку на БД:

ALTER DATABASE [ip_ent_site] SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
GO 

ALTER DATABASE [ip_ent_site] MODIFY NAME = [ip_ent_site_new] 
GO 

ALTER DATABASE [ip_ent_site_new] SET MULTI_USER;  
GO 
+0

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

+0

Это действительный SQL и выполняет задание, за исключением того, что третий оператор должен использовать новое имя. Интересно, кто забил и почему. – Raj

1

Этот самый простой способ переименовать имя базы данных. Перед запуском этой команды убедитесь, что вы закрыли все окна запросов.

EXEC sp_renamedb 'предыдущее_имя', 'NEW_NAME'

+1

Nice one-liner, но: 'Эта функция будет удалена в будущей версии Microsoft SQL Server. Избегайте использования этой функции в новых разработках и планируйте изменять приложения, которые в настоящее время используют эту функцию. Вместо этого используйте ALTER DATABASE MODIFY NAME. ' – msysmilu

3

Чтобы включить способность

правой кнопкой мыши и переименовать

БД:

  1. Закрыть все запрос окна
  2. Щелкните правой кнопкой мыши & переименования DB
0

Rename имя SQLDatabase Использование Query

использование [мастер] идти

Alter Database Old_database_name Изменить имя = New_database_name

или

sp_renameDB 'old_dbname', ' new_dbname '

Смежные вопросы