Share via


dbcc CHECKCONSTRAINTS (Transact-sql)

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

Konu bağlantısı simgesi Transact-SQL Sözdizim 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. Ne zaman table_nameveya table_idolduğu belirtilen, bu tablonun tüm etkin kısıtlamaları iade. Ne zaman constraint_nameveya constraint_idolduğu belirtilen bu kısıtlama yalnızca teslim. Ne bir tablo tanıtıcısı, ne de bir sınırlama tanımlayıcısı belirtilirse, geçerli veritabanındaki tüm tabloları tüm etkin kısıtlamaları denetlenir.

    Bir kısıtlama adı, ait olduğu tablonun benzersiz olarak tanımlar. Daha fazla bilgi için, bkz. Veritabanı 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 kısıtlamaları devre dışı denetler; Aksi takdirde, yalnızca etkin kısıtlamayı denetler. Bir kısıtlama adı belirtildiğinde ALL_CONSTRAINTS etkisi yoktur.

  • ALL_ERRORMSGS
    Seçili tablo kısıtlamaları ihlal tüm satırları döndürür. İlk 200 satır varsayılandır.

  • NO_INFOMSGS
    Tüm bilgi iletilerini kapatır.

Açıklamalar

dbcc CHECKCONSTRAINTS yapıları ve tüm FOREIGN key kısıtlamaları ve check kısıtlamaları bir tablo için bir sorgu yürütür.

Örneğin, bir yabancı anahtar sorgu aşağıdaki biçimi şöyledir:

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

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 verileri geçici tabloda depolanır. Sonuçta istenen tablo veya kısıtlamalar kontrol, sonuç kümesi döndürülür.

dbcc CHECKCONSTRAINTS FOREIGN key ve check kısıtlamaları bütünlüğünü denetler ama disk üzerinde veri yapılarını bir tablonun bütünlüğünü 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

Tablonun adı.

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ütundaki değer, bir select deyimi kısıtlamayı ihlal eden satırları sorgulanırken, where yan tümcesinde kullanılabilir.

İzinler

sysadmin sabit sunucu rolüne veya db_owner sabit veritabanı rolüne üye olmayı gerektirir.

Örnekler

A.Bir tablo denetimi

Aşağıdaki örnek tablo kısıtlaması bütünlüğünü denetler Table1de AdventureWorksveritabanı.

USE AdventureWorks2012;
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üğünü denetler CK_ProductCostHistory_EndDatekısıtlama.

USE AdventureWorks2012;
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üğünü etkin ve geçerli veritabanındaki tüm tabloları üzerinde kısıtlamalar devre dışı denetler.

DBCC CHECKCONSTRAINTS WITH ALL_CONSTRAINTS;
GO

Ayrıca bkz.

Başvuru

DBCC CHECKDB (Transact-SQL)

dbcc checktable (Transact-sql)

DBCC (Transact-sql)