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 dans la migration des données sur une autre base de données de la table TEMP, puis renommez la table TEMP dans une 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!
Vous devriez utiliser SQL dynamique pour le faire. Construire une chaîne et l'exécuter. Tant que vous connaissez le nom de la base de données de destination, tout devrait aller 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
Utilisation de SQL Dynamic
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 l'exécutif:
USE MyDB1
GO
EXEC MyDB2..sp_rename 'MyTable', 'YourTable'
Comme indiqué dans http://www.sqlservercenter.com/forums/topic931229-1292-1.aspx
C'est certainement possible, mais remettez-vous que SQL dynamique devrait être évité si possible. Cela conduit facilement à des problèmes de sécurité et de performance.
Après avoir réfléchi un peu à votre question, vous êtes sûr qu'il n'aurait pas plus de sens de créer l'autre table avec le nom correct, puis d'insérer simplement dans la table TEMP? Je suppose que la table TEMP est en fait une table ou une variable de table locale/globale.
Vous pouvez également utiliser SSMS. L'avantage d'utiliser SSMS est qu'il passera dans vos références et contraintes et renommera également ceux-ci. Il suffit d'ouvrir le navigateur d'objets dans SSMS Trouvez le tableau d'intérêt et renommez-le. Si vous avez des contraintes de clé étrangère dans d'autres tables qui font référence à la table en cours de renommée, il renommera le tableau du nouveau nom de la table dans ces définitions clés.