Como renomear um banco de dados SQL Server?

Às vezes, precisamos mudar o nome do banco de dados porque o nome original foi baseado no projeto que se tornou irrelevante para os dados armazenados no banco de dados ou você deu um nome temporário antes e agora deseja modificá-lo. Independentemente das razões por trás da renomeação do banco de dados, neste artigo, apresentaremos maneiras de como renomear o banco de dados, quais erros podem ocorrer ao fazer isso e como corrigi-los.

Portanto, para renomear o banco de dados, você precisa seguir um dos métodos discutidos abaixo. Em primeiro lugar, temos que criar um banco de dados que precisa ser renomeado.

Criação de banco de dados:

Selecione qualquer banco de dados em seu SQL Server Management System (SSMS) . Se você não tiver nenhum, poderá criar um seguindo este procedimento.

  1. Clique com o botão direito em “ Banco de Dados ” no “Explorador de Objetos” e selecione a opção “Novo Banco de Dados”
  2. Uma janela irá aparecer, no painel esquerdo
  3. selecione “Geral”, digite o nome do banco de dados no painel direito e pressione “ok” . O banco de dados será criado

Existem vários métodos para renomear um banco de dados no SQL Server, que são discutidos a seguir em detalhes, juntamente com as versões suportadas por qualquer método específico. Posteriormente, também discutiremos os erros que surgem ao renomear o banco de dados e o procedimento para corrigi-los.

Método 1: Usando a opção de renomear SSMS para renomear o banco de dados do SQL Server

Esta é a maneira mais simples de renomear um banco de dados. Você tem que proceder assim para fazer isso.

  1. Clique com o botão direito no nome do banco de dados do explorador de objetos
  2. Selecione “renomear” , digite o nome do banco de dados e pressione “enter”

Método 2: usando SSMS para renomear o banco de dados SQL Server

Outra maneira mais simples de renomear um banco de dados, assim como renomear qualquer pasta no Windows. Você tem que continuar assim para fazer isso. Clique no banco de dados para renomeá-lo da mesma forma que renomeia as pastas do Windows.

Método 3: usando T-SQL para renomear o banco de dados SQL Server

Para SQL Server 2005, 2008, 2008R2, 2012, 2014, 2016 e 2017, este comando funciona. Execute a seguinte instrução.

ALTER DATABASE [test] MODIFY NAME = [test_cases]

A saída será “O nome do banco de dados 'test_cases' foi definido.” Conforme visto na figura abaixo.

Você pode usar o comando T-SQL abaixo para alterar o nome do banco de dados se estiver usando o SQL Server 2000. Com o SQL 2005, 2008, 2008R2, 2012, 2014, 2016 e 2017, isso ainda funciona, mas em algum estágio, Microsoft afirma que será eliminado.

Método 4: usando desanexar e anexar, renomear o SQL Server

O uso do recurso de desanexar e anexar do SQL Server pode ser usado para remover o banco de dados primeiro e atribuir um nome diferente ao banco de dados ao reconectá-lo. Os seguintes comandos T-SQL podem ser usados ​​para fazer isso

Desanexando o banco de dados executando o seguinte código:

EXEC sp_detach_db 'test', 'true'

A saída será assim

Anexando o banco de dados.

EXEC sp_attach_db @dbname = N'test ', @ filename1 = N'C: \ Arquivos de programas \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test.mdf', @ filename2 = N'C: \ Arquivos de programas \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA \ test_log.ldf ';

O resultado será:

Usando SSMS para desanexar e reanexar bancos de dados

Isso também pode ser alcançado usando SSMS seguindo estas etapas.

  1. Clique com o botão direito no banco de dados, selecione “tarefa” e clique em “Desanexar”
  2. Agora clique em “ok”
  3. Agora, para anexar o banco de dados, clique com o botão direito em “Bancos de dados” no “Object Explorer” e clique em “Anexar” . Uma tela aparecerá, clique em Adicionar. Outra janela aparecerá com os nomes dos bancos de dados, conforme mostrado abaixo, selecione “teste”.
  4. Mas queremos adicioná-lo como nome de banco de dados modificado “test_cases”, então digite “test_case” na caixa “Attach as” . Agora assim. Isso irá renomear seu banco de dados.

