Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj listę unikalnych ograniczeń i indeksów w bazie danych

Ponieważ unikalne ograniczenia są zaimplementowane pod okładkami jako indeksy, możesz uzyskać wszystkie te informacje bezpośrednio 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');

Aby powtórzyć dla wszystkich baz danych (i prawdopodobnie bez filtra dla określonej tabeli):

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. Odpytywanie danych poprzez łączenie dwóch tabel w dwie bazy danych na różnych serwerach

  2. Mierzenie wydajności zapytań:koszt zapytania w planie wykonania a czas potrzebny

  3. Czy lepiej jest użyć unikatowego identyfikatora (GUID) lub bigint dla kolumny tożsamości?

  4. Dynamiczny SQL a procedura składowana

  5. Usuń wiadomości e-mail bazy danych z bazy danych msdb w programie SQL Server (T-SQL)