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.
Belirtilen günlük dizisi numarası (LSN) aralığındaki kaynak tabloya uygulanan her değişiklik için bir satır döndürür. Bir kaynak satırda aralık boyunca birden çok değişiklik varsa, her değişiklik döndürülen sonuç kümesinde gösterilir. Değişiklik verilerini döndürmenin yanı sıra, değişiklikleri başka bir veri kaynağına uygulamak için ihtiyacınız olan bilgileri dört meta veri sütunu sağlar.
Satır filtreleme seçenekleri, meta veri sütunlarının içeriğini ve sonuç kümesinde döndürülen satırları yönetir. Tüm satır filtresi seçeneği
Bu numaralandırma işlevi, değişiklik verisi yakalama için bir kaynak tablo etkinleştirildiğinde oluşturulur. İşlev adı türetilir ve kaynak tablo değişiklik verileri yakalama için etkinleştirildiğinde yakalama örneği için belirtilen değer cdc.fn_cdc_get_all_changes_<capture_instance> biçimini kullanır.
Transact-SQL söz dizimi kuralları
Sözdizimi
cdc.fn_cdc_get_all_changes_<capture_instance> ( from_lsn , to_lsn , '<row_filter_option>' )
<row_filter_option> ::=
{ all
| all update old
}
Bağımsız değişken
from_lsn
Sonuç kümesine eklenecek LSN aralığının düşük uç noktasını temsil eden LSN değeri. from_lsnikili (10).
Yalnızca cdc'deki satırlar. [capture_instance]_CT sonuç kümesine __$start_lsn'den büyük veya buna eşit bir değer içeren tabloyu değiştirin.
to_lsn
Sonuç kümesine eklenecek LSN aralığının yüksek uç noktasını temsil eden LSN değeri.
Yalnızca cdc'deki satırlar. [capture_instance]_CT__$start_lsn değeri from_lsn'den büyük veya buna eşit ve sonuç kümesine to_lsn küçük veya eşit olan bir değer içeren tabloyu değiştirin.
<row_filter_option>
Meta veri sütunlarının ve sonuç kümesinde döndürülen satırların içeriğini yöneten bir seçenek.
Aşağıdaki seçeneklerden biri olabilir:
Tüm
Belirtilen LSN aralığındaki tüm değişiklikleri döndürür. Güncelleştirme işlemi nedeniyle yapılan değişiklikler için bu seçenek yalnızca güncelleştirme uygulandıktan sonra yeni değerleri içeren satırı döndürür.
Tüm eski güncelleştirmelerini
Belirtilen LSN aralığındaki tüm değişiklikleri döndürür. Güncelleştirme işleminden kaynaklanan değişiklikler için bu seçenek hem güncelleştirmeden önceki sütun değerlerini içeren satırı hem de güncelleştirmeden sonra sütun değerlerini içeren satırı döndürür.
Tablo döndürüldü
| Sütun adı | Veri tipi | Açıklama |
|---|---|---|
__$start_lsn |
ikili (10) | Değişikliğin işleme sırasını koruyan değişiklikle ilişkili işleme LSN'leri. Aynı işlemde işlenen değişiklikler aynı işleme LSN değerini paylaşır. |
__$seqval |
ikili (10) | İşlem içindeki bir satırda yapılan değişiklikleri sıralamak için kullanılan sıra değeri. |
__$operation |
int | Değişiklik verilerinin satırını hedef veri kaynağına uygulamak için gereken veri işleme dili (DML) işlemini tanımlar. Aşağıdaki değerlerden biri olabilir:1 = silme2 = ekleme3 = güncelleştirme (yakalanan sütun değerleri, güncelleştirme işleminden önceki sütun değerleridir). Bu değer yalnızca 'tümü eskiyi güncelleştir' satır filtresi seçeneği belirtildiğinde geçerlidir.4 = güncelleştirme (yakalanan sütun değerleri, güncelleştirme işleminden sonra sütun değerleridir) |
__$update_mask |
varbinary(128) | Yakalama örneği için tanımlanan her yakalanan sütuna karşılık gelen bit içeren bir bit maskesi. Bu değer, 1__$operation veya 1olduğunda tüm tanımlı bitlerin 2 olarak ayarlanmıştır.
__$operation
3 veya 4olduğunda, yalnızca değişen sütunlara karşılık gelen bitler 1olarak ayarlanır. |
<captured source table columns> |
Değişir | İşlev tarafından döndürülen kalan sütunlar, yakalama örneği oluşturulduğunda tanımlanan yakalanan sütunlardır. Yakalanan sütun listesinde sütun belirtilmediyse, kaynak tablodaki tüm sütunlar döndürülür. |
İzinler
sysadmin sabit sunucu rolüne veya db_owner sabit veritabanı rolüne üyelik gerektirir. Diğer tüm kullanıcılar için, kaynak tablodaki tüm yakalanan sütunlarda SELECT izni ve yakalama örneği için bir gating rolü tanımlanmışsa bu veritabanı rolüne üyelik gerektirir. Çağıranın kaynak verileri görüntüleme izni olmadığında işlev 229 hatasını döndürür:
The SELECT permission was denied on the object 'fn_cdc_get_all_changes_...', database '<DatabaseName>', schema 'cdc'.
Açıklamalar
veya NULLolduğunda, veri türü __$operation, 1ve __$operation sütunlarına her zaman bir 3 değeri atanır. Güncelleştirme sırasında sütun değişmediği sürece olduğunda, varbinary(max), NULLveya __$operation veri türündeki sütunlara 3 bir değer atanır.
__$operation
1olduğunda, bu sütunlara silme sırasında değerleri atanır. Yakalama örneğine dahil edilen hesaplanan sütunlar her zaman NULLdeğerine sahiptir.
cdc.fn_cdc_get_all_changes_<capture_instance> veya cdc.fn_cdc_get_net_changes_<capture_instance>çağrılırken sağlanan LSN aralığı uygun değilse 313 hatası beklenir.
lsn_value parametresi en düşük LSN veya en yüksek LSN süresinin ötesindeyse, bu işlevlerin yürütülmesi 313 hatasını döndürür:
Msg 313, Level 16, State 3, Line 1
An insufficient number of arguments were supplied for the procedure or function.
Bu hata geliştirici tarafından işlenmelidir.
Örnekler
Değişiklik verilerini yakalama sorgu işlevlerinin nasıl kullanılacağını gösteren çeşitli SQL Server Management Studio şablonları mevcuttur. Bu şablonlar, Management Studio'daki Görünüm menüsünde bulunur. Daha fazla bilgi için bkz. Şablon Gezgini.
Bu örnekte Enumerate All Changes for Valid Range Templategösterilmektedir.
cdc.fn_cdc_get_all_changes_HR_Department veritabanındaki kaynak tablo HR_Department için tanımlanan HumanResources.Departmentyakalama örneği için geçerli olan tüm değişiklikleri raporlamak için işlev AdventureWorks2025 kullanır.
-- Enumerate All Changes for Valid Range Template
USE AdventureWorks2022;
GO
DECLARE @from_lsn AS BINARY (10), @to_lsn AS BINARY (10);
SET @from_lsn = sys.fn_cdc_get_min_lsn('HR_Department');
SET @to_lsn = sys.fn_cdc_get_max_lsn();
SELECT *
FROM cdc.fn_cdc_get_all_changes_HR_Department(@from_lsn, @to_lsn, N'all');
GO