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!

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

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.


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.