SQL Server-Umbenennungstabelle aus einer anderen Datenbank

10

Gibt es in SQL Server eine Möglichkeit, eine Tabelle in einer anderen Datenbank umzubenennen? Wenn Sie sich in der aktuellen Datenbank befinden und Daten in eine andere Datenbank in der TEMP-Tabelle migrieren und dann die TEMP-Tabelle in dieser anderen Datenbank umbenennen. Ich möchte "USE [Datenbank]" nicht verwenden, da sich der Datenbankname auf verschiedenen Servern ändern kann.

Vielen Dank für die Hilfe im Voraus!


quelle

Antworten:

6

Sie sollten dazu dynamisches SQL verwenden. Erstellen Sie eine Zeichenfolge und führen Sie sie aus. Solange Sie den Namen der Zieldatenbank kennen, sollte alles in Ordnung sein.

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
quelle
3

Es ist sicherlich möglich, aber denken Sie daran, dass dynamisches SQL nach Möglichkeit vermieden werden sollte . Dies führt leicht zu Sicherheits- und Leistungsproblemen.

Sind Sie sicher, dass es nicht sinnvoller ist, die andere Tabelle mit dem richtigen Namen zu erstellen und sie dann einfach aus der TEMP-Tabelle einzufügen, nachdem Sie ein wenig über Ihre Frage nachgedacht haben? Ich gehe davon aus, dass die TEMP-Tabelle tatsächlich eine lokale / globale temporäre Tabelle oder Tabellenvariable ist.

AndrewSQL
quelle
3

Verwenden von dynamischem SQL

  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;

Oder indem Sie die Datenbank in der EXEC angeben:

USE MyDB1
GO

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

Wie unter http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx angegeben

yucer
quelle
1
MyDB2..sp_renameist bei weitem am einfachsten!
Michel de Ruiter
0

Sie können auch SSMS verwenden. Der Vorteil der Verwendung von SSMS besteht darin, dass Ihre Referenzen und Einschränkungen durchlaufen und auch umbenannt werden. Öffnen Sie einfach den Objektbrowser in SSMS, suchen Sie die gewünschte Tabelle und benennen Sie sie um. Wenn Sie in anderen Tabellen Fremdschlüsseleinschränkungen haben, die sich auf die umzubenennende Tabelle beziehen, wird die Tabelle auch in diesen Schlüsseldefinitionen in den neuen Tabellennamen umbenannt.

John McPherson
quelle