Tabela de renomeação do SQL Server de outro banco de dados

10

Existe uma maneira no SQL Server renomear uma tabela em outro banco de dados? Quando você está no banco de dados atual e está migrando dados para outro banco de dados na tabela TEMP e renomeando a tabela TEMP nesse outro banco de dados. Eu não quero usar "USE [banco de dados]", pois o nome do banco de dados pode mudar em diferentes servidores.

Obrigado pela ajuda antecipadamente!


fonte

Respostas:

6

Você deve usar o sql dinâmico para fazer isso. Crie uma string e execute-a. Desde que você saiba o nome do banco de dados de destino, tudo ficará bem.

use CurrentDB
declare @x varchar(1000), @otherDb sysname = 'NewDB';

set @x = 'use ' + @otherDB + '

EXEC sp_rename ''dbo.temp'', ''temp2''
'
exec (@x);
print @x;
GO
Marian
fonte
3

Certamente é possível, mas lembre-se de que o SQL dinâmico deve ser evitado sempre que possível . Isso leva facilmente a problemas de segurança e desempenho.

Depois de pensar um pouco sobre sua pergunta, você tem certeza de que não faria mais sentido criar a outra tabela com o nome correto e simplesmente inseri-la na tabela TEMP? Estou assumindo que a tabela TEMP é realmente uma tabela temporária local / global ou variável de tabela.

AndrewSQL
fonte
3

Usando SQL dinâmico

  USE MyDB1
  GO

  DECLARE @db_name   NVARCHAR(20)   = 'myDB2'
  DECLARE @sql       NVARCHAR(1000)

  SET @sql = N'EXEC '+ quotename(@db_name)+ '..sp_rename ''[MyTable]'', ''[YourTable]'';';

  PRINT @sql;
  EXEC SP_EXECUTESQL @sql;

Ou especificando o banco de dados no EXEC:

USE MyDB1
GO

EXEC MyDB2..sp_rename 'MyTable', 'YourTable'

Conforme declarado em http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx

yucer
fonte
11
MyDB2..sp_renameé mais simples de longe!
Michel de Ruiter
0

Você também pode usar o SSMS. A vantagem de usar o SSMS é que ele passa por suas referências e restrições e renomeia-as também. Simplesmente abra o navegador de objetos no SSMS, encontre a tabela de interesse e renomeie-a. Se você tiver restrições de chave estrangeira em outras tabelas que se referem à renomeação da tabela, ela também renomeará a tabela para o novo nome da tabela nessas definições de chave.

John McPherson
fonte