Hur byter jag namn på en SQL Server-databas?

Ibland behöver vi ändra databasnamn eftersom det ursprungliga namnet baserades på projektet som har blivit irrelevant för de data som lagrats i databasen eller om du tidigare har gett tillfälligt namn och nu vill du ändra det. Oavsett orsakerna bakom byte av namn på databasen kommer vi i den här artikeln att hitta sätt att byta namn på databasen, vilket fel som kan uppstå när du gör det och hur du åtgärdar dem.

Så för att byta namn på databasen måste du följa en av metoderna som diskuteras nedan. Först och främst måste vi skapa en databas som behöver bytas namn.

Skapa databas:

Välj vilken databas som helst i din SQL Server Management System (SSMS). Om du inte har någon kan du skapa en genom att följa den här proceduren.

  1. Högerklicka på “Databas”I “Object Explorer” och välj alternativ “Ny databas”
  2. Ett fönster visas i den vänstra rutan
  3. Välj "Allmän" skriv databasnamn i den högra panelen och tryck "ok". Databasen skapas

Det finns flera metoder för att byta namn på en databas i SQL Server, som diskuteras nedan i detalj tillsammans med versioner som stöds av någon specifik metod. Senare kommer vi också att diskutera fel som uppstår när du byter namn på databasen och procedur för att fixa dem.

Metod 1: Använd SSMS-namnändringsalternativ för att byta namn på SQL Server-databasen

Detta är det enklaste sättet att byta namn på en databas. Du måste fortsätta så här för att göra det.

  1. Högerklicka på databasnamnet från objektutforskaren
  2. Välj "Döp om", skriv databasnamn och tryck på "stiga på"

Metod 2: Använd SSMS för att byta namn på SQL Server-databasen

Ett annat enklaste sätt att byta namn på en databas precis som att byta namn på en mapp i Windows. Du måste fortsätta så här för att göra det. Klicka på databasen för att byta namn på den precis som att byta namn på Windows-mappar.

Metod 3: Använda T-SQL för att byta namn på SQL Server-databasen

För SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 och 2017 fungerar det här kommandot. Utför följande uttalande.

ALTER DATABAS [test] MODIFY NAME = [test_cases]

Resultatet blir "Databasnamnet" test_cases "har ställts in." Som framgår av figuren nedan.

Du kan använda kommandot T-SQL nedan för att ändra namnet på databasen om du använder SQL Server 2000. Med SQL 2005, 2008, 2008R2, 2012, 2014, 2016 och 2017 fungerar det fortfarande, men i något skede, Microsoft hävdar att den kommer att fasas ut.

Metod 4: Använd avlägsna och bifoga byt namn på SQL Server

Med hjälp av SQL Servers borttagnings- och bifogningsfunktion kan du först ta bort databasen och tilldela databasen ett annat namn när du bifogar databasen igen. Följande T-SQL-kommandon kan användas för att göra detta

Ta bort databasen genom att köra följande kod:

EXEC sp_detach_db 'test', 'true'

Resultatet blir så här

Att bifoga databasen.

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

Resultatet blir:

Använda SSMS för att koppla bort och återfoga databaser

Detta kan också uppnås med hjälp av SSMS genom att följa dessa steg.

  1. Högerklicka på databasen, välj "uppgift" klicka sedan på "Lösgöra"
  2. Klicka nu på "ok"
  3. Nu för att bifoga databasen högerklicka på “Databaser” i “Objektutforskare” och klicka "Bifoga". En skärm visas, klicka på Lägg till. Ett annat fönster kommer att visas med databasnamn i det som visas nedan välj "testa".
  4. Men vi vill lägga till det som modifierat databasnamn "testfall" så typ "testfall" i ”Bifoga som” låda. Nu så här. Detta kommer att byta namn på din databas.

Vidare kommer vi att diskutera fel som kan uppstå när du byter namn på databasen. Du behöver exklusiv åtkomst till databasen för att byta namn på databasen, vilket säkerställer att databasen inte har några andra databasanslutningar. Men om detta inte är fallet kan det leda till fel som visas nedan. Felet kan till och med uppstå när vi av misstag öppnar ett annat fönster med samma databasnamn som måste döpas om.

Fel som uppstår vid byte av namn på databasen via SSMS och genom att frågan körs:

