Как да преименувам база данни на SQL Server?

Понякога трябва да променим името на базата данни, тъй като първоначалното име се основава на проекта, който е станал без значение за данните, съхранявани в базата данни, или сте дали временно име преди и сега искате да го промените. Независимо от причините за преименуването на базата данни, в тази статия ще измислим начини за това как да преименуваме базата данни, каква грешка може да възникне при това и как да ги поправим.

Така че, за да преименувате базата данни, трябва да следвате един от методите, както е обсъдено по-долу. На първо място, трябва да създадем база данни, която трябва да бъде преименувана.

Създаване на база данни:

Изберете всяка база данни във вашата система за управление на SQL Server (SSMS) . Ако нямате такъв, можете да го създадете, като следвате тази процедура.

  1. Щракнете с десния бутон върху „ База данни “ в „Object Explorer“ и изберете опция „Нова база данни“
  2. Ще се появи прозорец в левия прозорец
  3. изберете „General“ от името на базата данни отдясно и натиснете „ok“ . Базата данни ще бъде създадена

Съществуват множество методи за преименуване на база данни в SQL Server, които са разгледани подробно по-долу заедно с версии, поддържани от всеки конкретен метод. По-късно ще обсъдим и грешки, които възникват при преименуване на базата данни, както и процедура за тяхното отстраняване.

Метод 1: Използване на SSMS опция за преименуване за преименуване на базата данни на SQL Server

Това е най-простият начин за преименуване на база данни. Трябва да продължите така, за да го направите.

  1. Щракнете с десния бутон върху името на базата данни от изследователя на обекти
  2. Изберете „преименуване“ , въведете име на база данни и натиснете „enter“

Метод 2: Използване на SSMS за преименуване на базата данни на SQL Server

Друг най-прост начин за преименуване на база данни, точно като преименуване на която и да е папка в Windows. Трябва да продължите така, за да го направите. Кликнете върху базата данни, за да я преименувате точно като преименуване на Windows папки.

Метод 3: Използване на T-SQL за преименуване на базата данни на SQL Server

За SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 и 2017, тази команда работи. Изпълнете следното изявление.

ИЗМЕНЕТЕ БАЗАТА ДАННИ [тест] ИЗМЕНЕТЕ ИМЕ = [случаи_тестове]

Резултатът ще бъде „Името на базата данни„ 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 „тест“, „вярно“

Резултатът ще бъде такъв

Прикачване на базата данни.

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, като следвате тези стъпки.

  1. Щракнете с десния бутон върху базата данни, изберете „задача“, след това щракнете върху „Отделяне“
  2. Сега кликнете върху „добре“
  3. Сега, за да прикачите базата данни, щракнете с десния бутон върху „Бази данни“ в „Object Explorer“ и щракнете върху „Прикачи“ . Ще се появи екран, щракнете върху Добавяне. Ще се появи друг прозорец с имена на бази данни в него, както е показано по-долу, изберете „тест“.
  4. Но ние искаме да го добавим като модифицирано име на база данни „test_cases“, така че напишете „test_case“ в полето „Attach as“ . Сега така. Това ще преименува вашата база данни.

Освен това ще обсъдим грешки, които могат да възникнат при преименуване на базата данни. Ще ви е необходим изключителен достъп до базата данни, за да я преименувате, което гарантира, че базата данни няма други връзки към базата данни. Но ако случаят не е такъв, това може да доведе до грешки, както е показано по-долу. Грешката може дори да възникне, когато случайно отворим друг прозорец със същото име на база данни, който трябва да бъде преименуван.

Грешки, които възникват при преименуване на базата данни чрез SSMS и при изпълнение на заявката:

Тези по-долу споменати две грешки имат два различни изгледа, защото възникват при преименуване на базата данни с помощта на два различни метода. Грешка 1 възниква при преименуване на базата данни с помощта на SSMS, а втората грешка възниква при преименуване на базата данни с помощта на заявка. И двете грешки показват едно и също съобщение  „Базата данни не може да бъде заключена изключително за извършване на операцията“, което означава, че грешката възниква, тъй като на потребителя не е даден изключителен достъп до базата данни за преименуване на база данни. Така че, за да преименуваме базата данни, трябва да я настроим в „ режим за един потребител “.

Грешка 1: Възниква грешка при преименуване на базата данни чрез SSMS

„Тестът не може да се преименува. (ObjectExplorer)

Допълнителна информация:

Преименуването не бе успешно за теста на базата данни (Microsoft.SqlServer.Smo)

Възникна изключение при изпълнение на оператор или партида на Transact-SQL.

(Microsoft.SqlServer.ConnectionInfo)

The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)”

Error 2: Error arises while renaming the database using query

 “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

First of all, we will reproduce the above-mentioned error messages for understanding that in which scenario they arise and how to fix them.

  1. Right-click database name from “Object Explorer”
  2. Select rename and type database name and press “enter” if it works its fine but if it does not work and results in an error like this “Unable to rename (ObjectExplorer). The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)” as seen in the figure below, then you don’t have exclusive access to the database to rename a database.
  3. This error means that the SQL Server will not allow the database to be renamed until unless it is in “single-user mode”.
  4. So you will need exclusive access to the database to rename a database, to understand this open another query window and select database “test”
  5. Now in the first window try to execute the following code.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. But this will prone to an error message like this: “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

Solution:

This will configure the database to roll back any pending transactions and set it in “single user mode” and then back into “multi-user mode”.

  1. To fix this we need to close all other windows in which the same database name is being used or to set the database in “single user mode” by using the following commands.
  2. Alter database test set single_user with rollback immediate go EXEC sp_renamedb 'test', 'test_cases' go alter database test_cases set multi_user go
  3. The output will be like this: “Nonqualified transactions are being rolled back. Estimated rollback completion: 0%. Nonqualified transactions are being rolled back. Estimated rollback completion: 100%. The database name ‘test_cases’ has been set.”

Conclusion:

These are multiple ways to rename the database. If one way is not working for you. You can go to another one. One thing that should be kept in mind that changing database names using these ways just rename the database. The “physical files” still have the same names. As we can see in the figure below we have changed the database name from “test” to “test_cases” but in the physical location, it remained the same.

Така че най-простият подход е да се използва решение 4, ако искате да промените и името на файла. Първо трябва да промените името на физическите файлове, преди да свържете отново файловете и след това да посочите преименуваните файлове, когато правите повторното прикрепване.

Освен това, в допълнение към промяната на имената на базите данни, вие също трябва да проверите дали в кода на вашето приложение има препратки към името на базата данни. Това може да бъде или в SQL Server, или извън SQL Server.