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 TSQLVocê 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 TSQLComo 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