Além disso, discutiremos os erros que podem surgir ao renomear o banco de dados. Você precisará de acesso exclusivo ao banco de dados para renomeá-lo, o que garante que o banco de dados não tenha nenhuma outra conexão com o banco de dados. Mas, se não for esse o caso, podem ocorrer erros conforme mostrado abaixo. O erro pode até surgir quando acidentalmente abrimos outra janela com o mesmo nome de banco de dados que precisa ser renomeada.

Erros que surgem ao renomear o banco de dados via SSMS e ao executar a consulta:

Os dois erros mencionados abaixo têm duas visões diferentes porque surgem ao renomear o banco de dados usando dois métodos diferentes. O erro 1 surge ao renomear o banco de dados usando SSMS e o segundo erro ocorre ao renomear o banco de dados usando consulta. Ambos os erros apresentam a mesma mensagem  “Não foi possível bloquear exclusivamente a base de dados para realizar a operação”, o que significa que o erro surge porque o utilizador não tem acesso exclusivo à base de dados para renomear uma base de dados. Portanto, para renomear o banco de dados, precisamos definir o banco de dados no “ modo de usuário único “.

Erro 1: ocorre um erro ao renomear o banco de dados via SSMS

“Incapaz de renomear o teste. (ObjectExplorer)

Informação adicional:

Falha ao renomear para teste de banco de dados (Microsoft.SqlServer.Smo)

Ocorreu uma exceção ao executar uma instrução Transact-SQL ou lote.

(Microsoft.SqlServer.ConnectionInfo)

O banco de dados não pôde ser bloqueado exclusivamente para executar a operação. (Microsoft SQL Server, Erro: 5030) ”

Erro 2: ocorre um erro ao renomear o banco de dados usando consulta

 “Msg 5030, Level 16, State 2, Line 2. O banco de dados não pôde ser bloqueado exclusivamente para realizar a operação.”

Em primeiro lugar, reproduziremos as mensagens de erro mencionadas acima para entender em que cenário elas surgem e como corrigi-las.

  1. Clique com o botão direito do mouse no nome do banco de dados em “Object Explorer”
  2. Select rename and type database name and press “enter” if it works its fine but if it does not work and results in an error like this “Unable to rename (ObjectExplorer). The database could not be exclusively locked to perform the operation. (Microsoft SQL Server, Error: 5030)” as seen in the figure below, then you don’t have exclusive access to the database to rename a database.
  3. This error means that the SQL Server will not allow the database to be renamed until unless it is in “single-user mode”.
  4. So you will need exclusive access to the database to rename a database, to understand this open another query window and select database “test”
  5. Now in the first window try to execute the following code.
  6. ALTER DATABASE [test] MODIFY NAME = [test_cases]
  7. But this will prone to an error message like this: “Msg 5030, Level 16, State 2, Line 2. The database could not be exclusively locked to perform the operation.”

Solution:

This will configure the database to roll back any pending transactions and set it in “single user mode” and then back into “multi-user mode”.

  1. To fix this we need to close all other windows in which the same database name is being used or to set the database in “single user mode” by using the following commands.
  2. Alter database test set single_user with rollback immediate go EXEC sp_renamedb 'test', 'test_cases' go alter database test_cases set multi_user go
  3. The output will be like this: “Nonqualified transactions are being rolled back. Estimated rollback completion: 0%. Nonqualified transactions are being rolled back. Estimated rollback completion: 100%. The database name ‘test_cases’ has been set.”

Conclusion:

These are multiple ways to rename the database. If one way is not working for you. You can go to another one. One thing that should be kept in mind that changing database names using these ways just rename the database. The “physical files” still have the same names. As we can see in the figure below we have changed the database name from “test” to “test_cases” but in the physical location, it remained the same.

Portanto, a abordagem mais simples é usar a solução 4 se você quiser alterar o nome do arquivo também. Você deve primeiro alterar o nome dos arquivos físicos antes de reanexá-los e, em seguida, especificar os arquivos renomeados ao fazer a reanexação.

Além disso, além de alterar os nomes dos bancos de dados, você também precisa verificar se há referências no código do aplicativo ao nome do banco de dados. Isso pode ser dentro do SQL Server ou fora do SQL Server.