Kako preimenovati bazo podatkov SQL Server?

Včasih moramo spremeniti ime baze podatkov, ker je prvotno ime temeljilo na projektu, ki je postal nepomemben za podatke, shranjene v zbirki podatkov, ali če ste prej začasno dali ime, zdaj pa ga želite spremeniti. Ne glede na razloge za preimenovanje baze podatkov bomo v tem članku našli načine, kako preimenovati bazo podatkov, kakšna napaka lahko pri tem nastane in kako jih popraviti.

Če želite preimenovati bazo podatkov, morate slediti enemu od načinov, opisanih spodaj. Najprej moramo ustvariti bazo podatkov, ki jo je treba preimenovati.

Ustvarjanje zbirke podatkov:

Izberite katero koli bazo podatkov v Sistem za upravljanje SQL Server (SSMS). Če ga nimate, ga lahko ustvarite po tem postopku.

  1. Z desno miškino tipko kliknite »Zbirka podatkov"V »Raziskovalec predmetov« in izberite možnost “Nova baza podatkov”
  2. V levem podoknu se prikaže okno
  3. izberite »Splošno« vnesite ime baze podatkov v desni pan in pritisnite "v redu". Baza podatkov bo ustvarjena

Obstaja več načinov za preimenovanje baze podatkov v strežniku SQL Server, ki so podrobno obravnavani spodaj skupaj z različicami, ki jih podpira katera koli posebna metoda. Kasneje bomo obravnavali tudi napake, ki se pojavijo med preimenovanjem baze podatkov, in postopek za njihovo odpravo.

1. način: Uporaba možnosti preimenovanja SSMS za preimenovanje baze podatkov SQL Server

To je najpreprostejši način preimenovanja baze podatkov. Če želite to storiti, morate nadaljevati tako.

  1. Z desno miškino tipko kliknite ime baze podatkov iz raziskovalca objektov
  2. Izberite "Preimenuj", vnesite ime baze podatkov in pritisnite "Vnesite"

2. način: Uporaba SSMS za preimenovanje baze podatkov SQL Server

Drug najpreprostejši način preimenovanja baze podatkov, tako kot preimenovanje katere koli mape v oknih. Če želite to storiti, morate nadaljevati tako. Kliknite bazo podatkov, da jo preimenujete tako kot preimenovanje map Windows.

3. način: Uporaba T-SQL za preimenovanje baze podatkov SQL Server

Za SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 in 2017 ta ukaz deluje. Izvedite naslednjo izjavo.

ALTER DATABASE [test] SPREMENI IME = [test_cases]

Izhod bo "Ime baze podatkov 'test_cases' je nastavljeno." Kot je razvidno iz spodnje slike.

Spodnji ukaz T-SQL lahko uporabite za spremembo imena baze podatkov, če uporabljate SQL Server 2000. S SQL 2005, 2008, 2008R2, 2012, 2014, 2016 in 2017 to še vedno deluje, toda na določeni stopnji Microsoft trdi, da bo postopno opuščen.

Metoda 4: S pomočjo odstranitve in priloge preimenujte SQL Server

S funkcijo ločevanja in pripenjanja SQL Server lahko najprej odstranite bazo podatkov in ji dodelite drugo ime, ko znova pritrdite bazo podatkov. Za to lahko uporabite naslednje ukaze T-SQL

Ločevanje baze podatkov z izvedbo naslednje kode:

EXEC sp_detach_db 'test', 'true'

Izhod bo takšen

Priključitev baze podatkov.

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

Rezultat bo:

Uporaba SSMS za ločevanje in ponovno pritrjevanje baz podatkov

To je mogoče doseči tudi s pomočjo SSMS, tako da sledite tem korakom.

  1. Z desno tipko miške kliknite bazo podatkov, izberite “Naloga” nato kliknite "Odlepi"
  2. Zdaj kliknite na "v redu"
  3. Zdaj kliknite bazo podatkov z desno miškino tipko "Zbirke podatkov" v »Raziskovalec predmetov« in kliknite "Priloži". Pojavi se zaslon, kliknite Dodaj. Pojavilo se bo drugo okno z imeni zbirk podatkov, kot je prikazano spodaj “Test”.
  4. Vendar ga želimo dodati kot spremenjeno ime baze podatkov “Test_cases” torej tip “Test_case” v "Priloži kot" škatla. Zdaj takole. To bo preimenovalo vašo bazo podatkov.

Poleg tega bomo razpravljali o napakah, ki se lahko pojavijo med preimenovanjem baze podatkov. Za preimenovanje baze podatkov boste potrebovali ekskluziven dostop do baze podatkov, kar zagotavlja, da baza podatkov nima nobenih drugih povezav z bazo podatkov. V nasprotnem primeru pa lahko pride do napak, kot je prikazano spodaj. Napaka lahko nastane celo, ko pomotoma odpremo drugo okno z istim imenom baze podatkov, ki ga je treba preimenovati.

Napake, ki se pojavijo med preimenovanjem baze podatkov prek SSMS in z izvajanjem poizvedbe:

Spodaj omenjeni dve napaki imata dva različna pogleda, ker se pojavita med preimenovanjem baze podatkov z dvema različnima metodama. Napaka 1 se pojavi pri preimenovanju baze podatkov s pomočjo SSMS, druga napaka pa pri preimenovanju baze podatkov s poizvedbo. Obe napaki prikazujeta isto sporočilo "Zbirke podatkov ni bilo mogoče izključno zakleniti za izvajanje operacije", to pomeni, da pride do napake, saj uporabnik ne dobi izključnega dostopa do baze podatkov za preimenovanje baze podatkov. Za preimenovanje baze podatkov moramo bazo podatkov nastaviti v “en uporabniški način“.

Napaka 1: Napaka se pojavi pri preimenovanju baze podatkov prek SSMS

„Preskusa ni mogoče preimenovati. (ObjectExplorer)

Dodatne informacije:

Preimenovanje ni uspelo za preizkus zbirke podatkov (Microsoft.SqlServer.Smo)

Med izvajanjem stavka ali paketa Transact-SQL je prišlo do izjeme.

(Microsoft.SqlServer.ConnectionInfo)

Za izvajanje operacije baze podatkov ni bilo mogoče izključno zakleniti. (Microsoft SQL Server, napaka: 5030) «

Napaka 2: Napaka se pojavi pri preimenovanju baze podatkov z uporabo poizvedbe

"Sporočilo 5030, nivo 16, stanje 2, vrstica 2. Za izvedbo operacije baze podatkov ni bilo mogoče izključno zakleniti."

Najprej bomo reproducirali zgoraj navedena sporočila o napakah, da bomo razumeli, v kakšnem scenariju se pojavijo in kako jih odpraviti.

  1. Z desno tipko miške kliknite ime zbirke podatkov iz »Raziskovalec predmetov«
  2. Izberite preimenovanje in vnesite ime baze podatkov in pritisnite "Vnesite" če deluje dobro, če pa ne deluje in povzroči takšno napako “Preimenovanja ni mogoče (ObjectExplorer). Za izvajanje operacije baze podatkov ni bilo mogoče izključno zakleniti. (Microsoft SQL Server, napaka: 5030) « kot je razvidno iz spodnje slike, nimate ekskluzivnega dostopa do baze podatkov za preimenovanje baze podatkov.
  3. Ta napaka pomeni, da SQL Server ne bo dovolil preimenovanja baze podatkov, dokler ni v njej “Način za enega uporabnika”.
  4. Torej boste potrebovali ekskluziven dostop do baze podatkov, da jo boste preimenovali, da boste razumeli to, odprite drugo okno za poizvedbo in izberite bazo podatkov "Test"
  5. Zdaj v prvem oknu poskusite zagnati naslednjo kodo.
  6. ALTER DATABASE [test] SPREMENI IME = [test_cases]
  7. Toda to bo povzročilo takšno sporočilo o napaki: "Sporočilo 5030, nivo 16, stanje 2, vrstica 2. Za izvedbo operacije baze podatkov ni bilo mogoče izključno zakleniti."

Rešitev:

S tem boste konfigurirali bazo podatkov tako, da bo vrnila vse čakajoče transakcije in jo nastavila "En uporabniški način" in nato nazaj v “Način več uporabnikov”.

  1. Da bi to popravili, moramo zapreti vsa druga okna, v katerih se uporablja isto ime baze podatkov, ali nastaviti bazo podatkov "En uporabniški način" z uporabo naslednjih ukazov.
  2. Spremeni testni niz zbirke podatkov single_user s povratnim takojšnjim odhodom EXEC sp_renamedb 'test', 'test_cases' go spremeni bazo podatkov test_cases set multi_user go
  3. Rezultat bo takšen: »Nekvalificirane transakcije se vračajo nazaj. Predvideni zaključek povratka: 0%. Nekvalificirane transakcije se umaknejo. Predvideni zaključek povratka: 100%. Ime baze podatkov 'test_cases' je nastavljeno. "

Zaključek:

To je več načinov za preimenovanje baze podatkov. Če vam en način ne ustreza. Lahko greš k drugemu. Upoštevati je treba, da spreminjanje imen baz podatkov na te načine samo preimenuje bazo podatkov. "Fizične datoteke" imajo še vedno enaka imena. Kot lahko vidimo na spodnji sliki, smo spremenili ime baze podatkov iz "Test" do “Test_cases” na fizični lokaciji pa je ostalo enako.

Najpreprostejši pristop je torej, da uporabite rešitev 4, če želite spremeniti tudi ime datoteke. Najprej morate spremeniti ime fizičnih datotek, preden jih znova pritrdite, nato pa med ponovnim pritrditvijo določiti preimenovane datoteke.

Poleg tega morate poleg spreminjanja imen baz podatkov preveriti tudi, ali se v kodi vaše aplikacije sklicuje na ime baze podatkov. To je lahko znotraj SQL Serverja ali zunaj njega.


$config[zx-auto] not found$config[zx-overlay] not found