Scenario:
Vi möter ofta situationen där vi behöver byta namn på databasen. Tänk på situationen, du arbetar som SQL Server-utvecklare för finansföretaget och de har databasnamnet TechBrothersIT och de skulle vilja byta namn till Techbrothers. Du måste tillhandahålla de skript som kan köras i QA, UAT och produktionsmiljö.Lösning:
Ändra namn via GUI:Det är väldigt enkelt att byta namn på databasen, du kan helt enkelt högerklicka på databas och sedan välja Byt namn.
Hur man byter namn på databas i SQL Server - SQL Server / TSQL självstudie
Du kommer se att namnet på databasen kommer att uppmana dig att ändra. Gå vidare och ändra det och tryck på Enter. Hur man byter namn på en databas i SQL Server - SQL Server / TSQL självstudier
Hur man byter namn på databas med hjälp av TSQL: Du kan använda TSQL för att byta namn på databasen i SQL Server.
1) Genom att använda Sp_Rename System Stored ProcedureVi kan använda sp_rename system Stored Procedure för att byta namn på databasen i SQL-servern. Låt oss säga att vi skulle vilja byta namn på TechBrtohersIT till TechBrother. Vi kan använda nedanstående skript.
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2) Använd Alter Database med Modify Vi kan använda nedanstående skript för att byta namn. I det här exemplet döper jag om TechBrothersIT till TechBrothers.
USE master; GO ALTER DATABASE TechBrothersIT Modify Name = TechBrothers ; GO
Vanligt fel: Låt oss säga att databasen används av olika applikationer. du kan få under felet.
Msg 5030, Level 16, State 2, Line 4
Databasen kunde inte låsas exklusivt för att utföra operationen.
I det här fallet kan du kan döda alla anslutningar innan du kör byta namn på skriptet. Nedanstående skript kan användas för att döda alla anslutningar på en databas. Se till med ditt team och andra team innan du dödar alla anslutningar på databasen för att döpa om.
USE MASTER GO DECLARE @DatabaseName AS VARCHAR(500) -->Provide the DataBaseName for which want to Kill all processes. SET @DatabaseName='YourDataBaseName' DECLARE @Spid INT DECLARE KillProcessCur CURSOR FOR SELECT spid FROM sys.sysprocesses WHERE DB_NAME(dbid) = @DatabaseName OPEN KillProcessCur FETCH Next FROM KillProcessCur INTO @Spid WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @SQL VARCHAR(500)=NULL SET @SQL='Kill ' + CAST(@Spid AS VARCHAR(5)) EXEC (@SQL) PRINT 'ProcessID =' + CAST(@Spid AS VARCHAR(5)) + ' killed successfull' FETCH Next FROM KillProcessCur INTO @Spid END CLOSE KillProcessCur DEALLOCATE KillProcessCur