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.
- Høyreklikk på “Database”I “Objektutforsker” og velg alternativet “Ny database”
- Et vindu vises i venstre rute
- å 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 bestemt metode. Senere vil vi også diskutere feil som oppstår ved å gi nytt navn til databasen, og fremgangsmåten 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.
- Høyreklikk på databasenavn fra objektutforsker
- Å 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 den 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] MODIFY NAME = [test_cases]
Resultatet blir "Databasenavnet" test_cases "er satt." Som vist i 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 fortsatt, men på et eller annet 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:
Bruker SSMS til å koble fra og feste databaser på nytt
Dette kan også oppnås ved hjelp av SSMS ved å følge disse trinnene.
- Høyreklikk databasen, velg "oppgave" klikk deretter på "Løsne"
- Klikk nå på “Ok”
- 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 vises med databasenavn, som vist nedenfor, velg "test".
- 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 omdøper 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 eksklusivt 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.
- Høyreklikk databasenavnet fra “Objektutforsker”
- 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 eksklusivt 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. - Denne feilen betyr at SQL Server ikke tillater at databasen omdøpes før den ikke er i “Enkeltbrukermodus”.
- Så du trenger eksklusiv tilgang til databasen for å gi nytt navn til en database, for å forstå dette, åpne et annet vindu og velg database "test"
- Nå i det første vinduet, prøv å utføre følgende kode.
ALTER DATABASE [test] MODIFY NAME = [test_cases]
- 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”.
- 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.
Endre databasetestsett single_user med tilbakestilling umiddelbart go EXEC sp_renamedb 'test', 'test_cases' go endre database test_cases set multi_user go
- Resultatet blir slik: “Ikke-kvalifiserte transaksjoner rulles tilbake. Anslått tilbakeføring: 0%. Ikke-kvalifiserte transaksjoner rulles 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 kobler til på nytt.
I tillegg til å endre navnene på databasene, må du også sjekke om det er noen referanser i applikasjonskoden til databasenavnet. Dette kan enten være innenfor SQL Server eller utenfor SQL Server.