2010-11-20 20 views
1

Senkronizasyon işleminde benzersiz bir dizini devre dışı bırakmak ve yeniden oluşturmak istiyorum. Bu yapılabilir mi?Senkronizasyon çerçevesi - senkronizasyon işleminde benzersiz dizinin nasıl etkinleştirilip devre dışı bırakılacağı

Değiştirilmesi gereken bir tabloda birden fazla satır var ancak güncellenen değerler benzersiz bir dizini ihlal ediyor. Ancak, tüm satırlar değiştikten sonra, kısıtlama tatmin olur, bu nedenle senkronizasyon işleminin sonuna kadar bu dizini devre dışı bırakmak istiyorum.

cevap

1

durumda herkes benzer bir sorun için bir çözüm ilgi olacağını - Bir senkronizasyon sağlayıcının bazı olaylara takılarak senkronizasyon sırasında kullanılan işlem kontrol alabilir:

private void DbCacheServerSyncProvider_ApplyingChanges(object sender, ApplyingChangesEventArgs e) 
{ 
    if (e.Transaction == null) 
    { 
    e.Transaction = e.Connection.BeginTransaction(IsolationLevel.ReadCommitted); 

    DisableConstraints(e.Connection, e.Transaction); 
    } 
} 

private void DbCacheServerSyncProvider_ChangesApplied(object sender, ChangesAppliedEventArgs e) 
{ 
    if (e.Transaction != null) 
    { 
    EnableConstraints(e.Connection, e.Transaction); 

    e.Transaction.Commit(); 
    e.Transaction.Dispose(); 
    } 
} 

private void DbCacheServerSyncProvider_ApplyChangeFailed(object sender, ApplyChangeFailedEventArgs e) 
{ 
    if (e.Transaction != null) 
    { 
    e.Transaction.Rollback(); 
    e.Transaction.Dispose(); 
    } 

    throw new InternalException("Server-side conflict has occurred during synchronization. Conflict details:\r\n" + SyncUtils.CreateChangeFailedDetails(e).Trim('\r', '\n')); 
} 
0

Benzersiz dizini değiştirmiyorsanız, bunu yapmanız gerekmez.

yapmanız çalıştığımız şey: SQL Server 2008 ile

, çevrimiçi bir yeniden düzenlemek veya yeniden gerçekleştirebilir?

+0

Soruyu güncelledik . –

İlgili konular