Hvordan endre navn på en SQL Server-database?

Noen ganger må vi endre databasenavn fordi det opprinnelige navnet var basert på prosjektet som har blitt irrelevant for dataene som er lagret i databasen, eller du har gitt midlertidig navn før, og nå vil du endre det. Uansett årsakene bak å gi nytt navn til databasen, vil vi i denne artikkelen komme med måter om hvordan du kan gi nytt navn til databasen, hvilken feil som kan oppstå når du gjør det, og hvordan du løser dem.

Så for å gi nytt navn til databasen, må du følge en av metodene som diskutert nedenfor. Først og fremst må vi lage en database som må omdøpes.

Databaseoppretting:

Velg hvilken som helst database i din SQL Server Management System (SSMS). Hvis du ikke har noen, kan du opprette en ved å følge denne prosedyren.

  1. Høyreklikk på “Database”I “Objektutforsker” og velg alternativet “Ny database”
  2. Et vindu vises i venstre rute
  3. å velge "Generell" skriv databasenavn i høyre rute og trykk “Ok”. Databasen blir opprettet

Det er flere metoder for å gi nytt navn til en database i SQL Server, som blir diskutert i detalj nedenfor sammen med versjoner som støttes av en hvilken som helst spesifikk metode. Senere vil vi også diskutere feil som oppstår under omdøping av databasen, og fremgangsmåte for å fikse dem.

Metode 1: Bruke alternativet SSMS omdøpe for å gi nytt navn til SQL Server-databasen

Dette er den enkleste måten å gi nytt navn til en database. Du må fortsette slik for å gjøre det.

  1. Høyreklikk på databasenavn fra objektutforsker
  2. Å velge “Endre navn”, skriv databasenavn og trykk "Tast inn"

Metode 2: Bruk SSMS til å gi nytt navn til SQL Server Database

En annen enkleste måte å gi nytt navn til en database, akkurat som å gi nytt navn til en hvilken som helst mappe i windows. Du må fortsette slik for å gjøre det. Klikk på databasen for å gi nytt navn, akkurat som å gi nytt navn til Windows-mapper.

Metode 3: Bruke T-SQL for å gi nytt navn til SQL Server-databasen

For SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 og 2017 fungerer denne kommandoen. Utfør følgende uttalelse.

ALTER DATABASE [test] MODIFISER NAME = [test_cases]

Resultatet blir "Databasenavnet" test_cases "er satt." Som det fremgår av figuren nedenfor.

Du kan bruke T-SQL-kommandoen nedenfor for å endre navnet på databasen hvis du bruker SQL Server 2000. Med SQL 2005, 2008, 2008R2, 2012, 2014, 2016 og 2017 fungerer dette fremdeles, men på et tidspunkt, Microsoft hevder det vil bli faset ut.

Metode 4: Bruk løsne og legg til nytt navn på SQL Server

Ved å bruke SQL Servers løsne- og vedleggfunksjon kan du først fjerne databasen og tildele databasen et annet navn når du legger ved databasen på nytt. Følgende T-SQL-kommandoer kan brukes til å gjøre dette

Koble fra databasen ved å utføre følgende kode:

EXEC sp_detach_db 'test', 'true'

Resultatet blir slik

Legge ved databasen.

EXEC sp_attach_db @dbname = Ikke test ', @ filnavn1 = N'C: \ Programfiler \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test.mdf', @ filnavn2 = N'C: \ Programfiler \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf ';

Resultatet blir:

Bruke SSMS til å løsne og legge ved databaser på nytt

Dette kan også oppnås ved hjelp av SSMS ved å følge disse trinnene.

  1. Høyreklikk databasen, velg "oppgave" klikk deretter på "Løsne"
  2. Klikk nå på “Ok”
  3. Nå for å legge til databasen høyreklikker du på “Databaser” i “Objektutforsker” og klikk "Feste". En skjerm vises, klikk på Legg til. Et annet vindu vil vises med databasenavn, som vist nedenfor, velg "test".
  4. Men vi vil legge til det som endret databasenavn “Test_cases” så skriv "testforsøk" i ”Fest som” eske. Nå som dette. Dette vil gi databasen nytt navn.

Videre vil vi diskutere feil som kan oppstå under omdøping av databasen. Du trenger eksklusiv tilgang til databasen for å gi nytt navn til databasen, noe som sikrer at databasen ikke har andre databaseforbindelser. Men hvis dette ikke er tilfelle, kan det føre til feil som vist nedenfor. Feilen kan til og med oppstå når vi ved et uhell åpner et annet vindu med samme databasenavn som må omdøpes.

