Başka bir veritabanından SQL Server yeniden adlandırma tablosu


10

SQL Server'da başka bir veritabanındaki tabloyu yeniden adlandırmanın bir yolu var mı? Geçerli veritabanında olduğunuzda ve TEMP tablosundaki başka bir veritabanına veri taşırken ve sonra TEMP tablosunu başka bir veritabanında yeniden adlandırdığınızda. Veritabanı adı farklı sunucularda değişebileceğinden "KULLANIM [veritabanı]" kullanmak istemiyorum.

Şimdiden yardım için teşekkürler!

Yanıtlar:


6

Bunu yapmak için dinamik sql kullanmalısınız. Bir dize oluşturun ve yürütün. Hedef veritabanının adını bildiğiniz sürece, her şey yolunda olmalıdır.

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

Kesinlikle mümkündür, ancak mümkün olduğunda dinamik SQL'den kaçınılması gerektiğini unutmayın . Kolayca güvenlik ve performans sorunlarına yol açar.

Sorunuzu biraz düşündükten sonra, doğru tabloya sahip diğer tabloyu oluşturmanın ve daha sonra TEMP tablosundan içine yerleştirmenin daha anlamlı olmayacağından emin misiniz? TEMP tablosunun aslında yerel / global geçici tablo veya tablo değişkeni olduğunu varsayıyorum.


3

Dinamik SQL kullanma

  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;

Veya EXEC içindeki veritabanını belirterek:

USE MyDB1
GO

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

Http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspx'de belirtildiği gibi


1
MyDB2..sp_renameaçık ara en basit!
Michel de Ruiter

0

SSMS'yi de kullanabilirsiniz. SSMS kullanmanın avantajı, referanslarınız ve kısıtlamalarınızdan geçmesi ve bunları da yeniden adlandırmasıdır. İlgilendiğiniz tabloyu bulmak ve yeniden adlandırmak için SSMS'de nesne tarayıcısını açın. Diğer tablolarda, yeniden adlandırılmakta olan tabloya başvuran yabancı anahtar kısıtlamalarınız varsa, tabloyu bu anahtar tanımlarında da yeni tablo adıyla yeniden adlandırır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.