Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Dapatkan daftar batasan dan indeks unik dalam database

Karena batasan unik diterapkan di bawah sampul sebagai indeks, Anda bisa mendapatkan semua informasi ini langsung dari 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');

Untuk mengulang untuk semua database (dan mungkin tanpa filter untuk tabel tertentu):

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. Mengapa membandingkan variabel tanggal SQL dengan nol berperilaku seperti ini?

  2. Database tidak dapat dibuka karena versi 782. Server ini mendukung versi 706 dan sebelumnya. Jalur penurunan versi tidak didukung

  3. apakah ada cara untuk mendapatkan daftar fungsi inbuilt dari server sql?

  4. SQL Server 2008 - JIKA TIDAK ADA INSERT ELSE UPDATE

  5. Memanggil fungsi yang Ditentukan SQL di C #