Giả sử tôi có một SQL Server 2005 bảng, TableX, với 2 chỉ số trên đó:
Thay đổi một Primary Key từ nonclustered để Clustered
PK_TableX = PRIMARY KEY nonclustered trên FieldA
IX_TableX_FieldB = Clustered trên FieldB
Tôi muốn chuyển PK thành CLUSTERED và chỉ mục còn lại là KHÔNG BAO GIỜ.
Tôi phải giả định rằng cơ sở dữ liệu sẽ được sử dụng tại thời điểm tôi cố gắng thay đổi các chỉ mục vòng - vì vậy mối quan tâm chính của tôi mà tôi muốn tránh, là tại một số điểm trong quá trình hạn chế PK sẽ không tồn tại trên bàn. Tôi muốn được bảo vệ chống lại bất kỳ nguy cơ của các phím trùng lặp được chèn vào.
tức là tôi không thể chỉ thả khóa chính và tạo lại khóa đó.
Quá trình này cần được thực hiện thông qua tập lệnh SQL chứ không phải qua SSMS.
Tôi có một cách tiếp cận mà tôi nghĩ rằng sẽ làm việc (tôi sẽ đăng nó như là một câu trả lời tiềm năng), nhưng muốn mở nó trong trường hợp tôi đang thiếu một cái gì đó hoặc có một cách tốt hơn. Thêm vào đó, nó có thể hữu ích cho những người khác trong tương lai
Tại sao bạn muốn nhóm trên khóa chính? Nó là một GUID hoặc INT? Phần lớn truy vấn của bạn có bao gồm PK không? – awright18
@ awright18 - PK nhóm cho hiệu suất tốt hơn, nó thực sự là một khóa chính phức hợp trên 2 trường int thường được truy vấn trên – AdaTheDev