ฉันจะย้ายตารางไปยังสกีมาใน T-SQL ได้อย่างไร


273

ฉันต้องการย้ายตารางไปยัง Schema ที่ระบุโดยใช้ T-SQL หรือไม่ ฉันใช้ SQL Server 2008


1
หากคุณต้องการย้ายหลายตารางไปที่สคีมาใหม่ให้ดูการเปลี่ยนชื่อหลายตาราง
โทนี่

คำตอบ:


464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

หากคุณต้องการย้ายตารางทั้งหมดไปยังสคีมาใหม่คุณสามารถใช้sp_MSforeachtableขั้นตอนการจัดเก็บที่ไม่ได้ลงทะเบียน (และเลิกใช้แล้วในบางจุด แต่ไม่แน่!)

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Ref .: ALTER SCHEMA

SQL 2008: ฉันจะเปลี่ยน db schema เป็น dbo ได้อย่างไร


6
2561 และยังช่วยชีวิตฉัน ขอบคุณมากมิทช์
ClownCoder

19

คำตอบสั้น ๆ :

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

ฉันสามารถยืนยันได้ว่าข้อมูลในตารางยังคงเหมือนเดิมซึ่งอาจเป็นเรื่องสำคัญ :)

คำตอบยาวตามเอกสาร MSDN ,

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

หากเป็นตาราง (หรืออะไรก็ตามนอกเหนือจากคอลเลกชัน Type หรือ XML Schema) คุณสามารถเลิกใช้คำว่า Object เนื่องจากเป็นค่าเริ่มต้น


1
ทำไม downvote สำหรับคำตอบที่ถูกต้องของฉัน? โปรดตรวจสอบคำตอบที่ฉันตอบซึ่งเป็นเหมือนกันและมีผู้โหวต 257 คนแล้ว (รวมถึงของฉันด้วย)
วิศวกรที่กลับรายการ

2
มี upvote ยืนยันว่าข้อมูลยังคงเหมือนเดิมซึ่งเพิ่งบันทึกความดันโลหิตของฉัน ... :)

6
@DaveBoltnman: คุณป้อนคำตอบ 6 ปีหลังจากคำตอบที่ยอมรับและจากความคิดเห็นของคุณเองข้างต้น "ซึ่งเหมือนกัน"
มิทช์ข้าวสาลี

4
เหตุใดข้อมูลในตารางจะไม่อยู่เหมือนเดิมเพราะตารางจะถูกย้ายไปยังคอนเทนเนอร์สคีมาที่ต่างกัน
มิทช์ข้าวสาลี

2
การเปลี่ยนชื่อที่ดี @DaveBoltman การตอบคำถามแบบเก่านั้นยอดเยี่ยมเมื่อพวกมันเพิ่มคำตอบลงไป
มิทช์ข้าวสาลี
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.