Jak přejmenovat databázi serveru SQL Server?

Někdy potřebujeme změnit název databáze, protože původní název vycházel z projektu, který se stal irelevantní pro data uložená v databázi, nebo jste dříve zadali dočasný název a nyní jej chcete upravit. Bez ohledu na důvody přejmenování databáze v tomto článku přijdeme na způsoby, jak přejmenovat databázi, jaká chyba při tom může nastat a jak je opravit.

Chcete-li tedy přejmenovat databázi, musíte postupovat podle jedné z níže popsaných metod. Nejprve musíme vytvořit databázi, kterou je třeba přejmenovat.

Vytvoření databáze:

Vyberte libovolnou databázi ve vašem Systém správy serveru SQL (SSMS). Pokud žádné nemáte, můžete si je vytvořit pomocí tohoto postupu.

  1. Klikněte pravým tlačítkem na „Databáze“V „Object Explorer“ a vyberte možnost „Nová databáze“
  2. V levém podokně se zobrazí okno
  3. vybrat "Všeobecné" zadejte název databáze do pravého pole a stiskněte "OK". Databáze bude vytvořena

Existuje několik metod k přejmenování databáze na serveru SQL Server, které jsou podrobně popsány níže spolu s verzemi podporovanými jakoukoli konkrétní metodou. Později probereme také chyby, které vzniknou při přejmenování databáze, a postup jejich opravy.

Metoda 1: Použití možnosti přejmenování SSMS k přejmenování databáze serveru SQL

Toto je nejjednodušší způsob přejmenování databáze. K tomu musíte postupovat takto.

  1. Klikněte pravým tlačítkem na název databáze v průzkumníku objektů
  2. Vybrat "přejmenovat", zadejte název databáze a stiskněte „Vstoupit“

Metoda 2: Použití SSMS k přejmenování databáze serveru SQL

Další nejjednodušší způsob přejmenování databáze, stejně jako přejmenování libovolné složky v systému Windows. Musíte v tom pokračovat. Kliknutím na databázi ji přejmenujete stejně jako přejmenování složek systému Windows.

Metoda 3: Použití T-SQL k přejmenování databáze serveru SQL

U SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 a 2017 tento příkaz funguje. Proveďte následující prohlášení.

ALTER DATABASE [test] MODIFY NAME = [test_cases]

Výstup bude „Byl nastaven název databáze„ test_cases “.“ Jak je vidět na obrázku níže.

Pomocí níže uvedeného příkazu T-SQL můžete změnit název databáze, pokud používáte SQL Server 2000. U SQL 2005, 2008, 2008R2, 2012, 2014, 2016 a 2017 to stále funguje, ale v určité fázi Microsoft tvrdí, že bude vyřazen.

Metoda 4: Pomocí odpojení a připojení přejmenujte SQL Server

Pomocí funkce odpojení a připojení serveru SQL lze nejprve odebrat databázi a při opětovném připojení databáze jí přiřadit jiný název. K tomu lze použít následující příkazy T-SQL

Odpojení databáze provedením následujícího kódu:

EXEC sp_detach_db 'test', 'true'

Výstup bude takový

Připojení databáze.

EXEC sp_attach_db @dbname = N'test ', @ název_souboru1 = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test.mdf', @ název souboru2 = N'C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf ';

Výstup bude:

Použití SSMS k odpojení a opětovnému připojení databází

Toho lze dosáhnout také pomocí SSMS podle těchto kroků.

  1. Klepněte pravým tlačítkem myši na databázi a vyberte "úkol" poté klikněte na "Odpojit"
  2. Nyní klikněte na "OK"
  3. Nyní připojte databázi pravým tlačítkem myši na „Databáze“ v „Object Explorer“ a klikněte "Připojit". Zobrazí se obrazovka, klikněte na Přidat. Zobrazí se další okno s názvy databází, jak je uvedeno níže "test".
  4. Ale chceme jej přidat jako upravený název databáze „Test_cases“ tak napište "modelový případ" v „Připojit jako“ krabice. Nyní takto. Vaše databáze se tím přejmenuje.

Dále probereme chyby, které mohou nastat při přejmenování databáze. K přejmenování databáze budete potřebovat výhradní přístup k databázi, což zajistí, že databáze nebude mít žádná další připojení k databázi. Pokud tomu tak není, může to vést k chybám, jak je uvedeno níže. Chyba může dokonce nastat, když omylem otevřete jiné okno se stejným názvem databáze, které je třeba přejmenovat.

