На чтение 7 мин. Просмотров 474 Опубликовано 02.05.2021
Иногда нам нужно изменить имя базы данных, потому что исходное имя было основано на проекте, который стал нерелевантным для данных, хранящихся в базе данных, или вы дали временное имя раньше, а теперь хотите его изменить. Независимо от причин переименования базы данных, в этой статье мы предложим способы переименования базы данных, какие ошибки могут возникнуть при этом и как их исправить.
Итак, чтобы переименуйте базу данных, вам необходимо воспользоваться одним из методов, описанных ниже. Прежде всего, мы должны создать базу данных, которую нужно переименовать.
Содержание
- Создание базы данных:
- Метод 1. Использование параметра переименования SSMS для переименования базы данных SQL Server
- Метод 2: Использование SSMS для переименования базы данных SQL Server
- Метод 3: Использование T-SQL для переименования базы данных SQL Server
- Метод 4. Использование отсоединения и присоединения для переименования SQL Server
- Использование SSMS для отключения и повторного подключения баз данных
- Ошибки, возникающие при переименовании базы данных через SSMS и при выполнении запроса:
- Ошибка 1: ошибка возникает при переименовании базы данных через SSMS
- Ошибка 2: ошибка возникает при переименовании базы данных с помощью запроса
- Решение:
- Заключение:
Создание базы данных:
Выберите любую базу данных в вашей системе управления SQL Server (SSMS) . Если у вас его нет, вы можете создать его, выполнив эту процедуру.
- Щелкните правой кнопкой мыши « Database » в «Обозреватель объектов» и выберите вариант «Новая база данных» .
- На левой панели появится окно
- выберите «Общие» , введите имя базы данных на правой панели и нажмите «ОК» . База данных будет создана
Существует несколько способов переименования базы данных в SQL Server. , которые подробно обсуждаются ниже вместе с версиями, поддерживаемыми любым конкретным методом. Позже мы также обсудим ошибки, возникающие при переименовании базы данных, и процедуру их исправления.
Метод 1. Использование параметра переименования SSMS для переименования базы данных SQL Server
Это самый простой способ переименовать базу данных. Для этого необходимо поступить следующим образом.
- Щелкните правой кнопкой мыши имя базы данных в обозревателе объектов.
- Выберите «переименовать ”, введите имя базы данных и нажмите
Метод 2: Использование SSMS для переименования базы данных SQL Server
Еще один простейший способ переименовать базу данных точно так же, как переименование любой папки в Windows. Чтобы сделать это, вы должны продолжать в том же духе. Щелкните базу данных, чтобы переименовать ее, как при переименовании папок Windows.
Метод 3: Использование T-SQL для переименования базы данных SQL Server
Для SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 и 2017 эта команда работает. Выполните следующий оператор.
ALTER DATABASE [test] MODIFY NAME = [test_cases]
Результатом будет «Имя базы данных ‘test_cases’ установлен ». Как показано на рисунке ниже.
Вы можете использовать Приведенная ниже команда T-SQL для изменения имени базы данных, если вы используете SQL Server 2000. В SQL 2005, 2008, 2008R2, 2012, 2014, 2016 и 2017 это все еще работает, но на каком-то этапе Microsoft утверждает, что это будет прекращено.
Метод 4. Использование отсоединения и присоединения для переименования SQL Server
Использование функции отсоединения и присоединения SQL Server может использоваться для удаления сначала базу данных и присвойте базе данных другое имя при повторном подключении базы данных. Для этого можно использовать следующие команды T-SQL
Отсоединение базы данных , выполнив следующий код:
EXEC sp_detach_db 'test', 'true'
Результат будет таким
Присоединение базы данных.
EXEC sp_attach_db @dbname = N'test ', @ filename1 = N'C: Program Files Microsoft SQL Server MSSQL12 .MSSQLSERVER MSSQL DATA test.mdf ', @ filename2 = N'C: Program Files Microsoft SQL Server MSSQL12.MSSQLSERVER MSSQL DATA test_log.ldf';
вывод будет следующим:
Использование SSMS для отключения и повторного подключения баз данных
Этого также можно достичь с помощью SSMS, выполнив следующие действия.
- Щелкните правой кнопкой мыши базу данных, выберите «задача» , затем нажмите
- Теперь нажмите «ОК»
- Теперь, чтобы присоединить базу данных, щелкните правой кнопкой мыши «Базы данных» в «Обозревателе объектов» и нажмите « Прикрепить ». Появится экран, нажмите «Добавить». Появится другое окно с именами баз данных в нем, как показано ниже, выберите «test».
- Но мы хотим добавить его как измененное имя базы данных «test_cases» , поэтому введите «test_case» в »Присоединить как “ поле. Теперь вот так. Это приведет к переименованию вашей базы данных.
Кроме того, мы обсудим ошибки, которые могут возникнуть при переименование базы данных. Вам понадобится монопольный доступ к базе данных, чтобы переименовать базу данных, что гарантирует, что база данных не имеет других подключений к базе данных. Но если это не так, это может привести к ошибкам, как показано ниже. Ошибка может возникнуть даже тогда, когда мы случайно открываем другое окно с тем же именем базы данных, которое необходимо переименовать.
Ошибки, возникающие при переименовании базы данных через SSMS и при выполнении запроса:
Эти две указанные ниже ошибки имеют два разных представления, потому что они возникают при переименовании базы данных с использованием двух разные методы. Ошибка 1 возникает при переименовании базы данных с помощью SSMS, а вторая ошибка возникает при переименовании базы данных с помощью запроса.. Обе ошибки показывают одно и то же сообщение «База данных не может быть монопольно заблокирована для выполнения операции», что означает, что ошибка возникает из-за того, что пользователю не предоставляется монопольный доступ к базе данных для переименования базы данных. Итак, чтобы переименовать базу данных, нам нужно установить базу данных в « однопользовательский режим ».
Ошибка 1: ошибка возникает при переименовании базы данных через SSMS
«Невозможно переименовать тест. (ObjectExplorer)
Дополнительная информация:
Ошибка переименования для теста базы данных (Microsoft.SqlServer.Smo)
Исключение при выполнении инструкции или пакета Transact-SQL.
(Microsoft.SqlServer.ConnectionInfo)
База данных не может быть монопольно заблокирована для выполнения операции. (Microsoft SQL Server, ошибка: 5030) »
Ошибка 2: ошибка возникает при переименовании базы данных с помощью запроса
« Msg 5030, уровень 16, состояние 2, строка 2. База данных не может быть заблокирована исключительно для выполнения операции ».
Прежде всего, мы воспроизведем вышеупомянутые сообщения об ошибках, чтобы понять, в каком сценарии они возникают и как их исправить.
- Верно -щелкните имя базы данных в «Обозревателе объектов»
- Выберите переименовать и введите имя базы данных и нажмите «ввод» , если это работает это нормально, но если это не работает и приводит к такой ошибке, как эта «Невозможно переименовать (ObjectExplorer). База данных не может быть монопольно заблокирована для выполнения операции. (Microsoft SQL Server, ошибка: 5030) », как показано на рисунке ниже, то у вас нет монопольного доступа к базе данных для переименования базы данных.
- Эта ошибка означает, что SQL Server не позволит переименовать базу данных до тех пор, пока она не находится в «однопользовательском режиме».
- Итак, вам понадобится монопольный доступ к базе данных, чтобы переименовать базу данных, чтобы понять это, откройте другое окно запроса и выберите базу данных «test»
- Теперь в первом окне попробуйте выполнить следующий код.
-
ALTER DATABASE [test] MODIFY NAME = [test_cases]
- Но это может привести к появлению такого сообщения об ошибке: «Msg 5030, уровень 16 , Состояние 2, строка 2. Невозможно заблокировать базу данных исключительно для выполнения операции ».
Решение:
Это настроит заставить базу данных откатить все ожидающие транзакции и установить ее в «однопользовательский режим» , а затем обратно в «многопользовательский режим».
- Чтобы исправить это, нам нужно закрыть все другие окна, в которых используется то же имя базы данных, или установить базу данных в «single пользовательский режим » с помощью следующих команд.
-
Изменить набор тестов базы данных single_user с немедленным откатом goEXEC sp_renamedb 'test', 'test_cases'goalter database test_cases set multi_usergo
- Результат будет примерно таким: «Откат неквалифицированных транзакций. Предполагаемое завершение отката: 0%. Выполняется откат неквалифицированных транзакций. Предполагаемое завершение отката: 100%. Установлено имя базы данных test_cases ».
Заключение:
Есть несколько способов переименовать базу данных. Если один способ не работает для вас. Вы можете перейти к другому. Следует иметь в виду, что при изменении имен баз данных этими способами просто переименовывают базу данных. «Физические файлы» по-прежнему имеют те же имена. Как видно на рисунке ниже, мы изменили имя базы данных с «test» на «test_cases» , но в физическом расположении оно осталось прежним. .
Итак, самый простой подход – использовать решение 4, если вы также хотите изменить имя файла. . Вы должны сначала изменить имена физических файлов перед повторным присоединением файлов, а затем указать переименованные файлы при повторном подключении.
Более того, помимо изменения имен баз данных, вам также потребуется чтобы проверить, есть ли в коде вашего приложения ссылки на имя базы данных. Это может быть как внутри SQL Server, так и вне SQL Server.
Довольно редко, но возникают ситуации, когда требуется сменить имя у базы данных.
SQL Server позволяет это сделать (даже на работающей базе), но необходимо следовать технологии переименования.
Сразу отметим, что в этой статье мы не будем рассматривать работу с графическим интерфейсом. Переименование требует монопольного доступа к базе данных и в таком режиме она окажется недоступной для непосредственного управления при помощи средств, имеющих графический интерфейс. Поэтому весь процесс переименования будем проводить исключительно вручную на Transact-SQL.
Последовательность действий такова:
- Переводим базу данных в монопольный режим;
- Переименовываем базу данных;
- Переименовываем файлы данных и журнала транзакций;
- Переводим базу данных обратно в многопользовательский режим;
В поздних версиях SQL Server (например, 2016) первый и последний этапы выполняются автоматически непосредственно в ходе переименования базы данных и весь процесс сводится только к собственно переименованию самой базы данных и её файлов.
Более того в этих версиях попытка перевода базы данных в монопольный режим перед переименованием распознаётся как синтаксическая ошибка.
Ниже приведены оба варианта кода на Transact-SQL.
Переименование базы данных в старых версиях:
— Переводим БД в монопольный режим 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’); |
Переименование базы данных в новых версиях:
— Переименовываем БД sp_renamedb ‘test’, ‘test2’; — Переименовываем файлы ALTER DATABASE [test2] MODIFY FILE (NAME = ‘test’, NEWNAME = ‘test2’); ALTER DATABASE [test2] MODIFY FILE (NAME = ‘test_log’, NEWNAME = ‘test2_log’); |
При переименовании базы данных также необходимо учитывать, что оно однозначно вызовет сбой в работе программного обеспечения, которое её использует. Ведь в настройках указано её прежнее имя. Поэтому, если подобные действия затрагивают не только вас, их следует планировать и согласовывать заблаговременно.
How to rename a MySQL database?
The MySQL online manual has said about the RENAME DATABASE command (this documentation page has been removed by Oracle some time ago):
This statement was added in MySQL 5.1.7 but was found to be dangerous and
was removed in MySQL 5.1.23.
So, how to proceed? The rationale: We started with a code name for the project and want the database name now to reflect the definitive name of the project.
asked Oct 27, 2010 at 7:35
3
From this blog post by Ilan Hazan:
In MySQL there is no support for database renaming.
In order to rename a MySQL database you can do one of the following:
-
Create new database and rename all tables in the old database to be in the new database:
CREATE database new_db_name; RENAME TABLE db_name.table1 TO new_db_name.table1, db_name.table2 TO new_db_name.table2; DROP database db_name;
-
In Linux shell, use mysqldump to back up the old database, then restore the dumped database under a new name using the MySQL utility. Finally, use the drop database command to drop the old database. This option can perform badly for large database.
mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.sql mysql -uxxxx -pxxxx -h xxxx -e "CREATE DATABASE new_db_name" mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.sql mysql -uxxxx -pxxxx -h xxxx -e "DROP DATABASE db_name"
-
Write a simple Linux script (my favorite solution)
#!/bin/bash dbuser=xxxx dbpass=xxxx olddb=xxxx newdb=xxxx mysqlconn="mysql -u $dbuser -p$dbpass -h localhost" $mysqlconn -e "CREATE DATABASE `$newdb`" params=$($mysqlconn -N -e "SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb'") for name in $params; do sql="RENAME TABLE `$olddb`.`$name` to `$newdb`.`$name`" echo "$sql"; $mysqlconn -e "$sql"; echo "Renamed $olddb.$name to $newdb.$name"; done; #$mysqlconn -e "DROP DATABASE `$olddb`"
-
If all your tables are MyISAM, you can rename the old database folder name:
- Shut down the MySQL server,
- Rename the database folder name to the new name,
- Start the MySQL server.
5
MySQL kinda sucks for this. The only solid reliable solution is to use phpMyAdmin
.
Login
—> click Scheme
—> click Operations
—> find Rename database to:
—> write NewName
> click Go
.
As simple as that. All permissions are carried over.
HopelessN00b
53.6k32 gold badges134 silver badges208 bronze badges
answered Sep 27, 2012 at 15:40
1
I tend to create a new database, and then dump the tables out of the old one, into a .sql file (with mysqldump), edit the file, do some kind of s/old_database/new_database/g
and then reimport it into the new db.
Probably not the best way to do it, but it does work.
answered Oct 27, 2010 at 7:42
Tom O’ConnorTom O’Connor
27.5k10 gold badges72 silver badges148 bronze badges
I used following method to rename the database
-
take backup of the file using mysqldump or any DB tool eg heidiSQL,mysql administrator etc
-
Open back up (eg backupfile.sql) file in some text editor.
-
Search and replace the database name and save file.
-
Restore the edited sql file
answered Sep 11, 2013 at 5:26
If you have chance to use a MySQL Management-Tool (e.g. phpMyAdmin) then you can rename it easily as they create the query for you.
In phpMyAdmin they also create each table and insert the data by «INSERT INTO… SELECT * FROM…». So by chaining they copy the data over.
If you can’t do this I would recommend to make a dump and re-import the sql-File into a new database.
Good luck!
Regards,
Ben.
answered Oct 27, 2010 at 8:53
How can I rename the MySQL database name using query?
I tried rename
database via phpmyadmin and getting the following error,
SQL query:
RENAME DATABASE test TO test_bkp
MySQL said:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DATABASE test To test_bkp' at line 1
asked Nov 30, 2012 at 10:55
Ramesh MoorthyRamesh Moorthy
6491 gold badge7 silver badges24 bronze badges
1
In phpmyadmin you can just click on your database, then go to the Operations tab which lets you rename it.
answered Nov 30, 2012 at 10:58
Lucas ArrefeltLucas Arrefelt
3,8694 gold badges41 silver badges71 bronze badges
2
It says here that:
This statement was added in MySQL 5.1.7 but was found to be dangerous
and was removed in MySQL 5.1.23. It was intended to enable upgrading
pre-5.1 databases to use the encoding implemented in 5.1 for mapping
database names to database directory names (see Section 9.2.3,
“Mapping of Identifiers to File Names”). However, use of this
statement could result in loss of database contents, which is why it
was removed. Do not use RENAME DATABASE in earlier versions in which
it is present.
You can import all data into a new database then delete the old one.
It is also possible to use the RENAME TABLE
statement using same from/to table name but different from/to database. There are a few catches.
CREATE DATABASE `test_bkp`;
RENAME TABLE
`test`.`table1` TO `test_bkp`.`table1`,
`test`.`table2` TO `test_bkp`.`table2`,
`test`.`table3` TO `test_bkp`.`table3`;
answered Nov 30, 2012 at 11:00
1
You can do this in MySQL < 5.1.23
with
RENAME {DATABASE | SCHEMA} db_name TO new_db_name;
In later versions have a look at
ALTER {DATABASE | SCHEMA} [db_name]
answered Nov 30, 2012 at 10:57
Alex2phpAlex2php
9,9071 gold badge16 silver badges22 bronze badges
2
Ok, so if the rename option doesn’t show, here a quick way of cloning a database using phpMyAdmin:
- Open the database you want to copy
- Click the Operations tab.
- where it says «Copy database to:» type in the name of the new database.
Select «structure and data» to copy everything or «Structure only»
Check the box «CREATE DATABASE before copying» to create a new database.
Check the box «Add AUTO_INCREMENT value.»
Click on the Go button to proceed.
NB before deleting the old database, make sure that passwords have also copied over.
answered Dec 2, 2014 at 6:14
in wamp server
click on databases
then choose your database
from header menu choose operations
make the new name
it will rename the database
but actually it create a new database copy all the data then drop the old data base
answered Dec 22, 2016 at 7:24
AmadoAmado
3711 silver badge15 bronze badges
- Export current database.
- create a new database with a name you want.
- import old database file on the new database.
answered Feb 9, 2018 at 8:30
Well, it’s possible to rename your database but here’s the logic behind the rename option.
1. Xampp creates a new database with the name
2. Xampp copies all table and data in it from the previous database
3. Xampp migrates data to the new database table and drops the previous database
Steps to rename Database
1. Click the Operations option in the nav pane
2. Find the ' Rename database to ' Spot, and input new name in the input field
3. Tick the ' Adjust privileges ' checkbox
4. Click go
I hope this works!
answered Apr 20, 2018 at 20:04
you can export your databse table, create a new one and import table to the new database!
also you can rename your data base using phpmyadmin by selecting your database and click on operations tab and rename your database!
the last and not recommended way is create a new databse and use this, but you may lost your data!
CREATE DATABASE new_db_name / DROP DATABASE old_db_name
answered Jun 19, 2016 at 9:52
HamidHamid
1,4472 gold badges18 silver badges32 bronze badges
1