Aracılığıyla paylaş


dbcc CHECKCONSTRAINTS Transact-SQL)

Belirtilen sınırlama veya geçerli veritabanında belirtilen bir tablo tüm kısıtlamalar, bütünlük denetler.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

DBCC CHECKCONSTRAINTS
[ 
    ( 
    table_name | table_id | constraint_name | constraint_id 
    )
]
    [ WITH 
    [ { ALL_CONSTRAINTS | ALL_ERRORMSGS } ]
    [ , ] [ NO_INFOMSGS ] 
    ]

Bağımsız değişkenler

  • table_name | table_id | constraint_name | constraint_id
    tablo veya denetlenecek kısıtlaması değildir.Zaman table_name veya table_id olduğu belirtilen, bu tablo üzerinde etkinleştirilmiş tüm kısıtlamalar denetlenir.Zaman constraint_name veya constraint_id olduğu belirtilen, bu kısıtlama yalnızca denetlenir.tablo tanımlayıcısı kendisi bir kısıtlama tanımlayıcısı belirtilirse, geçerli veritabanındaki tüm tablolarda tüm etkin kısıtlamalar kontrol edilir.

    Kısıtlama adı, ait olduğu tablo benzersiz olarak tanımlar.Daha fazla bilgi için, bkz. Tanımlayıcıları.

  • İLE
    Belirtilmesi için seçenekler sağlar.

  • ALL_CONSTRAINTS
    Tüm etkin ve tablo adı belirtilirse veya tüm tabloları işaretli ise tablo üzerinde kısıtlamalar devre dışı denetler; Aksi takdirde, yalnızca etkin kısıtlamayı denetler.Kısıtlama adı belirtildiğinde, ALL_CONSTRAINTS bir etkisi olmaz.

  • ALL_ERRORMSGS
    İşaretli tablo kısıtlamalarını ihlal eden tüm satırları döndürür.İlk 200 satır varsayılandır.

  • NO_INFOMSGS
    Bilgi tüm iletileri bastırır.

Açıklamalar

dbcc CHECKCONSTRAINTS yapıları ve tüm yabancı anahtar kısıtlamaları ve Kontrol kısıtlamaları bir tabloiçin bir sorgu yürütür.

Örneğin, bir yabancı anahtar sorgu şu biçimde olabilir:

SELECT <columns>
FROM <table_being_checked> LEFT JOIN <referenced_table>
    ON <table_being_checked.fkey1> = <referenced_table.pkey1> 
    AND <table_being_checked.fkey2> = <referenced_table.pkey2>
WHERE <table_being_checked.fkey1> IS NOT NULL 
    AND <referenced_table.pkey1> IS NULL
    AND <table_being_checked.fkey2> IS NOT NULL
    AND <referenced_table.pkey2> IS NULL

Sorgu verisi temp tablodepolanır.Tüm istenen tablo veya kısıtlamaları denetlendi, sonuç kümesi döndürülür.

dbcc CHECKCONSTRAINTS bütünlük denetim kısıtlamalarını ve yabancı ANAHTARDAKİ denetler, ancak disk üzerindeki veri yapılarını bir tablo bütünlük denetlemez.Bu veri yapısı denetimleri kullanarak gerçekleştirilebilir dbcc checkdb ve dbcc checktable.

Sonuç Kümeleri

dbcc CHECKCONSTRAINTS aşağıdaki sütunları olan bir satır kümesi döndürür.

Sütun adı

Veri türü

Açıklama

Table Name

varchar

tabloadı.

Constraint Name

varchar

İhlal kısıtlamanın adı.

Where

varchar

Satır veya satırları kısıtlamayı ihlal tanımlamak sütun değer atamaları.

Bu sütun değer kısıtlamayı ihlal eden satırları sorgulamak bir select deyim , where yan tümce kullanılabilir.

İzinler

Üyelik gerektiren sysadmin sabit sunucu rolü veya db_owner veritabanı rolüsabit.

Örnekler

A.Bir tablodenetimi

Aşağıdaki örnek tablokısıtlaması bütünlük denetlerTable1 , AdventureWorks2008R2 veritabanı.

USE AdventureWorks2008R2;
GO
CREATE TABLE Table1 (Col1 int, Col2 char (30));
GO
INSERT INTO Table1 VALUES (100, 'Hello');
GO
ALTER TABLE Table1 WITH NOCHECK ADD CONSTRAINT chkTab1 CHECK (Col1 > 100);
GO
DBCC CHECKCONSTRAINTS(Table1);
GO

B.Belirli bir kısıtlama denetleme

Aşağıdaki örnek bütünlük denetler CK_ProductCostHistory_EndDate kısıtlama.

USE AdventureWorks2008R2;
GO
DBCC CHECKCONSTRAINTS ("Production.CK_ProductCostHistory_EndDate");
GO

C.Tüm denetimi etkinleştirilmiş ve tüm tabloları üzerinde kısıtlamalar devre dışı

Aşağıdaki örnek, tüm bütünlük etkin ve geçerli veritabanındaki tüm tabloları üzerinde kısıtlamalar devre dışı denetler.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO