Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come rinominare il database in SQL Server - Tutorial SQL Server / TSQL Parte 26

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