Toplu alma işlemler tarafından denetleme kısıtlaması denetleme
Toplu olduğunda veri alma Kontrol kısıtlamaları toplu alma işlemi tarafından zorunlu olup olmadığını kontrol edebilirsiniz.A kısıtlama ; geçerli değerleri tanımlamak için bir sütun üzerinde koymak bir iş kuralı Örneğin, telefon uzantıları içeren bir sütun için bir kısıtlama formu gerektirebilir #.Defining and checking constraints are the standard mechanism for enforcing data integrity.Microsoft recommends that normally you use constraint checking during an incremental bulk import.
Bazen kısıtlamaları dikkate isteyebilirsiniz.Giriş veri kısıtlamalarını ihlal eden satırları içeriyorsa, bir örnek senaryodur.Kısıtlamalar göz ardı ediliyor, verileri yüklemek ve daha sonra Transact-SQL bildirilerle temizleme veri.
Not
Bir toplu alma işlemi sırasında kısıtlamaları göz ardı ederseniz, varolan kısıtlamaları ihlal eden veri eklenebilir tablo.Bu nedenle, tablo üzerinde kısıtlama olarak işaretlenmiş is_not_trusted , sys.check_constraints Katalog görünümü (daha fazla bilgi için bkz: sys.check_constraints (Transact-sql)).Herhangi bir aşamada tüm tablo kısıtlamaları kontrol etmeniz gerekecek.
Tablo, toplu alma işleminin önce boş olmayan, kısıtlaması revalidating maliyeti değişen veriler için Denetim kısıtlamalarını uygulamak maliyetini aşabilir.Sorunlu verileri aldıktan sonra kullanmanız gereken Transact-SQL için temizleme alınan verileri.
Önemli |
---|
Bir şema kısıtlamalarını devre dışı bırakıldığında, kilit değiştirme meta veriler güncelleştirmek için alınmış.Bu, diğer komutları (örneğin, bir çevrimiçi dizin yapı) veya işlemleri etkileyebilir.Örneğin, bir anlık görüntü yalıtım hareket erişme hedef tablo eşzamanlı ddl değişiklikleri nedeniyle başarısız. |
Sınırlamalar hakkında daha fazla bilgi için bkz: Kısıtlamaları.
Bir toplu alma işlemi sırasında işlem için kullanılan komut kısıtlaması denetimi davranışını bağlıdır.Varsayılan olarak, bcp komutu ve bulk INSERT deyim kısıtlamaları yoksay.Buna karşılık, bir ekleme için...SEÇİN * OPENROWSET(BULK...) DAN deyim, kısıtlamaları denetlemek için varsayılandır.
Aşağıdaki tablo, toplu alma komutları varsayılan kısıtlamayı denetimi davranışını özetler.
Komutu |
Varsayılan davranış |
---|---|
BCP |
Kısıtlamaları yoksay |
BULK INSERT |
Kısıtlamaları yoksay |
EKLE...SEÇİN * OPENROWSET(BULK...) DAN |
Denetleme kısıtlamaları |
Her toplu alma komutları, kısıtlamaları işlenme, aşağıdaki bölümlerde açıklandığı gibi değiştirmenize izin verir niteleyici sağlar.
Bcp veya bulk INSERT sınırlamaları denetleme
Varsayılan olarak, kısıtlamaları tarafından gerçekleştirilen bir toplu alma işlemi sırasında dikkate alınmaz bcp komutu veya bulk INSERT deyim.
The bcp command and BULK INSERT statement allow you to specify that constraints are to be enforced during a bulk-import operation.Kısıtlamaları zorlamayı toplu alma işlemini yavaşlatır, ancak tüm eklenen veri değil ihlal olduğunu var kısıtlamalar sağlar.Aşağıdaki tablo bir toplu alma işlemi sırasında kısıtlamaları zorlamayı belirtmek için kullanabileceğiniz niteleyicileri özetler.
Komutu |
Niteleyici |
Niteleyici türü |
---|---|---|
BCP |
-h"CHECK_CONSTRAINTS" |
İpucu |
BULK INSERT |
CHECK_CONSTRAINTS |
Bağımsız değişken |
Daha fazla bilgi için bkz: bcp Yardımcı Programı ve BULK INSERT (Transact-SQL).
INSERT kısıtlamalar göz ardı ediliyor...SEÇİN * OPENROWSET(BULK...) DAN
Varsayılan olarak, Denetim kısıtlamaları, Bununla birlikte, Ekle Ekle denetler...SEÇİN * dan openrowset(bulk...) deyim, onay kısıtlamaları denetimini geçersiz kılmanıza olanak sağlar.Bu kısıtlamalar hakkında daha fazla bilgi için bkz: DENETLEME kısıtlamaları.
Not
Denetim kısıtlamalarını devre dışı bırakılabilir.BENZERSİZ, birincil anahtar, yabancı anahtar veya null kısıtlamalarını devre dışı bırakamazsınız.
Kontrol kısıtlamaları yoksayılıyor için tablo İpucu aşağıdaki tabloda özetlenmiştir.
Komutu |
Niteleyici |
Niteleyici türü |
---|---|---|
EKLE...SEÇİN * OPENROWSET(BULK...) DAN |
(YANISIRA IGNORE_CONSTRAINTS İLE) |
Tablo İpucu |
Aşağıdaki örnekte bu niteleyici nasıl gösterilmektedir.Yanısıra IGNORE_CONSTRAINTS ipucu hakkında daha fazla bilgi için bkz: Tablo İpuçları (Transact-SQL).
Doğrulama veri alınmadı
Bir toplu alma işlemi kısıtlamalar göz ardı ederseniz, daha sonra alınan verileri el ile denetleyerek kısıtlamalarını ihlal alınan tablo satırları tanımlayabilirsiniz.Verileri el ile denetlemek için Transact-SQL sorgu veya saklı yordamlar, test kısıtlaması koşullar.
Not
Bir tablo güvenilir olup olmadığını öğrenmek için bkz: is_not_trusted sütun , sys.check_constraints Katalog görünümü.Daha fazla bilgi için bkz: sys.check_constraints (Transact-sql).