Bağlantısı kesilmiş aygıtları merkezi bir veritabanı sunucusuyla senkronize etme konusunda sorun yaşıyorsanız, sunucuda SQL Server 2012'ye yükselttikten sonra bir sorun yaşıyoruz. Görünüşe göre CHANGE_TRACKING_MIN_VALID_VERSION değeri 1'den daha yüksek bir değer döndürüyor (veya en azından yükseltme öncesinde olduğundan daha yüksek).
Ben basit bir örnek kurmak için Arshad Ali'nin büyük yürüyüşü aracılığıyla çalışıyorum .
Bir SQL Server 2008 ve 2012 ortamında çalışan tablodaki bir satır eklemek, silmek ve güncelleştirmek için # 1 ile # 5 arasındaki komut dosyalarını çalıştırdım.
2008'de aşağıdaki ifade 0 döndürür:
SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee'))
2012 yılında 1 döndürür.
Testlerde birkaç komut dosyasıyla (6-8) çalışırken, bir temizleme işlemini zorlamak için saklama süresini 1 dakikaya ayarladım. Gün için ayrıldım ve görünüşe göre bir gecede koştu.
2008 örneğinde, CHANGE_TRACKING_CURRENT_VERSION ve CHANGE_TRACKING_MIN_VALID_VERSION eşittir (11). 2012 örneğinde, CHANGE_TRACKING_MIN_VALID_VERSION, CHANGE_TRACKING_CURRENT_VERSION (11) 'den bir daha yüksektir (12). Bu, bir veritabanı uzun süre boşta kaldığında senkronizasyon sürecini etkileyebilir. Ve özellikle senkronizasyonun aksine yeniden başlatmanın gerekli olup olmadığını belirlemek için aşağıdaki test yapıldığında sürecin bir döngüye yakalanabileceğini bulduk:
IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor
RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''...
Bu davranış değişikliğini yaşayan başka biri var mı? Herkesin bir açıklaması var mı?