Довольно редко, но возникают ситуации, когда требуется сменить имя у базы данных.
SQL Server позволяет это сделать (даже на работающей базе), но необходимо следовать технологии переименования.
Сразу отметим, что в этой статье мы не будем рассматривать работу с графическим интерфейсом. Переименование требует монопольного доступа к базе данных и в таком режиме она окажется недоступной для непосредственного управления при помощи средств, имеющих графический интерфейс. Поэтому весь процесс переименования будем проводить исключительно вручную на Transact-SQL.
Последовательность действий такова:
- Переводим базу данных в монопольный режим;
- Переименовываем базу данных;
- Переименовываем файлы данных и журнала транзакций;
- Переводим базу данных обратно в многопользовательский режим;
В поздних версиях SQL Server (например, 2016) первый и последний этапы выполняются автоматически непосредственно в ходе переименования базы данных и весь процесс сводится только к собственно переименованию самой базы данных и её файлов.
Более того в этих версиях попытка перевода базы данных в монопольный режим перед переименованием распознаётся как синтаксическая ошибка.
Ниже приведены оба варианта кода на Transact-SQL.
Переименование базы данных в старых версиях:
1 2 3 4 5 6 7 |
-- Переводим БД в монопольный режим ALTER DATABASE [test] SET SINGLE_USER; -- Переименовываем БД sp_renamedb 'test', 'test2'; -- Переименовываем файлы ALTER DATABASE [test2] MODIFY FILE (NAME = 'test', NEWNAME = 'test2'); ALTER DATABASE [test2] MODIFY FILE (NAME = 'test_log', NEWNAME = 'test2_log'); |
Переименование базы данных в новых версиях:
1 2 3 4 5 |
-- Переименовываем БД sp_renamedb 'test', 'test2'; -- Переименовываем файлы ALTER DATABASE [test2] MODIFY FILE (NAME = 'test', NEWNAME = 'test2'); ALTER DATABASE [test2] MODIFY FILE (NAME = 'test_log', NEWNAME = 'test2_log'); |
Добавить комментарий