Feil som oppstår ved å gi nytt navn til databasen via SSMS og ved å utføre spørringen:

Disse nedenfor nevnte to feilene har to forskjellige visninger fordi de oppstår mens du gir nytt navn til databasen ved hjelp av to forskjellige metoder. Feil 1 oppstår når du gir nytt navn til databasen ved hjelp av SSMS, og den andre feilen oppstår når du omdøper databasen ved hjelp av spørringen. Begge feilene viser den samme meldingen “Databasen kunne ikke utelukkende låses for å utføre operasjonen”, det betyr at feilen oppstår ettersom brukeren ikke får eksklusiv tilgang til databasen for å gi nytt navn til en database. Så for å gi nytt navn til databasen må vi sette databasen i "enkeltbruker-modus“.

Feil 1: Feil oppstår ved å gi nytt navn til databasen via SSMS

“Kan ikke gi nytt navn til test. (ObjectExplorer)

Tilleggsinformasjon:

Endring av navn mislyktes for databasetest (Microsoft.SqlServer.Smo)

Det oppstod et unntak under kjøring av en Transact-SQL-setning eller batch.

(Microsoft.SqlServer.ConnectionInfo)

Databasen kunne ikke utelukkende låses for å utføre operasjonen. (Microsoft SQL Server, feil: 5030) ”

Feil 2: Feil oppstår når du omdøper databasen ved hjelp av spørringen

“Msg 5030, nivå 16, tilstand 2, linje 2. Databasen kunne ikke eksklusivt låses for å utføre operasjonen.”

Først og fremst vil vi gjengi de ovennevnte feilmeldingene for å forstå at i hvilket scenario de oppstår og hvordan vi kan fikse dem.

  1. Høyreklikk databasenavnet fra “Objektutforsker”
  2. Velg endre navn og skriv databasenavn og trykk "Tast inn" hvis det fungerer bra, men hvis det ikke fungerer og resulterer i en feil som denne “Kan ikke gi nytt navn (ObjectExplorer). Databasen kunne ikke utelukkende låses for å utføre operasjonen. (Microsoft SQL Server, feil: 5030) ” som vist i figuren nedenfor, har du ikke eksklusiv tilgang til databasen for å gi nytt navn til en database.
  3. Denne feilen betyr at SQL Server ikke tillater at databasen omdøpes før den ikke er i “Enkeltbrukermodus”.
  4. Så du trenger eksklusiv tilgang til databasen for å gi nytt navn til en database, for å forstå dette, åpne et annet spørringsvindu og velg database "test"
  5. Nå i det første vinduet, prøv å utføre følgende kode.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. Men dette vil være utsatt for en feilmelding som denne: “Msg 5030, nivå 16, tilstand 2, linje 2. Databasen kunne ikke eksklusivt låses for å utføre operasjonen.”

Løsning:

Dette vil konfigurere databasen til å rulle tilbake eventuelle ventende transaksjoner og sette den inn “Single user mode” og deretter tilbake til “Flerbrukermodus”.

  1. For å fikse dette, må vi lukke alle andre vinduer der samme databasenavn brukes eller å sette databasen inn “Single user mode” ved å bruke følgende kommandoer.
  2. Endre databasetestsett single_user med tilbakestilling umiddelbart go EXEC sp_renamedb 'test', 'test_cases' go endre database test_cases set multi_user go
  3. Resultatet blir slik: “Ikke-kvalifiserte transaksjoner rulles tilbake. Anslått tilbakeføring: 0%. Ikke-kvalifiserte transaksjoner blir rullet tilbake. Anslått tilbakeføring: 100%. Databasenavnet ‘test_cases’ er satt. ”

Konklusjon:

Dette er flere måter å endre navn på databasen på. Hvis en måte ikke fungerer for deg. Du kan gå til en annen. En ting som du bør huske på at endring av databasenavn ved hjelp av disse måtene bare omdøper databasen. De “fysiske filene” har fortsatt de samme navnene. Som vi kan se i figuren nedenfor har vi endret databasenavnet fra "test" til “Test_cases” men på den fysiske plasseringen forble den den samme.

Så den enkleste tilnærmingen er å bruke løsning 4 hvis du også vil endre filnavnet. Du må først endre navnet på de fysiske filene før du legger ved filene på nytt, og deretter spesifisere de omdøpte filene når du gjør det på nytt.

I tillegg til å endre navnene på databasene, må du også sjekke om det er referanser i applikasjonskoden til databasenavnet. Dette kan enten være innenfor SQL Server eller utenfor SQL Server.


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