Tabella di rinomina di SQL Server da un altro database


10

Esiste un modo in SQL Server per rinominare una tabella in un altro database? Quando ci si trova nel database corrente e si esegue la migrazione dei dati su un altro database nella tabella TEMP e quindi si rinomina la tabella TEMP in quell'altro database. Non voglio usare "USE [database]" poiché il nome del database potrebbe cambiare su server diversi.

Grazie per l'aiuto in anticipo!

Risposte:


6

Si dovrebbe usare sql dinamico per fare questo. Costruisci una stringa ed eseguila. Finché conosci il nome del database di destinazione, tutto dovrebbe andare bene.

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

È certamente possibile, ma ricorda che l'SQL dinamico dovrebbe essere evitato quando possibile . Porta facilmente a problemi di sicurezza e prestazioni.

Dopo aver pensato un po 'alla tua domanda, sei sicuro che non avrebbe più senso creare l'altra tabella con il nome corretto e quindi semplicemente INSERIRE in essa dalla tabella TEMP? Suppongo che la tabella TEMP sia in realtà una tabella temporanea locale / globale o una variabile di tabella.


3

Utilizzando SQL dinamico

  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 specificando il database in EXEC:

USE MyDB1
GO

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

Come indicato in http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx


1
MyDB2..sp_renameè di gran lunga più semplice!
Michel de Ruiter,

0

Puoi anche usare SSMS. Il vantaggio dell'utilizzo di SSMS è che passerà attraverso i riferimenti e i vincoli e rinominerà anche quelli. Basta aprire il browser degli oggetti in SSMS per trovare la tabella di interesse e rinominarla. Se in altre tabelle sono presenti vincoli di chiave esterna che fanno riferimento alla tabella da rinominare, la tabella verrà rinominata con il nome della nuova tabella anche in quelle definizioni chiave.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.