Tabela zmiany nazwy SQL Server z innej bazy danych

10

Czy w programie SQL Server jest sposób na zmianę nazwy tabeli w innej bazie danych? Gdy znajdujesz się w bieżącej bazie danych i migrujesz dane do innej bazy danych w tabeli TEMP, a następnie zmieniasz nazwę tabeli TEMP w tej innej bazie danych. Nie chcę używać „USE [baza danych]”, ponieważ nazwa bazy danych może ulec zmianie na różnych serwerach.

Z góry dziękuję za pomoc!


źródło

Odpowiedzi:

6

W tym celu należy użyć dynamicznego narzędzia SQL. Zbuduj ciąg i uruchom go. Tak długo, jak znasz nazwę docelowej bazy danych, wszystko powinno być w porządku.

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
źródło
3

Jest to oczywiście możliwe, ale zrobić Pamiętaj, że dynamiczny SQL należy unikać , jeśli to możliwe . Z łatwością prowadzi to do problemów związanych z bezpieczeństwem i wydajnością.

Po zastanowieniu się trochę nad twoim pytaniem jesteś pewien, że nie ma większego sensu tworzenie drugiej tabeli o prawidłowej nazwie, a następnie po prostu WSTAWIĆ do niej z tabeli TEMP? Zakładam, że tabela TEMP jest w rzeczywistości lokalną / globalną tabelą tymczasową lub zmienną tabelową.

AndrewSQL
źródło
3

Korzystanie z dynamicznego 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;

Lub określając bazę danych w EXEC:

USE MyDB1
GO

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

Jak podano w http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx

Yumper
źródło
1
MyDB2..sp_renamejest najprostszy jak dotąd!
Michel de Ruiter,
0

Możesz także użyć SSMS. Zaletą korzystania z SSMS jest to, że przejdzie przez odniesienia i ograniczenia, a także zmieni ich nazwy. Wystarczy otworzyć przeglądarkę obiektów w SSMS, znaleźć tabelę zainteresowań i zmienić jej nazwę. Jeśli masz ograniczenia klucza obcego w innych tabelach, które odnoszą się do zmienianej nazwy tabeli, zmieni ona nazwę tabeli na nową nazwę tabeli również w tych definicjach kluczy.

John McPherson
źródło