Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Alle deaktivierten Einschränkungen in SQL Server zurückgeben (T-SQL-Beispiel)

Hier ist etwas T-SQL-Code, den Sie verwenden können, um eine Liste aller CHECK- und Fremdschlüsseleinschränkungen in einer SQL Server-Datenbank zu erhalten.

Im folgenden Beispiel mache ich eine UNION auf zwei Datenbankabfragen. Man fragt sys.foreign_keys ab für deaktivierte Fremdschlüssel und die anderen Abfragen sys.check_constraints für deaktivierte CHECK-Einschränkungen.

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;

Ergebnis:

+----------+------------------+--------------------+------------------------+---------------+------------------+
| 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                |
+----------+------------------+--------------------+------------------------+---------------+------------------+

Dies sind die Ergebnisse, die ich in einer meiner Testdatenbanken in meiner Entwicklungsumgebung erhalte. Dadurch werden alle deaktivierten Fremdschlüssel und CHECK-Einschränkungen in der aktuellen Datenbank zurückgegeben. Um eine andere Datenbank zu überprüfen, wechseln Sie einfach zu dieser Datenbank und führen Sie sie dort aus.

Beachten Sie, dass beim Deaktivieren einer Einschränkung der is_not_trusted Flag wird auf 1 gesetzt , und die Einschränkung gilt als nicht vertrauenswürdig. Wenn Sie die Einschränkung erneut aktivieren, haben Sie die Möglichkeit, sie auf vertrauenswürdig zurückzusetzen oder sie als nicht vertrauenswürdig zu belassen. Weitere Informationen zum Wiederherstellen des Vertrauens in eine Einschränkung finden Sie unter So stellen Sie das Vertrauen in eine Fremdschlüssel-Einschränkung in SQL Server wieder her und was Sie über WITH NOCHECK wissen sollten, wenn Sie eine CHECK-Einschränkung in SQL Server aktivieren.