Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Trả lại tất cả các ràng buộc bị vô hiệu hóa trong SQL Server (Ví dụ T-SQL)

Dưới đây là một số mã T-SQL mà bạn có thể sử dụng để nhận danh sách tất cả các ràng buộc CHECK và khóa ngoại trong cơ sở dữ liệu SQL Server.

Trong ví dụ sau, tôi thực hiện UNION trên hai truy vấn cơ sở dữ liệu. Một truy vấn sys.foreign_keys cho các khóa ngoại bị vô hiệu hóa và các truy vấn khác sys.check_constraints đối với các ràng buộc CHECK bị vô hiệu hóa.

SELECT
  SCHEMA_NAME(schema_id) AS [Schema],
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  type_desc,
  is_disabled, 
  is_not_trusted
FROM sys.foreign_keys
WHERE is_disabled = 1
UNION
SELECT 
  SCHEMA_NAME(schema_id),
  OBJECT_NAME(parent_object_id),
  name,
  type_desc,
  is_disabled, 
  is_not_trusted
FROM sys.check_constraints
WHERE is_disabled = 1;

Kết quả:

+----------+------------------+--------------------+------------------------+---------------+------------------+
| Schema   | Table            | Constraint         | type_desc              | is_disabled   | is_not_trusted   |
|----------+------------------+--------------------+------------------------+---------------+------------------|
| dbo      | BandMember       | FK_BandMember_Band | FOREIGN_KEY_CONSTRAINT | 1             | 1                |
| dbo      | City             | FK_City_Country    | FOREIGN_KEY_CONSTRAINT | 1             | 1                |
| dbo      | MembershipPeriod | chkValidEndDate    | CHECK_CONSTRAINT       | 1             | 1                |
+----------+------------------+--------------------+------------------------+---------------+------------------+

Đây là những kết quả tôi nhận được trên một trong những cơ sở dữ liệu thử nghiệm trong môi trường phát triển của tôi. Điều này trả về tất cả khóa ngoại bị vô hiệu hóa và ràng buộc KIỂM TRA trong cơ sở dữ liệu hiện tại. Để kiểm tra cơ sở dữ liệu khác, chỉ cần chuyển sang cơ sở dữ liệu đó và chạy nó ở đó.

Lưu ý rằng khi bạn tắt một ràng buộc, is_not_trusted cờ được đặt thành 1 , và ràng buộc được coi là không đáng tin cậy. Khi bạn bật lại ràng buộc, bạn có tùy chọn đặt lại nó thành đáng tin cậy hoặc để nó là không đáng tin cậy. Để biết thêm thông tin về cách khôi phục độ tin cậy trong một ràng buộc, hãy xem Cách khôi phục niềm tin trong một ràng buộc khóa ngoại trong SQL Server và những điều bạn nên biết với NOCHECK khi bật một ràng buộc kiểm tra trong SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra tình trạng máy chủ SQL chủ động, Phần 2:Bảo trì

  2. Cách kiểm tra xem một cột được tính toán có "Cố định" trong SQL Server hay không

  3. Thêm danh tính vào cột hiện có

  4. Khắc phục “Không thể chuyển đổi khi chuyển đổi giá trị varchar” khi cố gắng ghép nối trong SQL Server

  5. Kiểm tra xem một hàng có tồn tại hay không, nếu không, hãy chèn