11 Ocak 2009 Pazar

"The transaction ended in the trigger. The batch has been aborted. (Source: MSSQLServer, Error number: 3609)"

HATA MESAJI:
The transaction ended in the trigger. The batch has been aborted. (Source: MSSQLServer, Error number: 3609)"

AÇIKLAMA:
Eğer Trigger' larınızda "NOT FOR REPLICATION" komutunu kullanmadıysanız, o zaman Replication Monitor' de sık sık bu hatayı alırsınız ve "Undistributed Commands" sekmesinde de görüleceği üzere Subscriber' lara aktarılamayan komut sayısı sürekli artar.

Bunun sonucu olarak Transaction Log dosyanız şişer, Distributor için belirlenmiş Retention Period süresi de dolduktan sonra (ki varsayılan 72 Saattir), Subscriber' ınız için Reinitialization işlemi yapmanız gerekir...

ÇÖZÜM:
"sys.triggers" CataLog View' ünü kullanarak veritabanlarınızdaki Trigger' ları tespit edebilirsiniz. Ardından da tüm Trigger' ların ilgili bölümlerinde "NOT FOR REPLICATION" komutunun bulunduğundan emin olun.

Trigger' larda "NOT FOR REPLCATION" komutunu nasıl kullanacağınızı görmek için Books Online' dan ilgili sayfaya bakabilirsiniz: http://msdn.microsoft.com/en-us/library/ms189799.aspx

Hiç yorum yok: