Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Вземете списъка с уникални ограничения и индекси в база данни

Тъй като уникалните ограничения са внедрени под кориците като индекси, можете да получите цялата тази информация директно от 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');

За да повторите за всички бази данни (и вероятно без филтъра за конкретна таблица):

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. Използване на UDF за стойност по подразбиране на колона

  2. Как правилно да вмъкнете нов ред в nvarchar

  3. Разделяне на много голям низ с персонализиран разделител?

  4. Одит на промените в данните в SQL Server 2008

  5. Застой при ИЗБЕРЕТЕ/АКТУАЛИЗИРАНЕ