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

Zwróć wszystkie wyłączone ograniczenia w programie SQL Server (przykład T-SQL)

Oto kod T-SQL, którego możesz użyć, aby uzyskać listę wszystkich ograniczeń CHECK i kluczy obcych w bazie danych SQL Server.

W poniższym przykładzie robię UNION na dwóch zapytaniach do bazy danych. Jeden pyta sys.foreign_keys dla wyłączonych kluczy obcych i innych zapytań sys.check_constraints dla niepełnosprawnych ograniczeń CHECK.

SELECT
  SCHEMA_NAME(schema_id) AS [Schema],
  OBJECT_NAME(parent_object_id) AS 'Table',
  name AS 'Constraint',
  type_desc,
  is_disabled, 
  is_not_trusted
FROM sys.foreign_keys
WHERE is_disabled = 1
UNION
SELECT 
  SCHEMA_NAME(schema_id),
  OBJECT_NAME(parent_object_id),
  name,
  type_desc,
  is_disabled, 
  is_not_trusted
FROM sys.check_constraints
WHERE is_disabled = 1;

Wynik:

+----------+------------------+--------------------+------------------------+---------------+------------------+
| Schema   | Table            | Constraint         | type_desc              | is_disabled   | is_not_trusted   |
|----------+------------------+--------------------+------------------------+---------------+------------------|
| dbo      | BandMember       | FK_BandMember_Band | FOREIGN_KEY_CONSTRAINT | 1             | 1                |
| dbo      | City             | FK_City_Country    | FOREIGN_KEY_CONSTRAINT | 1             | 1                |
| dbo      | MembershipPeriod | chkValidEndDate    | CHECK_CONSTRAINT       | 1             | 1                |
+----------+------------------+--------------------+------------------------+---------------+------------------+

Oto wyniki, które otrzymuję w jednej z moich testowych baz danych w moim środowisku programistycznym. Zwraca to wszystkie wyłączone ograniczenia klucza obcego i CHECK w bieżącej bazie danych. Aby sprawdzić inną bazę danych, po prostu przełącz się na tę bazę i tam ją uruchom.

Zwróć uwagę, że kiedy wyłączysz ograniczenie, is_not_trusted flaga jest ustawiona na 1 , a ograniczenie jest uważane za niezaufane. Po ponownym włączeniu ograniczenia masz możliwość zresetowania go do zaufanego lub pozostawienia jako niezaufanego. Aby uzyskać więcej informacji na temat przywracania zaufania w ograniczeniu, zobacz Jak przywrócić zaufanie w ograniczeniu klucza obcego w SQL Server i Co należy wiedzieć o funkcji NOCHECK podczas włączania ograniczenia CHECK w SQL Server.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server:DELETE vs TRUNCATE

  2. Instrukcja usuwania SQL Server:jak usunąć jeden lub wiele wierszy z tabeli

  3. t-sql select pobierz wszystkie miesiące w zakresie lat

  4. Jak utworzyć unikalne ograniczenie dla wielu kolumn w SQL Server — samouczek SQL Server / TSQL część 96

  5. Jak uzyskać OBJECT_NAME() z innej bazy danych w SQL Server