Uzun bir süre boyunca, geçmişin kaybolmadığı bir vaka yönetim sistemi oluşturmak istedik. Bir değişiklik yapıldığında, bu değişikliği kaydetmek istiyoruz, ancak zaman içinde herhangi bir noktaya geri dönme ve kaydın nasıl göründüğünü görebiliyoruz. Bunu yapmanın bazı yolları olduğunu görmek için bu soruyu Yığın Taşımı topluluğuna vermek istedim, bunu başarmak için hali hazırda teknoloji var mı?Veri Geçmişini SQL Server 2008 Veritabanında Koruma Yolları
cevap
Evet, bu teknoloji kesinlikle var - bunu uygulamak ve doğru şekilde yapmak biraz çaba gerektiriyor.
Ne denir zamansal veritabanları aradığınız - bazı kaynaklara bakın:
değilim emin nasıl Marc_s gibi zamansal bir veritabanı çalışmalarını belirtilen, ancak daha sonra SQL Server 2008 veya kullanıyorsanız, onun yerleşik Değişim Veri Toplama (CDC) işlevselliği yararlanabilirsiniz:
- Change Data Capture (MSDN)
- Basics of Change Data Capture (MSDN) CDC etkinleştirme
- Using Change Data Capture
- Sql Server 2008: Change Data Capture (CDC)
uçlar, güncelleştirme depolamak için çoğaltma işlem günlüğü kullanır ve bir için siler tabloyu ve verilen bir tarih/saate göre satırları almanıza veya yalnızca değişiklikleri almanıza izin veren tablo değerli işlevler oluşturur.
Ancak, işlem günlüğünüzün beklenmedik şekilde büyük ve yavaş olacağı için CDC'ye tek başına güvenemezsiniz. Ne yapmak geçerli:
- CDC etkinleştirmek
- orijinal tablo olarak aynı şemayı kullanan bir geçmiş tablo oluşturmak, ancak bir ilişkisel bir slowly-changing dimension gibi çok (satır sürüm bilgilerini depolamak için bir kaç tane daha sütun ekleme OLAP veritabanı) ve
- sonra
sonra katılmadan, Sorgularınızdaki geçmiş tabloyu kullanabilirsiniz geçmişi masaya onları iter son yük beri değişiklikler için olacak periyodik anketler CDC fonksiyonlarını ve bir iş yaratmak normalde yaptığınız gibi İstediğiniz tarihte "olduğu gibi" kaydını almak için ek bir yüklem (ler).
- 1. SQL Server 2008 R2
- 2. SQL Server 2008 Hiyerarşi Veri Türü Performansı?
- 3. SQL Server 2008 R2
- 4. SQL Server 2008 R2
- 5. SQL Server 2008 R2
- 6. SQL Server 2008
- 7. SQL Server 2008
- 8. SQL Server 2008
- 9. microsoft sql server 2008
- 10. SQL Server 2008 R2
- 11. sql server 2008
- 12. Sql Server 2008
- 13. SQL Server 2008
- 14. SQL Server 2008
- 15. SQL Server 2008
- 16. SQL Server Managment Studio 2008 R2 İhracat Yapısı + Veri
- 17. SQL Server 2008 Express'ten 2008 Developer'a Yükseltme
- 18. SQL Server 2008 uyumluluk düzeyi
- 19. sql server 2008 ekspres/enterprise
- 20. Güncellenebilir görünümler - SQL Server 2008
- 21. Android with SQL Server 2008
- 22. Renk kodlaması SQL Server 2008 veritabanları
- 23. Veritabanında sql veritabanında veri depolamak nasıl saklanır
- 24. Excel'i SQL Server 2008'e aktarın
- 25. Uzamsal veri/Coğrafya, SQL Server 2008, OR mappers ve C#
- 26. SQL Server 2008 R2'deki Zaman Veri Türü, MVC4
- 27. SQL Server 2008 Hiyerarşi için NHibernate eşlemesi Veri türü
- 28. INSERT XML, SQL Server 2008 veritabanına
- 29. SQL Server 2008 ve .Net 4.0?
- 30. ELMAH ve SQL Server 2008 R2?
Bu, tetikleyicinin bahsettiğiniz aynı tarih tablosunu doldurmak için yapabileceği bir çok ek katmana benziyor. – Chris
Bu doğrudur; Bununla birlikte, sütun sayısına bağlı olarak, çok fazla tetikleyici de gerekebilir. Her iki yol da programlı olarak yazılabilir, bu yüzden karmaşıklık çok fazla sorun içermemelidir. Her iki yöntemin de artıları ve eksileri vardır ve hangi yolun doğru olduğu sizin gereksinimlerinize bağlıdır. İşte iyi bir tartışma: http: // sqlserverplanet.com/design/triggers-service-broker-cdc-or-change-tracking/ – utexaspunk
Ayrı tabloları kullanıyorum + Kayıt geçmişini ve diğer kayıtların ne zaman ve kimin kaydedildiğini kaydetmek için diğer iki tabloyu yönetmek için Tetikleyiciler. Tetikleyicilere +1! – Achilles