Tôi yêu các khóa ngoại, nhưng tôi đang gặp phải một vấn đề với chúng. Tôi có một chương trình chuyển đổi nơi tôi đang vô hiệu hóa các khóa ngoại bảng. Lý do tôi làm điều này là để tôi có thể khôi phục tất cả các bản ghi trong bảng chính, nhưng để lại các bảng khác phụ thuộc vào một bản ghi mà không bị phải phục hồi chúng mỗi lần vì chúng là HUGE.Bật khóa ngoài bằng Kiểm tra dữ liệu hiện có
Tôi đang sử dụng các lệnh này để vô hiệu hóa và kích hoạt lại các phím nước ngoài:
ALTER TABLE MyTable nocheck CONSTRAINT MyConstraint
ALTER TABLE MyTable ràng buộc kiểm tra MyConstraint
Tuy nhiên, sau khi tôi tái cho phép ràng buộc "Kiểm tra dữ liệu hiện tại khi tạo hoặc kích hoạt lại" vẫn được đặt thành Không. Tôi hiểu rằng nó được đặt thành Không vì tôi đã vô hiệu hóa ràng buộc, nhưng bằng cách thực hiện điều này, nó thay đổi lược đồ cơ sở dữ liệu của tôi. . Tôi nghĩ rằng điều này sẽ được coi là tái kích hoạt các ràng buộc và sẽ kiểm tra các dữ liệu hiện có, nhưng dường như không.
Không có cách nào để thay đổi điều này bằng lệnh ALTER TABLE? Tôi biết tôi có thể nếu tôi bỏ ràng buộc và tạo lại nó, nhưng tôi không định viết kịch bản để tạo lại mọi khóa ngoại mà tôi có và duy trì nó.
Tôi đang sử dụng SQL Server 2008 R2.
Cảm ơn, bạn là một phao cứu sinh. –
Đối với hồ sơ, vì tôi đã có một thời gian tìm kiếm ở nơi khác: "sys.foreign_keys.is_not_trusted" tương ứng với "Kiểm tra dữ liệu hiện có về tạo hoặc kích hoạt lại" trong hộp thoại Quản lý máy chủ SQL "Quan hệ khóa ngoài". – leqid