Scenario:
Spesso affrontiamo la situazione in cui è necessario rinominare il database. Pensa alla situazione, stai lavorando come sviluppatore di SQL Server per una società finanziaria e hanno il nome del database TechBrothersIT e vorrebbero rinominare Techbrothers. È necessario fornire gli script che possono essere eseguiti in ambiente di QA, UAT e produzione.Soluzione:
Rinomina tramite GUI:Rinominare il database è molto semplice, puoi semplicemente fare clic con il pulsante destro del mouse su Database e quindi scegliere Rinomina.
Come rinominare il database in SQL Server - Tutorial SQL Server / TSQL
Lo farai vedi che il nome del database ti chiederà di cambiare. Vai avanti e cambialo e premi Invio. Come rinominare il database in SQL Server - Tutorial SQL Server/TSQL
Come rinominare il database utilizzando TSQL: È possibile utilizzare TSQL per rinominare il database in SQL Server.
1) Utilizzando Sp_Rename System Stored ProcedurePossiamo utilizzare sp_rename System Stored Procedure per rinominare il database nel server SQL. Diciamo che vorremmo rinominare TechBrtohersIT in TechBrother. Possiamo usare lo script seguente.
sp_renamedb 'OldDatabaseName','NewDatabaseName' EXEC sp_renamedb 'TechBrothersIT','TechBrothers'
2) Usa Alter Database con Modifica Possiamo usare lo script sottostante per rinominare. In questo esempio, sto rinominando TechBrothersIT in TechBrothers.
USE master; GO ALTER DATABASE TechBrothersIT Modify Name = TechBrothers ; GO
Errore comune: Diciamo che il database è utilizzato da diverse applicazioni. potresti ricevere un errore inferiore.
Msg 5030, livello 16, stato 2, riga 4
Il database non può essere bloccato esclusivamente per eseguire l'operazione.
In questo caso, tu può uccidere tutte le connessioni prima di eseguire lo script di ridenominazione. Lo script di seguito può essere utilizzato per eliminare tutte le connessioni su un database. Assicurati con il tuo team e altri team prima di uccidere tutte le connessioni sul database per la ridenominazione.
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