Hvordan omdøbes en SQL Server-database?
Nogle gange er vi nødt til at ændre databasenavn, fordi det originale navn var baseret på det projekt, der er blevet irrelevant for de data, der er gemt i databasen, eller hvis du tidligere har givet et midlertidigt navn, og nu vil du ændre det. Uanset årsagerne til omdøbning af databasen vil vi i denne artikel komme med måder om, hvordan du omdøber databasen, hvilken fejl der kan opstå, mens du gør det, og hvordan du løser dem.
Så for at omdøbe databasen skal du følge en af metoderne som beskrevet nedenfor. Først og fremmest skal vi oprette en database, der skal omdøbes.
Oprettelse af database:
Vælg en hvilken som helst database i din SQL Server Management System (SSMS). Hvis du ikke har nogen, kan du oprette en ved at følge denne procedure.
- Højreklik på “Database”I “Objekt Explorer” og vælg indstilling “Ny database”
- Et vindue vises i venstre rude
- Vælg "Generel" skriv databasenavn i den højre panorering, og tryk på "Okay". Databasen oprettes
Der er flere metoder til at omdøbe en database i SQL Server, som diskuteres nedenfor detaljeret sammen med versioner understøttet af en bestemt metode. Senere vil vi også diskutere fejl, der opstår under omdøbning af databasen, og procedure for at rette dem.
Metode 1: Brug af SSMS omdøbningsmulighed til at omdøbe SQL Server-databasen
Dette er den enkleste måde at omdøbe en database på. Du skal fortsætte sådan for at gøre det.
- Højreklik på databasenavn fra objektudforsker
- Vælg “Omdøb”, skriv databasenavn, og tryk på "gå ind"
Metode 2: Brug af SSMS til at omdøbe SQL Server-databasen
En anden enkleste måde at omdøbe en database ligesom at omdøbe enhver mappe i windows. Du skal fortsætte sådan for at gøre det. Klik på databasen for at omdøbe den ligesom at omdøbe windows-mapper.
Metode 3: Brug af T-SQL til at omdøbe SQL Server-databasen
For SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 og 2017 fungerer denne kommando. Udfør følgende erklæring.
ALTER DATABASE [test] ÆNDR NAVN = [test_cases]
Outputtet bliver "Databasenavnet 'test_cases' er indstillet." Som det ses i nedenstående figur.
Du kan bruge T-SQL-kommandoen nedenfor til at ændre navnet på databasen, hvis du bruger SQL Server 2000. Med SQL 2005, 2008, 2008R2, 2012, 2014, 2016 og 2017 fungerer dette stadig, men på et eller andet tidspunkt fungerer Microsoft hævder, at det vil blive afviklet.
Metode 4: Brug løsriv og vedhæft omdøb til SQL Server
Ved hjælp af SQL Servers frigørelses- og vedhæftningsfunktion kan du først fjerne databasen og tildele databasen et andet navn, når du vedhæfter databasen igen. Følgende T-SQL-kommandoer kan bruges til at gøre dette
Afmontering af databasen ved at udføre følgende kode:
EXEC sp_detach_db 'test', 'sand'
Outputtet vil være sådan
Vedhæftning af 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 ';
Outputtet vil være:
Brug af SSMS til at løsne og vedhæfte databaser igen
Dette kan også opnås ved hjælp af SSMS ved at følge disse trin.
- Højreklik på databasen, vælg "opgave" klik derefter på "Løsrive"
- Klik nu på "Okay"
- Nu skal du vedhæfte databasen med højreklik på “Databaser” i “Objekt Explorer” og klik “Vedhæft”. En skærm vises, klik på Tilføj. Et andet vindue vises med databasenavne i som vist nedenfor vælg "prøve".
- Men vi vil tilføje det som ændret database navn “Testcases” så skriv "test sag" i ”Vedhæft som” boks. Nu sådan. Dette omdøber din database.
Desuden vil vi diskutere fejl, der kan opstå under omdøbning af databasen. Du har brug for eksklusiv adgang til databasen for at omdøbe databasen, hvilket sikrer, at databasen ikke har andre databaseforbindelser. Men hvis dette ikke er tilfældet, kan det resultere i fejl som vist nedenfor. Fejlen kan endda opstå, når vi ved et uheld åbner et andet vindue med det samme databasenavn, der skal omdøbes.
Fejl, der opstår under omdøbning af databasen via SSMS og ved udførelse af forespørgslen:
Disse nedenfor nævnte to fejl har to forskellige synspunkter, fordi de opstår under omdøbning af databasen ved hjælp af to forskellige metoder. Fejl 1 opstår under omdøbning af databasen ved hjælp af SSMS, og den anden fejl opstår under omdøbning af databasen ved hjælp af forespørgsel. Begge fejl viser den samme besked “Databasen kunne ikke udelukkende låses for at udføre handlingen”, det betyder, at fejlen opstår, da brugeren ikke får eksklusiv adgang til databasen for at omdøbe en database. Så for at omdøbe databasen skal vi sætte databasen i "enkeltbruger-tilstand“.
Fejl 1: Der opstår en fejl under omdøbning af databasen via SSMS
“Kunne ikke omdøbe testen. (ObjectExplorer)
Yderligere Information:
Omdøb mislykkedes til databasetest (Microsoft.SqlServer.Smo)
En undtagelse opstod under udførelse af en Transact-SQL-sætning eller batch.
(Microsoft.SqlServer.ConnectionInfo)
Databasen kunne ikke udelukkende låses for at udføre handlingen. (Microsoft SQL Server, fejl: 5030) ”
Fejl 2: Der opstår en fejl under omdøbning af databasen ved hjælp af forespørgsel
“Msg 5030, niveau 16, tilstand 2, linje 2. Databasen kunne ikke udelukkende låses for at udføre handlingen.”
Først og fremmest vil vi gengive de ovennævnte fejlmeddelelser for at forstå, i hvilket scenario de opstår, og hvordan man løser dem.
- Højreklik på databasenavn fra “Objekt Explorer”
- Vælg omdøb, skriv databasenavn, og tryk på "gå ind" hvis det fungerer fint, men hvis det ikke fungerer og resulterer i en fejl som denne “Kan ikke omdøbe (ObjectExplorer). Databasen kunne ikke udelukkende låses for at udføre handlingen. (Microsoft SQL Server, fejl: 5030) ” som det ses i figuren nedenfor, har du ikke eksklusiv adgang til databasen for at omdøbe en database.
- Denne fejl betyder, at SQL Server ikke tillader, at databasen omdøbes, medmindre den er i “Single-user mode”.
- Så du skal have eksklusiv adgang til databasen for at omdøbe en database, for at forstå dette åbner et andet forespørgselsvindue og vælger database "prøve"
- Prøv nu i det første vindue at udføre følgende kode.
ALTER DATABASE [test] ÆNDR NAVN = [test_cases]
- Men dette vil være tilbøjeligt til en fejlmeddelelse som denne: “Msg 5030, niveau 16, tilstand 2, linje 2. Databasen kunne ikke udelukkende låses for at udføre handlingen.”
Opløsning:
Dette vil konfigurere databasen til at rulle tilbage eventuelle ventende transaktioner og indstille den i “Single user mode” og derefter tilbage til “Multi-user mode”.
- For at løse dette er vi nødt til at lukke alle andre vinduer, hvor det samme databasenavn bruges, eller at indstille databasen “Single user mode” ved hjælp af følgende kommandoer.
Ændr databasetestsæt single_user med rollback øjeblikkelig go EXEC sp_renamedb 'test', 'test_cases' go alter database test_cases set multi_user go
- Outputtet vil være sådan: ”Ikke-kvalificerede transaktioner rulles tilbage. Anslået tilbageførsel: 0%. Ikke-kvalificerede transaktioner rulles tilbage. Anslået tilbageførsel: 100%. Databasens navn 'test_cases' er indstillet. "
Konklusion:
Dette er flere måder at omdøbe databasen på. Hvis en måde ikke fungerer for dig. Du kan gå til en anden. En ting, der skal huskes, at ændre databasenavne ved hjælp af disse måder bare omdøbe databasen. De "fysiske filer" har stadig de samme navne. Som vi kan se i nedenstående figur har vi ændret databasenavnet fra "prøve" til “Testcases” men den fysiske placering forblev den samme.
Så den enkleste tilgang er at bruge løsning 4, hvis du også vil ændre filnavnet. Du skal først ændre navnet på de fysiske filer, inden du vedhæfter filerne igen, og derefter angive de omdøbte filer, når du tilslutter igen.
Derudover skal du ud over at ændre navnene på databaser også kontrollere, om der er nogen referencer i din applikationskode til databasenavnet. Dette kan enten være inden for SQL Server eller uden for SQL Server.