Таблиця перейменування SQL Server з іншої бази даних


10

Чи є спосіб у SQL Server перейменувати таблицю в іншій базі даних? Коли ви перебуваєте в поточній базі даних і переносите дані на іншу базу даних у таблиці TEMP, а потім перейменовуєте таблицю TEMP в іншу базу даних. Я не хочу використовувати "USE [database]", оскільки назва бази може змінюватися на різних серверах.

Заздалегідь дякую за допомогу!

Відповіді:


6

Для цього слід використовувати динамічний sql. Побудуйте рядок і виконайте його. Поки ви знаєте назву бази даних призначення, все повинно бути добре.

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

Це, безумовно, можливо, але пам’ятайте, що динамічного SQL слід уникати, коли це можливо . Це легко призводить до проблем із безпекою та працездатністю.

Трохи задумавшись над своїм питанням, чи впевнені ви, що не було б більше сенсу створювати іншу таблицю з правильним іменем, а потім просто ВСТАВИТИ в неї таблицю TEMP? Я припускаю, що таблиця TEMP насправді є локальною / глобальною тимчасовою таблицею або змінною таблиці.


3

Використання динамічного 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;

Або вказавши базу даних у EXEC:

USE MyDB1
GO

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

Як зазначено в http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx


1
MyDB2..sp_renameнайпростіший на сьогоднішній день!
Мішель де Руйтер

0

Ви також можете використовувати SSMS. Перевага використання SSMS полягає в тому, що він буде проходити через ваші посилання та обмеження, а також перейменовувати їх. Просто відкрийте браузер об’єктів у SSMS, знайдіть цікаву таблицю та перейменуйте її. Якщо у вас є інші обмеження в інших таблицях, які посилаються на перейменовану таблицю, вона перейменовано таблицю в нову назву таблиці в цих ключових визначеннях.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.