Jak zmienić nazwę bazy danych SQL Server?

Czasami musimy zmienić nazwę bazy danych, ponieważ pierwotna nazwa była oparta na projekcie, który stał się nieistotny dla danych przechowywanych w bazie danych lub wcześniej nadałeś tymczasową nazwę, a teraz chcesz ją zmodyfikować. Niezależnie od powodów zmiany nazwy bazy danych, w tym artykule omówimy sposoby zmiany nazwy bazy danych, jakie błędy mogą wystąpić podczas tej zmiany i jak je naprawić.

Aby zmienić nazwę bazy danych, musisz zastosować jedną z metod omówionych poniżej. Przede wszystkim musimy stworzyć bazę danych, której nazwa wymaga zmiany.

Tworzenie bazy danych:

Wybierz dowolną bazę danych w systemie zarządzania SQL Server (SSMS) . Jeśli nie masz, możesz je utworzyć, wykonując tę ​​procedurę.

  1. Kliknij prawym przyciskiem myszy „ Baza danych ” w „Eksploratorze obiektów” i wybierz opcję „Nowa baza danych”
  2. W lewym okienku pojawi się okno
  3. wybierz nazwę bazy danych typu „Ogólne” na prawym panelu i naciśnij „ok” . Baza danych zostanie utworzona

Istnieje wiele metod zmiany nazwy bazy danych w programie SQL Server, które zostały szczegółowo omówione poniżej wraz z wersjami obsługiwanymi przez dowolną określoną metodę. Później omówimy również błędy, które pojawiają się podczas zmiany nazwy bazy danych oraz procedurę ich naprawy.

Metoda 1: użycie opcji zmiany nazwy programu SSMS w celu zmiany nazwy bazy danych programu SQL Server

To najprostszy sposób zmiany nazwy bazy danych. Aby to zrobić, musisz postępować w ten sposób.

  1. Kliknij prawym przyciskiem myszy nazwę bazy danych w eksploratorze obiektów
  2. Wybierz „zmień nazwę” , wpisz nazwę bazy danych i naciśnij „enter”

Metoda 2: zmiana nazwy bazy danych programu SQL Server za pomocą programu SSMS

Innym najprostszym sposobem zmiany nazwy bazy danych, podobnie jak zmiana nazwy dowolnego folderu w oknach. Aby to zrobić, musisz kontynuować. Kliknij bazę danych, aby zmienić jej nazwę, tak jak podczas zmiany nazw folderów systemu Windows.

Metoda 3: Używanie T-SQL do zmiany nazwy bazy danych SQL Server

W przypadku programu SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 i 2017 to polecenie działa. Wykonaj następującą instrukcję.

ALTER DATABASE [test] MODIFY NAME = [test_cases]

Wynik będzie następujący: „Ustawiono nazwę bazy danych„ przypadki_testowe ”.” Jak widać na poniższym rysunku.

Możesz użyć poniższego polecenia T-SQL, aby zmienić nazwę bazy danych, jeśli używasz SQL Server 2000. W przypadku SQL 2005, 2008, 2008R2, 2012, 2014, 2016 i 2017 to nadal działa, ale na pewnym etapie Microsoft twierdzi, że zostanie wycofany.

Metoda 4: Używanie odłączania i dołączania Zmień nazwę serwera SQL

Za pomocą funkcji odłączania i dołączania programu SQL Server można najpierw usunąć bazę danych i przypisać jej inną nazwę po ponownym dołączeniu bazy danych. W tym celu można użyć następujących poleceń T-SQL

Odłączenie bazy danych przez wykonanie następującego kodu:

EXEC sp_detach_db 'test', 'true'

Wynik będzie taki

Dołączanie bazy danych.

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 ';

Wynik będzie:

Używanie programu SSMS do odłączania i ponownego dołączania baz danych

Można to również osiągnąć za pomocą programu SSMS, wykonując następujące kroki.

  1. Kliknij bazę danych prawym przyciskiem myszy, wybierz „zadanie”, a następnie kliknij „Odłącz”
  2. Teraz kliknij „ok”
  3. Teraz, aby załączyć bazę danych, kliknij prawym przyciskiem myszy „Bazy danych” w „Eksploratorze obiektów” i kliknij „Dołącz” . Pojawi się ekran, kliknij Dodaj. Pojawi się kolejne okno z nazwami baz danych, jak pokazano poniżej, wybierz „test”.
  4. Chcemy jednak dodać go jako zmodyfikowaną nazwę bazy danych „przypadki_testowe”, więc wpisz „przypadek_testowy” w polu „Dołącz jako” . Teraz tak. Spowoduje to zmianę nazwy bazy danych.

Ponadto omówimy błędy, które mogą wystąpić podczas zmiany nazwy bazy danych. Będziesz potrzebował wyłącznego dostępu do bazy danych, aby zmienić nazwę bazy danych, co zapewni, że baza danych nie będzie miała żadnych innych połączeń z bazą danych. Ale jeśli tak nie jest, może to spowodować błędy, jak pokazano poniżej. Błąd może nawet powstać, gdy przypadkowo otworzymy inne okno o tej samej nazwie bazy danych, której nazwa musi zostać zmieniona.

Błędy, które pojawiają się podczas zmiany nazwy bazy danych za pośrednictwem SSMS i wykonania zapytania:

Te dwa wymienione poniżej błędy mają dwa różne widoki, ponieważ powstają podczas zmiany nazwy bazy danych przy użyciu dwóch różnych metod. Błąd 1 pojawia się podczas zmiany nazwy bazy danych przy użyciu programu SSMS, a drugi błąd podczas zmiany nazwy bazy danych za pomocą zapytania. Oba błędy pokazują ten sam komunikat  „Nie można zablokować bazy danych na wyłączność w celu wykonania operacji”, co oznacza, że ​​błąd występuje, ponieważ użytkownik nie otrzymuje wyłącznego dostępu do bazy danych w celu zmiany nazwy bazy danych. Aby zmienić nazwę bazy danych, musimy ustawić bazę danych w „ trybie pojedynczego użytkownika ”.

Błąd 1: błąd występuje podczas zmiany nazwy bazy danych za pośrednictwem programu SSMS

„Nie można zmienić nazwy testu. (ObjectExplorer)

Dodatkowe informacje:

Zmiana nazwy nie powiodła się dla testu bazy danych (Microsoft.SqlServer.Smo)

Wystąpił wyjątek podczas wykonywania instrukcji języka Transact-SQL lub partii.

(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.

Dlatego najprostszym podejściem jest użycie rozwiązania 4, jeśli chcesz również zmienić nazwę pliku. Przed ponownym dołączeniem plików należy najpierw zmienić nazwę plików fizycznych, a następnie określić pliki o zmienionych nazwach podczas ponownego dołączania.

Ponadto, oprócz zmiany nazw baz danych, należy również sprawdzić, czy w kodzie aplikacji nie ma odniesień do nazwy bazy danych. Może to być w programie SQL Server lub poza nim.