2012-06-01 16 views

cevap

45

OLE DB Hedefi görevi toplu bir ek kullandığından, tetikleyiciler varsayılan olarak tetiklenmez. BULK INSERT (MSDN)'dan:

FIRE_TRIGGERS belirtilmezse, ek tetikleyici tetiklenmez.

biri

elle Gelişmiş Editör üzerinden OLE DB bileşeni kapsamında FIRE_TRIGGERS belirtmelisiniz.

enter image description here

Sonra (seçenekler virgülle ayrılmış olduğunu unutmayın) FastLoadOptions değerine "FIRE_TRIGGERS" ekleyin:

enter image description here

yerde o seçenekle, tetikleyiciler kovmalıyım görevin yürütülmesi sırasında. Yüklenicinin yanıtını tamamlayan

+0

Kullandıkları ve ADO.Net bağlantısı kullanıyor ve SQL veritabanında programlı olarak çalışıyorsa benzer seçenekler var mı? – NealR

+0

@NealR: evet, bkz [SqlBulkCopy] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx). – ladenedge

+0

Sadece "OLE DB Destination" ile eklemek istiyorum, "Boş değerlerini sakla" seçeneğine sahipseniz, tetikleyicileriniz de tetiklenmeyecektir. – MisterIsaak

14

.

OLE DB hedef görev, bir toplu ekleme kullandığı için

, tetikleyiciler siz "hızlı yükleme" seçeneği seçili olduğunda geçerlidir varsayılan

tarafından ateş edilmez.

enter image description here

Eğer düzenli olarak değiştirin "tablo veya görünümü" veri erişim modu ise insert kullanmadan satır-by-satır

+0

Tipik olarak yüzlerce satırınız Row-by-Row işlemi yapmak için çok yavaş olduğu için toplu yükleme kullanıyorsunuz, çoğu insan bunun en iyi çözüm olmadığını görecek. –

0

Bunu yapabilirsin yapılır çünkü tetikleyicileriniz normalde kovmalısın Visual Studio için SQL Server Veri Aracı, dtsx Dosyayı Not Defteri (veya diğer Metin düzenleyicileri) ile düzenleyerek. Aşağıdaki özellik için

Arama:

<property 
dataType="System.String" 
description="Specifies options to be used with fast load. Applies only 
if fast load is turned on." 
name="FastLoadOptions"> 
     TABLOCK,CHECK_CONSTRAINTS 
</property> 

ve Diego zaten açıklandığı gibi değer FIRE_TRIGGERS ekleyin.

İlgili konular