Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como renomear o banco de dados no SQL Server - Tutorial SQL Server / TSQL Parte 26

Cenário:

Muitas vezes enfrentamos a situação em que precisamos renomear o banco de dados. Pense na situação, você está trabalhando como desenvolvedor do SQL Server para uma empresa financeira e eles têm o nome de banco de dados TechBrothersIT e gostariam de renomear para Techbrothers. Você precisa fornecer os scripts que podem ser executados no ambiente de QA, UAT e Produção.

Solução:

Renomeando por GUI:
Renomear banco de dados é muito fácil, você pode simplesmente clicar com o botão direito do mouse no banco de dados e escolher Renomear.
Como renomear banco de dados no SQL Server - SQL Server / Tutorial TSQL

Você vai veja que o nome do banco de dados solicitará a alteração. Vá em frente e altere e pressione Enter. Como renomear banco de dados no SQL Server - SQL Server / Tutorial TSQL



Como renomear banco de dados usando TSQL: Você pode usar TSQL para renomear banco de dados no SQL Server.
1) Usando o procedimento armazenado do sistema Sp_Rename Podemos usar o procedimento armazenado do sistema sp_rename para renomear o banco de dados no servidor SQL. Digamos que gostaríamos de renomear TechBrtohersIT para TechBrother. Podemos usar o script abaixo.
sp_renamedb 'OldDatabaseName','NewDatabaseName'


EXEC sp_renamedb 'TechBrothersIT','TechBrothers'

2) Use Alter Database com Modify Podemos usar o script abaixo para renomear. Neste exemplo, estou renomeando TechBrothersIT para TechBrothers.
USE master;
GO
ALTER DATABASE TechBrothersIT
Modify Name = TechBrothers ;
GO

Erro comum: Digamos que o banco de dados esteja sendo usado por diferentes aplicativos. você pode obter o erro abaixo.
Msg 5030, Level 16, State 2, Line 4
O banco de dados não pôde ser bloqueado exclusivamente para executar a operação.

Neste caso, você pode matar todas as conexões antes de executar o script de renomeação. O script abaixo pode ser usado para matar todas as conexões em um banco de dados. Certifique-se com sua equipe e outras equipes antes de matar todas as conexões no banco de dados para renomear.
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