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älvstudieDu 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älvstudierHur 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