sql >> Databáze >  >> RDS >> Sqlserver

Získejte seznam jedinečných omezení a indexů v databázi

Protože jedinečná omezení jsou implementována pod kryty jako indexy, můžete všechny tyto informace získat přímo z 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');

Pro opakování pro všechny databáze (a pravděpodobně bez filtru pro konkrétní tabulku):

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. Víkendová data shrňte jinak než všední dny

  2. Služba Docker compose postgresql - nelze během sestavování vytvořit uživatele a databázi?

  3. Potřebné přenosné řešení SQL upsert (vložení+aktualizace).

  4. pomocí virtuálních polí k součtu hodnot v cakephp