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

Nhận danh sách các ràng buộc và chỉ mục duy nhất trong cơ sở dữ liệu

Vì các ràng buộc duy nhất được triển khai dưới các bìa dưới dạng chỉ mục, bạn có thể lấy tất cả thông tin này trực tiếp từ sys.indexes:

SELECT
  [schema] = OBJECT_SCHEMA_NAME([object_id]),
  [table]  = OBJECT_NAME([object_id]),
  [index]  = name, 
  is_unique_constraint,
  is_unique,
  is_primary_key
FROM sys.indexes
-- WHERE [object_id] = OBJECT_ID('dbo.tablename');

Để lặp lại cho tất cả cơ sở dữ liệu (và có lẽ không có bộ lọc cho một bảng cụ thể):

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += 'SELECT db = ' + name + ',
    [schema] = OBJECT_SCHEMA_NAME([object_id]),
    [table]  = OBJECT_NAME([object_id]),
    [index]  = name, 
    is_unique_constraint,
    is_unique,
    is_primary_key
  FROM ' + QUOTENAME(name) + '.sys.indexes;'
FROM sys.databases
WHERE database_id BETWEEN 4 AND 32766;

EXEC sp_executesql @sql;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL có trả lại kết quả nhanh hơn thủ tục được lưu trữ trong SQL Server không

  2. Không thể kết nối với máy chủ SQL 2008?

  3. Khắc phục sự cố sao chép SQL Server

  4. Truy xuất ID của bản ghi đã chèn:PHp &MS SQL SERVER

  5. Khắc phục “date không tương thích với int” trong SQL Server khi thêm vào hoặc trừ ngày