Tabel penggantian nama SQL Server dari database lain


10

Apakah ada cara di SQL Server untuk mengganti nama tabel di database lain? Ketika Anda berada di database saat ini dan memigrasikan data ke database lain di tabel TEMP dan kemudian mengubah nama tabel TEMP di database lain itu. Saya tidak ingin menggunakan "USE [database]" karena nama database dapat berubah pada server yang berbeda.

Terima kasih atas bantuannya sebelumnya!

Jawaban:


6

Anda harus menggunakan sql dinamis untuk melakukan ini. Bangun string dan jalankan. Selama Anda tahu nama database tujuan, semuanya harus baik-baik saja.

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

Memang mungkin, tetapi ingat bahwa SQL dinamis harus dihindari bila memungkinkan . Mudah menyebabkan masalah keamanan dan kinerja.

Setelah sedikit memikirkan pertanyaan Anda, apakah Anda yakin tidak akan lebih masuk akal untuk membuat tabel lain dengan nama yang benar dan kemudian cukup menyisipkannya dari tabel TEMP? Saya berasumsi bahwa tabel TEMP sebenarnya adalah variabel temp / tabel lokal / global.


3

Menggunakan SQL dinamis

  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;

Atau dengan menentukan basis data dalam EXEC:

USE MyDB1
GO

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

Sebagaimana dinyatakan dalam http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx


1
MyDB2..sp_renamesejauh ini paling sederhana!
Michel de Ruiter

0

Anda juga dapat menggunakan SSMS. Keuntungan menggunakan SSMS adalah bahwa ia akan melewati referensi dan kendala Anda dan mengganti nama juga. Cukup buka peramban objek di SSMS, temukan tabel yang diinginkan dan beri nama. Jika Anda memiliki batasan kunci asing di tabel lain yang merujuk ke tabel yang diganti namanya, itu akan mengubah nama tabel menjadi nama tabel baru di definisi kunci tersebut juga.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.