Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Microsoft Fabric'te SQL veritabanı
SQL Server, veritabanındaki verilerde yapılan değişiklikleri izleyen iki özellik sağlar: değişiklik veri yakalama ve değişiklik izleme . Bu özellikler, uygulamaların veritabanındaki kullanıcı tablolarında yapılan DML değişikliklerini (ekleme, güncelleştirme ve silme işlemleri) belirlemesini sağlar. Değişiklik verileri yakalama ve değişiklik izleme aynı veritabanında etkinleştirilebilir; dikkate alınması gereken özel bir nokta yoktur. Değişiklik verilerini yakalamayı ve değişiklik izlemeyi destekleyen SQL Server sürümleri için bkz. Sürümleri ve SQL Server 2022'nin desteklenen özellikleri.
Değişiklik verilerini yakalama veya değişiklik izleme kullanmanın avantajları
Veritabanında değişen verileri sorgulama özelliği, bazı uygulamaların verimli olması için önemli bir gereksinimdir. Genellikle, uygulama geliştiricilerin veri değişikliklerini belirlemek için tetikleyicilerin, zaman damgasının sütunlarının ve ek tabloların birleşimini kullanarak uygulamalarında özel bir izleme yöntemi uygulaması gerekir. Bu uygulamaların oluşturulması genellikle uygulamak için çok fazla çalışma gerektirir, şema güncelleştirmelerine yol açar ve genellikle yüksek performanslı bir ek yük taşır.
Özel bir çözüm geliştirmek yerine veritabanındaki değişiklikleri izlemek için uygulamalarda değişiklik verilerini yakalama veya değişiklik izleme özelliğinin kullanılması aşağıdaki avantajlara sahiptir:
Geliştirme süresi azaldı. İşlevsellik SQL Server'da kullanılabildiğinden özel bir çözüm geliştirmeniz gerekmez.
Şema değişiklikleri gerekli değildir. Sütun eklemeniz, tetikleyici eklemeniz veya silinen satırları izlemek veya kullanıcı tablolarına sütun eklenmiyorsa değişiklik izleme bilgilerini depolamak için yan tablo oluşturmanız gerekmez.
Yerleşik bir temizleme mekanizması vardır. Değişiklik izleme için temizleme işlemi arka planda otomatik olarak gerçekleştirilir. Yan tabloda depolanan veriler için özel temizleme gerekli değildir.
Değişiklik bilgilerini almak için işlevler sağlanır.
DML işlemleri için düşük ek yük vardır. Zaman uyumlu değişiklik izlemenin her zaman bazı ek yükleri olacaktır. Ancak değişiklik izlemenin kullanılması ek yükü en aza indirmeye yardımcı olabilir. Ek yük genellikle, özellikle tetikleyicilerin kullanılmasını gerektiren çözümler olmak üzere alternatif çözümlerin kullanılmasından daha az olacaktır.
Değişiklik izleme, yürütülen işlemleri temel alır. Değişikliklerin sırası, işlem işleme süresini temel alır. Bu, uzun süre çalışan ve çakışan işlemler olduğunda güvenilir sonuçlar elde edilmesini sağlar. zaman damgası değerleri kullanan özel çözümler bu senaryoları işleyecek şekilde tasarlanmalıdır.
Yapılandırmak ve yönetmek için kullanabileceğiniz standart araçlar mevcuttur. SQL Server standart DDL deyimleri, SQL Server Management Studio, katalog görünümleri ve güvenlik izinleri sağlar.
Değişiklik verileri yakalama ve değişiklik izleme arasındaki özellik farklılıkları
Aşağıdaki tabloda, değişiklik verileri yakalama ve değişiklik izleme arasındaki özellik farkları listelemektedir. Değişiklik verileri yakalamadaki izleme mekanizması, DML işleminden sonra değişikliklerin kullanılabilir olması için işlem günlüğündeki değişikliklerin zaman uyumsuz bir şekilde yakalanmasını içerir. Değişiklik izlemede izleme mekanizması, değişiklik bilgilerinin hemen kullanılabilir olması için DML işlemlerine uygun değişikliklerin zaman uyumlu olarak izlenmesini içerir.
| Özellik | Veri yakalamayı değiştirme | Değişiklik izleme |
|---|---|---|
| İzlenen değişiklikler | ||
| DML değişiklikleri | Evet | Evet |
| İzlenen bilgiler | ||
| Geçmiş veriler | Evet | Hayır |
| Sütunun değiştirilip değiştirilmediği | Evet | Evet |
| DML türü | Evet | Evet |
Veri yakalamayı değiştirme
Değişiklik verileri yakalama, hem DML değişikliklerinin yapıldığı hem de değiştirilen gerçek verileri yakalayarak bir kullanıcı tablosu için geçmiş değişiklik bilgileri sağlar. Değişiklikler, işlem günlüğünü okuyan ve sistem üzerinde düşük etkiye sahip olan zaman uyumsuz bir işlem kullanılarak yakalanır.
Aşağıdaki çizimde gösterildiği gibi, kullanıcı tablolarında yapılan değişiklikler ilgili değişiklik tablolarında yakalanır. Bu değişiklik tabloları, zaman içindeki değişikliklerin geçmiş görünümünü sağlar. SQL Server'ın sağladığı Değişiklik Verileri Yakalama İşlevleri , değişiklik verilerinin kolay ve sistematik bir şekilde tüketilmesine olanak tanır.
değişiklik verisi yakalama kavramını gösteren
Güvenlik modeli
Bu bölümde değişiklik verileri yakalama güvenlik modeli açıklanmaktadır.
Yapılandırma ve yönetim
Veritabanı için değişiklik verilerini yakalamayı etkinleştirmek veya devre dışı bırakmak için, sys.sp_cdc_enable_db veya sys.sp_cdc_disable_db çağıranın sabit sunucu sysadmin rolünün bir üyesi olması gerekir. Değişiklik verilerinin tablo düzeyinde yakalanmasını etkinleştirmek ve devre dışı bırakmak için sys.sp_cdc_enable_table ve sys.sp_cdc_disable_table çağıranın sysadmin rolünün üyesi veya veritabanı veritabanı db_owner rolünün üyesi olması gerekir.
Değişiklik verisi yakalama işlerinin yönetimini desteklemek için saklı yordamların kullanılması, sunucu sysadmin rolü üyeleri ve veritabanı db_owner rolü üyeleriyle sınırlıdır.
Numaralandırmayı ve meta veri sorgularını değiştirme
Bir yakalama örneğiyle ilişkili değişiklik verilerine erişim elde etmek için, kullanıcıya ilişkili kaynak tablonun tüm yakalanan sütunlarına erişim izni verilmesi SELECT gerekir. Ayrıca, yakalama örneği oluşturulduğunda bir gating rolü belirtilirse, çağıranın da belirtilen eşleme rolünün üyesi olması ve değişiklik verileri yakalama şemasının (cdc) eşleme rolüne erişimi olmalıdır SELECT .
Meta verilere erişmeye yönelik diğer genel değişiklik veri yakalama işlevleri genel rol aracılığıyla tüm veritabanı kullanıcıları tarafından erişilebilir, ancak döndürülen meta verilere erişim de genellikle temel alınan kaynak tablolara erişim kullanılarak SELECT ve tanımlanan herhangi bir gating rolüne üye olarak geçilir.
Veri yakalama özellikli kaynak tabloları değiştirmek için DDL işlemleri
Bir tablo değişiklik verisi yakalama için etkinleştirildiğinde, DDL işlemleri tabloya yalnızca sysadmin sabit sunucu rolünün bir üyesi, db_owner veritabanı rolünün bir üyesi veya db_ddladmin veritabanı rolünün bir üyesi tarafından uygulanabilir. Tabloda DDL işlemleri gerçekleştirmek için açık izinleri olan kullanıcılar, bu işlemleri denerlerse 22914 hatasını alır.
Değişiklik veri yakalama için veri türüyle ilgili dikkat edilmesi gerekenler
Tüm temel sütun türleri değişiklik verisi yakalama tarafından desteklenir. Aşağıdaki tabloda, çeşitli sütun türlerinin davranışı ve sınırlamaları listelenmiştir.
| Sütun Türü | Değişiklik Tablolarında Yakalanan Değişiklikler | Sınırlama |
|---|---|---|
| Seyrek sütunlar | Evet | Sütun kümesi kullanılırken değişikliklerin yakalanmasını desteklemez. |
| Hesaplanan sütunlar | Hayır | Hesaplanan sütunlarda yapılan değişiklikler izlenmez. Sütun, değişiklik tablosunda uygun türde görünür, ancak değeri olur NULL. |
| XML | Evet | Tek tek XML öğelerindeki değişiklikler izlenmez. |
| Zaman damgası | Evet | Değişiklik tablosundaki veri türü ikiliye dönüştürülür. |
| BLOB veri türleri | Evet | BLOB sütununun önceki görüntüsü yalnızca sütunun kendisi değiştirildiğinde depolanır. |
SQL Server özellik tümleştirmesi
Bu bölümde, aşağıdaki özelliklerin değişiklik verisi yakalama ile nasıl etkileşime geçeceği açıklanmaktadır:
- Veritabanı yansıtma
- İşlemsel replikasyon
- Veritabanı geri yükleme veya ekleme
Veritabanı yansıtma
Değişiklik verisi yakalama özelliği etkinleştirilmiş bir veritabanı yansıtılabilir. Yakalama ve temizlemenin yansıtmada otomatik olarak gerçekleşmesini sağlamak için şu adımları izleyin:
SQL Server Agent'ın ayna sunucuda çalıştığından emin olun.
Ana bilgisayar yansıtıcıya devredildikten sonra, yansıtıcı üzerinde yakalama işini ve temizleme işini oluşturun. İşleri oluşturmak için saklı yordamı sys.sp_cdc_add_job kullanın.
Veritabanı yansıtma hakkında daha fazla bilgi için bkz. Veritabanı Yansıtması (SQL Server).
İşlemsel replikasyon
Değişiklik veri yakalama ve işlem çoğaltması aynı veritabanında birlikte bulunabilir, ancak her iki özellik de etkinleştirildiğinde değişiklik tablolarının popülasyonu farklı işlenir. Veri değişikliği yakalama ve işlemsel çoğaltma, işlem günlüğündeki değişiklikleri okumak için her zaman aynı yordam olan sp_replcmdskullanır. Değişiklik veri yakalama özelliği kendi başına etkinleştirildiğinde, bir SQL Server Agent görevi sp_replcmds'ı çağırır. Her iki özellik de aynı veritabanında etkinleştirildiğinde, Günlük Okuyucu Aracısı sp_replcmdsçağırır. Bu aracı hem değişiklik tablolarını hem de distribution veritabanı tablolarını doldurur. Daha fazla bilgi için bkz. Çoğaltma Günlüğü Okuyucu Aracısı .
değişiklik veri yakalamanın AdventureWorks2025 veritabanında etkinleştirildiği ve yakalama için iki tablonun etkinleştirildiği bir senaryo düşünün. Değişiklik tablolarını doldurmak için yakalama işi sp_replcmdsçağırır. Veritabanı transaksiyonel çoğaltma için etkinleştirilmiş ve bir yayın oluşturulmuştur. Şimdi veritabanı için Log Reader Agent (Günlük Okuyucu Aracısı) oluşturuldu ve yakalama işi silindi. Günlük Okuyucu Aracısı, değişiklik tablosuna en son kaydedilen günlük dizisi numarasından itibaren günlüğü taramaya devam eder. Bu, değişiklik tablolarında veri tutarlılığı sağlar. Bu veritabanında işlem çoğaltması devre dışı bırakılırsa, Günlük Okuyucu Aracısı kaldırılır ve yakalama işi yeniden oluşturulur.
Not
Günlük Okuyucu Aracısı hem değişiklik verileri yakalama hem de işlem çoğaltması için kullanıldığında, çoğaltılan değişiklikler ilk olarak distribution veritabanına yazılır. Ardından, yakalanan değişiklikler değişiklik tablolarına yazılır. Her iki işlem de birlikte gerçekleştirilir. Veritabanına yazılırken distribution herhangi bir gecikme süresi varsa, değişiklik tablolarında değişiklikler görünmeden önce buna karşılık gelen bir gecikme süresi olacaktır.
Değişiklik verisi yakalama için etkinleştirilmiş bir veritabanını geri yükleme veya ekleme
SQL Server, veritabanı geri yüklendikten veya eklendikten sonra değişiklik veri yakalamanın etkin kalıp kalmadığını belirlemek için aşağıdaki mantığı kullanır:
Bir veritabanı aynı veritabanı adıyla aynı sunucuya geri yüklenirse değişiklik veri yakalama etkin kalır.
Veritabanı başka bir sunucuya geri yüklenirse, varsayılan olarak değişiklik verisi yakalama devre dışı bırakılır ve tüm ilgili meta veriler silinir.
Değişiklik verilerini yakalamayı korumak için veritabanını geri yüklerken
KEEP_CDCseçeneğini kullanın. Bu seçenek hakkında daha fazla bilgi için bkz. RESTORE Deyimleri.Bir veritabanı ayrılır ve aynı sunucuya veya başka bir sunucuya bağlıysa, değişiklik veri yakalama etkin kalır.
Veritabanı Standart veya Enterprise dışındaki herhangi bir sürüme
KEEP_CDCseçeneğiyle eklenmiş veya geri yüklenmişse değişiklik verisi yakalama işlemi SQL Server Standard veya Enterprise sürümleri gerektirdiğinden işlem engellenir. Hata iletisi 932 görüntüleniyor:SQL Server cannot load database '%.*ls' because change data capture is enabled. The currently installed edition of SQL Server does not support change data capture. Either disable change data capture in the database by using a supported edition of SQL Server, or upgrade the instance to one that supports change data capture.
Geri yüklenen veya eklenen veritabanından değişiklik veri yakalamasını kaldırmak için sys.sp_cdc_disable_db kullanabilirsiniz.
Değişiklik izleme
Değişiklik izleme, tablodaki satırların değiştirildiği gerçeğini yakalar, ancak değiştirilen verileri yakalamaz. Bu, uygulamaların doğrudan kullanıcı tablolarından alınan en son satır verileriyle değişen satırları belirlemesini sağlar. Bu nedenle değişiklik izleme, değişiklik veri yakalamaya kıyasla yanıtlayabildiği geçmiş sorularda daha sınırlıdır. Ancak, geçmiş bilgileri gerektirmeyen uygulamalar için değiştirilen verilerin yakalanmaması nedeniyle çok daha az depolama yükü vardır. Değişiklikleri izlemek için zaman uyumlu izleme mekanizması kullanılır. Bu, DML işlemlerine minimum ek yük olacak şekilde tasarlanmıştır.
Aşağıdaki çizimde, değişiklik izlemenin kullanılmasından yararlanabilecek bir eşitleme senaryosu gösterilmektedir. Senaryoda, bir uygulama aşağıdaki bilgileri gerektirir: tablonun son eşitlenmesinden bu yana değiştirilen tablodaki tüm satırlar ve yalnızca geçerli satır verileri. Değişiklikleri izlemek için zaman uyumlu bir mekanizma kullanıldığından, uygulama iki yönlü eşitleme gerçekleştirebilir ve ortaya çıkan çakışmaları güvenilir bir şekilde algılayabilir.
Değişiklik izleme kavramını gösteren
ADO.NET için değişiklik izleme ve Eşitleme Hizmetleri
ADO.NET için Eşitleme Hizmetleri veritabanları arasında eşitlemeye olanak sağlayarak çevrimdışı ve işbirliği senaryolarını hedefleyen uygulamalar oluşturmanıza olanak tanıyan sezgisel ve esnek bir API sağlar. ADO.NET için Eşitleme Hizmetleri, değişiklikleri eşitlemek için bir API sağlar, ancak aslında sunucu veya eş veritabanındaki değişiklikleri izlemez. Özel bir değişiklik izleme sistemi oluşturabilirsiniz, ancak bu genellikle önemli karmaşıklık ve performans ek yükü getirir. Sunucu veya eş veritabanındaki değişiklikleri izlemek için, sql Server'da değişiklik izleme özelliğini kullanmanızı öneririz çünkü yapılandırması kolaydır ve yüksek performanslı izleme sağlar.
Değişiklik izleme ve ADO.NET için Eşitleme Hizmetleri hakkında daha fazla bilgi için aşağıdaki bağlantıları kullanın:
SQL Server'da Değişiklik İzleme Hakkında
Değişiklik izlemeyi açıklar, değişiklik izlemenin nasıl çalıştığına yönelik üst düzey bir genel bakış sağlar ve değişiklik izlemenin diğer SQL Server Veritabanı Altyapısı özellikleriyle nasıl etkileşime geçtiğini açıklar.
Microsoft Sync Framework Geliştirici Merkezi
Eşitleme Çerçevesi ve Eşitleme Hizmetleri için eksiksiz belgeler sağlar.
İlgili içerik
- Veri Yakalama İşlevlerini Değiştir (Transact-SQL)
- Veri Yakalama saklı yordamlarını değiştirme (Transact-SQL)
- Veri Yakalama Tablolarını Değiştir (Transact-SQL)
- sistem dinamik yönetim görünümleri
- Değişiklik veri yakalama (CDC) nedir?
- Değişiklik verilerini yakalamayı etkinleştirme ve devre dışı bırakma
- Değişiklik verilerini yakalama işlemini yönetme ve izleme
- Veri Değiştir ile çalışma
- Değişiklik İzleme İşlevleri (Transact-SQL)
- SQL Server'da Değişiklik İzleme Hakkında
- Değişiklik İzlemeyi Etkinleştirme ve Devre Dışı Bırakma (SQL Server)
- Değişiklik İzlemeyi Yönetme (SQL Server)
- Değişiklik izleme (SQL Server) ile çalışma