sys.fn_cdc_map_time_to_lsn (Transact-SQL)
Günlük sıra numarası (SSN) değeri verir start_lsn sütuncdc.lsn_time_mapping Sistem tablo belirtilen saat.Geliştirmekte tarih aralıkları, değişiklik veri yakalama numaralandırma işlevleri tarafından gerekli SSN tabanlı aralığı içine eşlemek için bu işlev kullanabilirsiniz... cdc.fn_cdc_get_all_changes_<capture_instance> ve cdc.fn_cdc_get_net_changes_<capture_instance> Bu aralık içindeki veri değişikliklerini geri dönmek için .
sys.fn_cdc_map_time_to_lsn ( '<relational_operator>', tracking_time )
<relational_operator> ::=
{ largest less than
| largest less than or equal
| smallest greater than
| smallest greater than or equal
}
Bağımsız değişkenler
'<relational_operator>' {değerinden daha büyük | değerinden daha büyük veya eşit | en küçük değerden | en küçük büyük veya eşit}
Içinde ayrı SSN değeri tanımlamak için kullanılan cdc.lsn_time_mapping bir ilişkili tablotran_end_time karşılaştırıldığında için ilişkisi karşılayantracking_time Değer.relational_operator olan nvarchar(30).
tracking_time
Is the datetime value to match against.tracking_time is datetime.
Dönüş Türü
binary(10)
Remarks
Anlamak için nasıl sys.fn_cdc_map_time_lsn datetime aralıkları SSN aralıkları eşleştirmek için aşağıdaki senaryoyu düşünün kullanılabilir.Tüketici günlük olarak üzerinde değişiklik veri vermek istediğini varsayalım.Diğer bir deyişle, tüketici, belirli gün ve dahil olmak üzere gece yarısı için yalnızca değişiklikleri istemektedir.saat aralığının alt sınırı kadar ancak önceki günün gece yarısı değil'de dahil olabilir.Üst sınır ve belirli bir günün gece yarısı kadar olacaktır.Aşağıdaki örnekte gösterildiği nasıl işlev sys.fn_cdc_map_time_to_lsn geliştirmekte zamana dayalı bu aralık, bu aralıktaki tüm değişiklikleri geri dönmek için değişiklik veri yakalama numaralandırma işlevleri tarafından gerekli SSN tabanlı aralığı içine eşleştirmek için kullanılır.
DECLARE @begin\_time datetime, @end\_time datetime, @begin\_lsn binary(10), @end\_lsn binary(10);
SET @begin\_time = '2007-01-01 12:00:00.000', @end\_time '2007-01-02 12:00:00.000';
SELECT @begin\_lsn = sys.fn_cdc_map_time_to_lsn('smallest greater than', @begin\_time);
SELECT @end\_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal', @end\_time);
SELECT * FROM cdc.fn_cdc_get_net_changes_HR_Department(@begin_lsn, @end\_lsn, 'all');
Ilişkisel işleç 'smallest greater than' değişiklikleri önceki günü gece yarısından sonra oluşan kayıtlarla sınırlandırmak için kullanılır. Farklı SSN ile birden çok giriş değerleri, paylaşım tran_end_time değeri alt sınır olarak tanımlanır.cdc.lsn_time_mapping tablo, işlev tüm girişlerin dahil edileceğini sağlayarak küçük bir SSN döndürecektir.Üst bağlı, ilişkisel işleç için ‘largest less than or equal to’ aralık gün gece yarısı olarak'den olanlar da dahil tüm girdileri içeren sağlamak için kullanılır, tran_end_time değeri.Farklı SSN ile birden çok giriş değerleri, paylaşım tran_end_time değer üst sınırı, tanımlanan işlev tüm girişlerin dahil edileceğini sağlayarak bir en büyük SSN döndürecektir.
İzinler
Üyelik gerektirir Ortak roldür.
Örnekler
Aşağıdaki örnek sys.fn_cdc_map_time_lsn tüm satırlar olup olmadığını belirlemek için işlev cdc.lsn_time_mapping tablosutran_end_time değeri gece yarısına eşit veya daha büyük.Bu sorgu, örneğin, devam edebilirsiniz, ayıklama değiştirme, veri o gün için yakalama işlemi zaten önceki günün gece yarısı kaydedilen değişiklikleri işledi olup olmadığını belirlemek için kullanılabilir.
DECLARE @extraction_time datetime, @lsn binary(10);
SET @extraction_time = '2007-01-01 12:00:00.000';
SELECT @lsn = sys.fn_cdc_map_time_to_lsn ('smallest greater than or equal', @extraction_time);
IF @lsn IS NOT NULL
BEGIN
<some action>
END