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 Tutorial
Du 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-vejledning
Så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