Scenarie:
Vi står ofte over for den situation, hvor vi skal omdøbe databasen. Tænk over situationen, du arbejder som SQL Server-udvikler for finansfirmaet, og de har databasenavnet TechBrothersIT, og de vil gerne omdøbe til Techbrothers. Du skal levere de scripts, der kan køres i QA, UAT og produktionsmiljø.Løsning:
Omdøbning via GUI:Omdøbning af database er meget let, du kan blot højreklikke på database og derefter vælge Omdøb.
Sådan omdøber du databasen i SQL Server - SQL Server / TSQL TutorialDu vil se, at navnet på databasen vil bede dig om at ændre. Gå videre og skift det og tryk på Enter.
Sådan omdøber du databasen i SQL Server - SQL Server / TSQL-vejledningSådan omdøber du database ved hjælp af TSQL: Du kan bruge TSQL til at omdøbe databasen i SQL Server.
1) Ved at bruge Sp_Rename System Stored Procedure kan vi bruge sp_rename system Stored Procedure til at omdøbe databasen i SQL server. Lad os sige, at vi gerne vil omdøbe TechBrtohersIT til TechBrother. Vi kan bruge nedenstående script.
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2) Brug Alter Database med Modify Vi kan bruge nedenstående script til at omdøbe. I dette eksempel omdøber jeg TechBrothersIT til TechBrothers.
USE master; GO ALTER DATABASE TechBrothersIT Modify Name = TechBrothers ; GO
Almindelig fejl: Lad os sige, at databasen er i brug af forskellige applikationer. du får muligvis under fejl.
Msg 5030, Level 16, State 2, Line 4
Databasen kunne ikke udelukkende låses til at udføre handlingen.
I dette tilfælde kan du kan dræbe alle forbindelser, før du kører omdøb script. Nedenstående script kan bruges til at dræbe alle forbindelser på en database. Sørg for med dit team og andre teams, før du dræber alle forbindelser på databasen for at omdøbe.
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