Tabla de cambio de nombre de SQL Server de otra base de datos


10

¿Hay alguna manera en SQL Server para cambiar el nombre de una tabla en otra base de datos? Cuando está en la base de datos actual y migra datos a otra base de datos en la tabla TEMP y luego cambia el nombre de la tabla TEMP en esa otra base de datos. No quiero usar "USE [base de datos]" ya que el nombre de la base de datos podría cambiar en diferentes servidores.

¡Gracias por la ayuda por adelantado!

Respuestas:


6

Debe usar sql dinámico para hacer esto. Construye una cadena y ejecútala. Mientras conozca el nombre de la base de datos de destino, todo debería estar bien.

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

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

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

3

Ciertamente es posible, pero recuerde que el SQL dinámico debe evitarse cuando sea posible . Conduce fácilmente a problemas de seguridad y rendimiento.

Después de pensar un poco en su pregunta, ¿está seguro de que no tendría más sentido crear la otra tabla con el nombre correcto y luego simplemente INSERTAR en ella desde la tabla TEMP? Supongo que la tabla TEMP es en realidad una tabla temporal local / global o una variable de tabla.


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;

O especificando la base de datos en el EXEC:

USE MyDB1
GO

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

Como se indica en http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx


1
MyDB2..sp_rename¡Es el más simple con diferencia!
Michel de Ruiter

0

También puedes usar SSMS. La ventaja de usar SSMS es que revisará sus referencias y restricciones y también las cambiará de nombre. Simplemente abra el buscador de objetos en SSMS, encuentre la tabla de interés y cámbiele el nombre. Si tiene restricciones de clave externa en otras tablas que se refieren a la tabla que se renombra, cambiará el nombre de la tabla al nuevo nombre de la tabla en esas definiciones clave también.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.