SQLServerデータベース内のすべてのCHECKおよび外部キー制約のリストを取得するために使用できるT-SQLコードを次に示します。
次の例では、UNION
を実行します 2つのデータベースクエリで。 1つのクエリsys.foreign_keys
無効化された外部キー、およびその他のクエリの場合sys.check_constraints
無効な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;
結果:
+----------+------------------+--------------------+------------------------+---------------+------------------+ | 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 | +----------+------------------+--------------------+------------------------+---------------+------------------+
これらは、開発環境のテストデータベースの1つで得られた結果です。これにより、現在のデータベースで無効になっているすべての外部キーとCHECK制約が返されます。別のデータベースを確認するには、そのデータベースに切り替えて実行します。
制約を無効にすると、is_not_trusted
に注意してください。 フラグは1
に設定されています 、および制約は信頼できないと見なされます。制約を再度有効にすると、制約を信頼できるものにリセットするか、信頼できないままにするかを選択できます。制約の信頼を復元する方法の詳細については、「SQL Serverで外部キー制約の信頼を復元する方法」、および「SQLServerでCHECK制約を有効にするときにWITHNOCHECKについて知っておくべきこと」を参照してください。