Làm cách nào để di chuyển bảng vào một lược đồ trong T-SQL


Câu trả lời:


464
ALTER SCHEMA TargetSchema 
    TRANSFER SourceSchema.TableName;

Nếu bạn muốn di chuyển tất cả các bảng vào một lược đồ mới, bạn có thể sử dụng sp_MSforeachtablethủ tục được lưu trữ (và không được chấp nhận tại một số điểm, nhưng không thể!)

exec sp_MSforeachtable "ALTER SCHEMA TargetSchema TRANSFER ?"

Tham khảo: ALTER SCHEMA

SQL 2008: Làm cách nào để thay đổi lược đồ db thành dbo


6
2018 và vẫn cứu mạng tôi. Cảm ơn Mitch rất nhiều.
ClownCoder

19

Câu trả lời ngắn:

ALTER SCHEMA new_schema TRANSFER old_schema.table_name

Tôi có thể xác nhận rằng dữ liệu trong bảng vẫn còn nguyên, có lẽ khá quan trọng :)

Câu trả lời dài theo tài liệu MSDN ,

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

Nếu đó là một bảng (hoặc bất cứ thứ gì ngoài bộ sưu tập Lược đồ loại hoặc XML), bạn có thể bỏ qua từ Object vì đó là mặc định.


1
Tại sao downvote cho câu trả lời đúng của tôi? Vui lòng kiểm tra câu trả lời của tôi với câu trả lời được chấp nhận, tương tự, và đã có 256 lượt upvote (bao gồm cả câu trả lời của tôi).
Kỹ sư đảo ngược

2
Có một upvote để xác nhận dữ liệu vẫn còn nguyên, điều này chỉ giúp tôi tiết kiệm được huyết áp ... :)

6
@DaveBoltnman: bạn đã nhập câu trả lời 6 năm sau câu trả lời được chấp nhận và bằng nhận xét của riêng bạn ở trên "giống nhau".
Mitch Wheat

4
tại sao dữ liệu trong bảng không còn nguyên vẹn chỉ vì bảng được di chuyển vào một thùng chứa lược đồ khác?
Mitch Wheat

2
thay đổi tên đẹp @DaveBoltman. Trả lời các câu hỏi cũ là rất tốt, khi họ thêm một cái gì đó vào câu trả lời hiện có.
Mitch Wheat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.