Bir tabloyu T-SQL'de bir şemaya nasıl taşırım


Yanıtlar:


464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Tüm tabloları yeni bir şemaya taşımak istiyorsanız , belgelenmemiş (ve bir noktada kullanımdan kaldırılmış, ancak olası değil!) sp_MSforeachtableSaklı yordamı kullanabilirsiniz:

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Ref .: ALTER SCHEMA

SQL 2008: db şemasını dbo olarak nasıl değiştirebilirim?


6
2018 ve hala hayatımı kurtardı. Çok teşekkür ederim Mitch.
ClownCoder

19

Kısa cevap:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Tablodaki verilerin bozulmadan kaldığını teyit edebilirim ki bu muhtemelen oldukça önemlidir :)

MSDN belgelerine göre uzun yanıt ,

ALTER SCHEMA schema_name 
   TRANSFER [ Object | Type | XML Schema Collection ] securable_name [;]

Bir tablo (veya bir Tür veya XML Şeması koleksiyonunun yanı sıra herhangi bir şey) ise, varsayılan olduğu için Nesne sözcüğünü dışarıda bırakabilirsiniz.


1
Neden doğru cevabım için aşağı oy? Lütfen benimkini aynı olan ve zaten (benimki dahil) 257 upvotes olan kabul edilen cevaba göre kontrol edin.
Ters Mühendis

2
Verilerin bozulmadan kaldığını doğrulamak için bir oy verin, bu da sadece tansiyonumu kurtardı ... :)

6
@DaveBoltnman: kabul edilen cevaptan 6 yıl sonra ve yukarıdaki “aynı” olan kendi yorumunuzla bir cevap girdiniz.
Mitch Wheat

4
neden tablo farklı bir şema kapsayıcısına taşındığı için bir tablodaki veriler bozulmadan kalmasın ki?
Mitch Wheat

2
güzel isim değişikliği @ DoveBoltman. Eski sorulara cevap vermek, mevcut cevaplara bir şeyler eklediklerinde harika.
Mitch Wheat
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.