Renommer la table SQL Server à partir d'une autre base de données


10

Existe-t-il un moyen dans SQL Server de renommer une table dans une autre base de données? Lorsque vous êtes dans la base de données actuelle et que vous migrez des données vers une autre base de données dans la table TEMP, puis renommez la table TEMP dans cette autre base de données. Je ne veux pas utiliser "UTILISER [base de données]" car le nom de la base de données pourrait changer sur différents serveurs.

Merci pour l'aide à l'avance!

Réponses:


6

Vous devez utiliser SQL dynamique pour ce faire. Construisez une chaîne et exécutez-la. Tant que vous connaissez le nom de la base de données de destination, tout devrait bien se passer.

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

C'est certainement possible, mais n'oubliez pas que le SQL dynamique doit être évité autant que possible . Cela entraîne facilement des problèmes de sécurité et de performances.

Après avoir réfléchi un peu à votre question, êtes-vous sûr qu'il ne serait pas plus logique de créer l'autre table avec le nom correct, puis de l'insérer simplement à partir de la table TEMP? Je suppose que la table TEMP est en fait une table temporaire ou variable de table locale / globale.


3

Utilisation de SQL dynamique

  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 en spécifiant la base de données dans EXEC:

USE MyDB1
GO

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

Comme indiqué dans http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx


1
MyDB2..sp_renameest de loin le plus simple!
Michel de Ruiter

0

Vous pouvez également utiliser SSMS. L'avantage d'utiliser SSMS est qu'il passera en revue vos références et contraintes et les renommera également. Ouvrez simplement le navigateur d'objets dans SSMS, trouvez la table d'intérêt et renommez-la. Si vous avez des contraintes de clé étrangère dans d'autres tables qui font référence à la table en cours de changement de nom, la table sera également renommée avec le nouveau nom de table dans ces définitions de clé.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.