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