5

Tôi đã tạo sai lầm khi tạo khóa chính được nhóm trên cột GUID. Có nhiều bảng tham khảo bảng đó với các khóa ngoài được xác định. Kích thước bảng không đáng kể.Cách chuyển đổi khóa chính được nhóm thành không được nhóm mà không cần thả các khóa ngoài trong SQL Server 2005

Tôi muốn chuyển đổi từ cụm sang không được nhóm mà không cần phải tự thả và tạo lại bất kỳ khóa ngoại nào hoặc thậm chí ràng buộc khóa chính.

Có thể đạt được điều đó trong MS SQL2005 và làm thế nào nếu có?

Có thể đạt được điều đó TRỰC TUYẾN (không có thời gian giảm db) nếu có?

Trả lời

3

Bạn có thể thử tạo chỉ mục NC duy nhất không độc quyền trước, sau đó thả PK nhóm. Các FK nên nhận ra chỉ số này khác (nhưng có thể không: không bao giờ thử nó).

Khi bạn chạy ALTER TABLE để thả nhóm PK sử dụng tùy chọn ONLINE. Tuy nhiên, nó chỉ có sẵn trong phiên bản Enterprise.

ALTER TABLE Mytable DROP CONSTRAINT PK_Mytable WITH (ONLINE = ON) 

Bạn không thể sử dụng ONLINE cho bit ADD CONSTRAINT.

Về cơ bản, lựa chọn của bạn được giới hạn mà không ngăn chặn, hoặc tạo ra các bảng khác đầu tiên và di chuyển dữ liệu qua ...

+2

Tôi ước gì tôi có thể nhận được một câu trả lời mà không cần chữ "thử" ... – alpav

+0

@alpav: không may, tôi có lẽ chỉ cần thả rất nhiều, sửa chữa, tái tạo. Và cố gắng nhớ cho thời gian tới :-) Hãy thử nó với một bảng hàng 200 triệu: đó là đau đớn ... – gbn

+2

FKs không nhận ra một chỉ mục khác. Khi tôi cố gắng loại bỏ ràng buộc PK ngay cả sau khi tạo ra ràng buộc duy nhất khác và vô hiệu hóa ràng buộc khóa ngoài với ALTER TABLE Bảng2 NOCHECK CONSTRAINT FK_Table2_Table1, nó phàn nàn rằng "Ràng buộc 'PK_Table1' đang được tham chiếu bởi bảng 'Table2', ràng buộc khóa ngoài 'FK_Table2_Table1' Chỉ giảm FK hoạt động. – alpav