sql >> データベース >  >> RDS >> Sqlserver

SQL Serverで無効になっているすべての制約を返す(T-SQLの例)

    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について知っておくべきこと」を参照してください。


    1. MySQLでのWEIGHT_STRING()関数のしくみ

    2. OracleDatabaseのPL/SQLコレクションの概要

    3. SQLの列名があいまいなクエリエラー

    4. 接続が悪くなったときにJBoss接続プールをOracleに再接続する方法はありますか?