sql >> Database >  >> RDS >> Sqlserver

Alle uitgeschakelde beperkingen in SQL Server retourneren (T-SQL-voorbeeld)

Hier is wat T-SQL-code die u kunt gebruiken om een ​​lijst te krijgen van alle beperkingen voor CHECK en externe sleutels in een SQL Server-database.

In het volgende voorbeeld doe ik een UNION op twee databasequery's. Eén zoekt sys.foreign_keys voor uitgeschakelde externe sleutels en de andere zoekopdrachten sys.check_constraints voor uitgeschakelde CONTROLEER-beperkingen.

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;

Resultaat:

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

Dit zijn de resultaten die ik krijg op een van mijn testdatabases in mijn ontwikkelomgeving. Dit retourneert alle uitgeschakelde externe sleutel- en CHECK-beperkingen in de huidige database. Om een ​​andere database te controleren, schakelt u eenvoudig over naar die database en voert u deze daar uit.

Merk op dat wanneer u een beperking uitschakelt, de is_not_trusted vlag is ingesteld op 1 en de beperking wordt als niet vertrouwd beschouwd. Wanneer u de beperking opnieuw inschakelt, heeft u de mogelijkheid om deze opnieuw in te stellen op vertrouwd of als niet-vertrouwd te laten. Voor meer informatie over het herstellen van vertrouwen in een beperking, zie Vertrouwen herstellen in een externe-sleutelbeperking in SQL Server en Wat u moet weten over WITH NOCHECK bij het inschakelen van een CHECK-beperking in SQL Server.


  1. Gegevens opvragen uit XML

  2. Hoe voorloopnullen van datums in Oracle te verwijderen

  3. Zijn er nadelen aan het altijd gebruiken van nvarchar(MAX)?

  4. Hoe id met max datumgroep per categorie selecteren in PostgreSQL?