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