Dessa nedan nämnda två fel har två olika vyer eftersom de uppstår när du byter namn på databasen med två olika metoder. Fel 1 uppstår när du byter namn på databasen med SSMS och det andra felet uppstår när du byter namn på databasen med hjälp av frågan. Båda felen visar samma meddelande "Databasen kunde inte uteslutande låses för att utföra operationen", det betyder att felet uppstår eftersom användaren inte får exklusiv åtkomst till databasen för att byta namn på en databas. Så för att byta namn på databasen måste vi ställa in databasen i “enanvändarläge“.

Fel 1: Fel uppstår vid byte av namn på databasen via SSMS

”Det gick inte att byta namn på testet. (ObjectExplorer)
Ytterligare information:
Byt namn misslyckades för databastest (Microsoft.SqlServer.Smo)
Ett undantag inträffade vid körning av ett Transact-SQL-uttalande eller batch.
(Microsoft.SqlServer.ConnectionInfo)
Databasen kunde inte uteslutande låsas för att utföra operationen. (Microsoft SQL Server, fel: 5030) ”

Fel 2: Fel uppstår vid byte av namn på databasen med hjälp av frågan

"Msg 5030, nivå 16, tillstånd 2, rad 2. Databasen kunde inte uteslutas låses för att utföra operationen."

Först och främst kommer vi att reproducera ovan nämnda felmeddelanden för att förstå att i vilket scenario de uppstår och hur man fixar dem.

  1. Högerklicka på databasnamnet från “Object Explorer”
  2. Välj byta namn och skriv databasnamn och tryck på "stiga på" om det fungerar bra men om det inte fungerar och resulterar i ett fel som detta ”Det gick inte att byta namn (ObjectExplorer). Databasen kunde inte uteslutande låsas för att utföra operationen. (Microsoft SQL Server, fel: 5030) ” som framgår av figuren nedan har du inte exklusiv tillgång till databasen för att byta namn på en databas.
  3. Det här felet innebär att SQL Server inte tillåter att databasen byts namn förrän den inte finns i “Enanvändarläge”.
  4. Så du behöver exklusiv åtkomst till databasen för att byta namn på en databas, för att förstå detta öppna ett annat frågefönster och välj databas "testa"
  5. Försök nu att köra följande kod i det första fönstret.
  6. ALTER DATABAS [test] MODIFY NAME = [test_cases]
  7. Men detta kommer att ha ett felmeddelande så här: "Msg 5030, nivå 16, tillstånd 2, rad 2. Databasen kunde inte uteslutande låses för att utföra operationen."

Lösning:

Detta kommer att konfigurera databasen för att rulla tillbaka alla väntande transaktioner och ställa in den “Enanvändarläge” och sedan tillbaka till “Fleranvändarläge”.

  1. För att åtgärda detta måste vi stänga alla andra fönster där samma databasnamn används eller för att ställa in databasen “Enanvändarläge” med följande kommandon.
  2. Ändra databas testuppsättning single_user med rollback omedelbar go EXEC sp_renamedb 'test', 'test_cases' go ändra databas test_cases set multi_user go
  3. Resultatet blir så här: ”Icke-kvalificerade transaktioner rullas tillbaka. Beräknad återställning: 0%. Icke-kvalificerade transaktioner rullas tillbaka. Uppskattad återställning: 100%. Databasnamnet ”test_cases” har ställts in. ”

Slutsats:

Det här är flera sätt att byta namn på databasen. Om ett sätt inte fungerar för dig. Du kan gå till en annan. En sak som bör komma ihåg att byta databasnamn på dessa sätt bara byta namn på databasen. De "fysiska filerna" har fortfarande samma namn. Som vi kan se i figuren nedan har vi ändrat databasnamnet från "testa" till "testfall" men på den fysiska platsen förblev den densamma.

Så det enklaste tillvägagångssättet är att använda lösning 4 om du också vill ändra filnamnet. Du måste först ändra namnet på de fysiska filerna innan du bifogar filerna igen och sedan specificera de bytte namn på filerna när du gör omkopplingen.

Förutom att ändra namnen på databaserna måste du också kontrollera om det finns referenser i din applikationskod till databasnamnet. Detta kan vara antingen inom SQL Server eller utanför SQL Server.

Facebook Twitter Google Plus Pinterest