Chyby, které vzniknou při přejmenování databáze pomocí SSMS a provedením dotazu:

Tyto níže uvedené dvě chyby mají dvě různá zobrazení, protože vznikají při přejmenování databáze pomocí dvou různých metod. Chyba 1 vzniká při přejmenování databáze pomocí SSMS a druhá chyba nastává při přejmenování databáze pomocí dotazu. Obě chyby zobrazují stejnou zprávu „Databázi nebylo možné pro provedení operace výlučně uzamknout“, to znamená, že k chybě dojde, protože uživateli není poskytnut výhradní přístup k databázi k přejmenování databáze. Chcete-li tedy přejmenovat databázi, musíme ji nastavit na „režim pro jednoho uživatele“.

Chyba 1: Při přejmenování databáze pomocí SSMS dojde k chybě

"Test nelze přejmenovat." (ObjectExplorer)

Dodatečné informace:

Přejmenování se nezdařilo pro test databáze (Microsoft.SqlServer.Smo)

Při provádění příkazu nebo dávky Transact-SQL došlo k výjimce.

(Microsoft.SqlServer.ConnectionInfo)

K provedení operace nebylo možné databázi výhradně uzamknout. (Microsoft SQL Server, chyba: 5030) “

Chyba 2: Při přejmenování databáze pomocí dotazu dojde k chybě

"Zpráva 5030, úroveň 16, stav 2, řádek 2. Databázi nebylo možné výlučně uzamknout za účelem provedení operace."

Nejprve budeme reprodukovat výše uvedené chybové zprávy, abychom pochopili, ve kterém scénáři vzniknou a jak je opravit.

  1. Klepněte pravým tlačítkem na název databáze z „Object Explorer“
  2. Vyberte přejmenovat a zadejte název databáze a stiskněte „Vstoupit“ pokud to funguje dobře, ale pokud to nefunguje a má za následek takovou chybu "Nelze přejmenovat (ObjectExplorer)." K provedení operace nebylo možné databázi výhradně uzamknout. (Microsoft SQL Server, chyba: 5030) “ jak je vidět na obrázku níže, nemáte výhradní přístup k databázi k přejmenování databáze.
  3. Tato chyba znamená, že SQL Server nedovolí přejmenování databáze, dokud není v „Režim pro jednoho uživatele“.
  4. Abyste mohli databázi přejmenovat, budete potřebovat výhradní přístup k databázi, abyste porozuměli tomuto otevření jiného okna dotazu a výběru databáze "test"
  5. Nyní v prvním okně zkuste spustit následující kód.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. Ale bude to náchylné k chybové zprávě, jako je tato: "Zpráva 5030, úroveň 16, stav 2, řádek 2. Databázi nebylo možné výlučně uzamknout za účelem provedení operace."

Řešení:

Tím se nakonfiguruje databáze tak, aby vrátila všechny nevyřízené transakce a nastavila ji „Režim pro jednoho uživatele“ a pak zpět do „Víceuživatelský režim“.

  1. Abychom to napravili, musíme zavřít všechna ostatní okna, ve kterých se používá stejný název databáze, nebo nastavit databázi „Režim pro jednoho uživatele“ pomocí následujících příkazů.
  2. Změnit sadu testů databáze single_user s možností okamžitého vrácení zpět EXEC sp_renamedb 'test', 'test_cases' go změnit databázi test_cases set multi_user go
  3. Výstup bude takový: "Nekvalifikované transakce se odvolávají." Odhadované dokončení vrácení: 0%. Nekvalifikované transakce se odvolávají. Odhadované dokončení vrácení: 100%. Název databáze „test_cases“ byl nastaven. “

Závěr:

Existuje několik způsobů, jak přejmenovat databázi. Pokud vám jeden způsob nefunguje. Můžete přejít na jinou. Je třeba mít na paměti jednu věc, že ​​při změně názvů databází pomocí těchto způsobů stačí databázi přejmenovat. „Fyzické soubory“ mají stále stejná jména. Jak vidíme na obrázku níže, změnili jsme název databáze z "test" na „Test_cases“ ale na fyzickém místě to zůstalo stejné.

Nejjednodušším přístupem je tedy použít řešení 4, pokud chcete změnit také název souboru. Před opětovným připojením souborů musíte nejprve změnit název fyzických souborů a poté při opětovném připojení zadat přejmenované soubory.

Kromě změny názvů databází musíte také zkontrolovat, zda jsou v kódu aplikace nějaké odkazy na název databáze. To může být v rámci serveru SQL Server nebo mimo server SQL Server.