Aracılığıyla paylaş


Işlev değişikliği veri almak için oluşturma

denetim akışı tamamladıktan sonra bir Integration Services artımlı bir yük getiren paket verileri değiştirmek için sonraki görev değişiklik veri alan bir tablo değerli işlev oluşturmaktır. Bu işlev artan yükü ilk önce saat oluşturmanız yeterlidir.

Not

Oluşturulmasını bir işlev değişikliği almak için değişiklik veri artımlı bir yük gerçekleştiren bir paket oluşturma işlemi sırasında ikinci adımı veridir.Bu paket oluşturmak için genel bir işlem bir açıklaması için bkz: Artımlı geliştirme Değiştir veri yakalama ile yükler....

Paketlerdeki değişiklik veri yakalama kullanımını gösteren tam ve uçtan uca örnekleri görmek için bkz: Readme_Change Data Capture for Specified Interval Package Sample ve Readme_Change Data Capture since Last Request Package Sample.

Işlevler Değiştir veri için tasarım düşünceleri yakalama

Değişiklik veri almak için , değişiklik veri yakalama sorgu işlevlerinden birini bir paketin veri akışının kaynak bileşeni çağırır:

Kaynak bileşeni işlev tarafından döndürülen sonuçlar alır ve bunları aşağı akım dönüştürmeler ve değişiklik veri, son hedefine uygulanan hedeflere iletir.

Ancak, bir Integration Services Kaynak bileşeni bu değişiklik veri yakalama işlevleri doğrudan çağrılamaz. Bir Integration Services Kaynak bileşeni meta veriler sütunları Sorgunun döndürdüğü hakkında gerektirir. Değişiklik veri yakalama işlevleri, çıktı sütunları tanımlamak tablo.Bu nedenle, bu işlevler için yeterli meta veriler döndürmüyor bir Integration Services Kaynak bileşeni.

Bunun yerine, bu tür bir işlev, DÖNDÜRÜR yan tümcesinde sütunlar, çıkış tablosu, açıkça tanımladığından sarmalayıcı tablo değerli fonksiyon kullanın.Bu açık bir tanımı sütunların meta veriler sağlayan bir Integration Services Kaynak bileşeni gerekiyor. Bu işlev değişikliği veri almak istediğiniz her tablo için oluşturmak zorunda.

Veri yakalama sorgu Değiştir işlevini çağırır sarmalayıcı tablo değerli işlev oluşturmak için iki seçeneğiniz vardır:

  • Arayabileceğiniz sys.sp_cdc_generate_wrapper_function sistem saklı yordam tablo değerli işlevler sizin için oluşturulacak.

  • Bu konudaki yönergeleri ve örnek'ı kullanarak kendi tablo değerli işlev yazabilirsiniz.

Arayan bir saklı yordam tablo değerli işlev oluşturma

Gereken tablo değerli işlevler oluşturmanın en hızlı ve en kolay yolu, aranacak olan sys.sp_cdc_generate_wrapper_function sistem saklı yordam.Bu saklı yordam, özellikle gereksinimlerini karşılamak için tasarlanmış sarıcı işlevleri oluşturmak için komut dosyaları oluşturur bir Integration Services Kaynak bileşeni.

Important noteImportant Note:

The sys.sp_cdc_generate_wrapper_function system saklı yordam does not directly create the wrapper functions.Bunun yerine, saklı yordam sarıcı işlevleri için CREATE komut dosyalarını oluşturur.Geliştirici, komut dosyalarının CREATE çalıştırmalısınız bir artımlı bir yükleme paket sarıcı işlevleri aramadan önce saklı yordam oluşturur.

Bu sistemde nasıl anlaşılır saklı yordam yordamı, yordamın oluşturur, hangi komut yaptıklarını anlamalısınız ve komut dosyaları hangi sarıcı işlevleri oluşturun.

Anlama ve saklı yordam kullanma

The sys.sp_cdc_generate_wrapper_function system saklı yordam generates scripts to create wrapper functions for use by Integration Services packages.

saklı yordam tanımını ilk birkaç satırlık şunlardır:

CREATE PROCEDURE sys.sp_cdc_generate_wrapper_function

(

@capture\_instance sysname = null

@closed\_high\_end\_point bit = 1,

@column\_list = null,

@update\_flag\_list = null

)

Saklı yordam için tüm parametreler isteğe bağlıdır.Saklı yordam parametreleri için değerleri sağlayan olmadan aradığınızda, saklı yordam erişiminizin olduğu tüm yakalama örnekleri için sarmalayıcı işlevleri oluşturur.

Not

Bu sözdizimi hakkında daha fazla bilgi için saklı yordam ve parametreleri, bkz: sys.sp_cdc_generate_wrapper_function (Transact-SQL).

saklı yordam oluşturur her zaman tüm değişiklikler, her yakalama dönmek için bir sarmalayıcı işlevi örnek.If the @supports\_net\_changes parameter was küme when the capture örnek was created, the saklı yordam also generates a wrapper işlev to return net changes from each applicable capture örnek.

saklı yordam sahip iki sütun olarak küme bir sonuç döndürür:

  • saklı yordam oluşturduğu sarmalayıcı fonksiyonunun adı.Bu saklı yordam, işlev adı yakalama örnek adı adından türetir.('Yakalama örnek adından fn_all_changes_' işlev adıdır.Oluşturulursa, net değişim işlev için kullanılan önek 'fn_net_changes_' dir.)

  • CREATE deyim için sarmalayıcı işlev.

Anlama ve saklı yordam tarafından oluşturulmuş komut dosyalarını kullanma

Genellikle, bir uygulama geliştiricisi... EXEC INSERT deyim aramak için kullanır sys.sp_cdc_generate_wrapper_function saklı yordamı ve için geçici saklı yordam oluşturur komut dosyalarını kaydetme tablo.Her komut dosyası sonra tek tek seçili ve karşılık gelen saran işlev oluşturmak için çalıştırın.Ancak, bir uygulama geliştiricisi biri de küme SQL tüm OLUşTURMA çalıştırılacak komut dosyaları, aşağıdaki örnek kodda gösterildiği gibi:

create table #wrapper_functions
      (function_name sysname, create_stmt nvarchar(max))
insert into #wrapper_functions
exec sys.sp_cdc_generate_wrapper_function

declare @stmt nvarchar(max)
declare #hfunctions cursor local fast_forward for 
      select create_stmt from #wrapper_functions
open #hfunctions
fetch #hfunctions into @stmt
while (@@fetch_status <> -1)
begin
      exec sp_executesql @stmt
      fetch #hfunctions into @stmt
end
close #hfunctions
deallocate #hfunctions

Anlama ve için işlevlerini, saklı yordam tarafından oluşturuldu.

Geliştirmekte yakalanan değişiklik veri çizelgesinin yürütmek için , oluşturulan sarıcı işlevleri, beklediğiniz @end\_time bir zaman aralığı için parametre olur @start\_time sonraki aralığı ile ilgili parametre. Oluşturulan sarıcı işlevleri, bu kuralı ardından, aşağıdaki görevleri yapabilirsiniz:

  • Tarih/saat değerlerini SSN değerleri için dahili olarak kullanılan eşleyin.

  • Hiçbir veri kaybı veya yinelenen emin olun.

Basit bir değişiklik tablonun tüm satırlar için sorgulama yapmak için , aşağıdaki kuralları da oluşturulan sarıcı işlevleri destekler:

  • @ Start_time parametresi null ise yakalama SSN en düşük değeri sarıcı işlevleri kullanmak örnek sorgunun alt sınır olarak.

  • @ End_time parametresi null ise, sarıcı işlevleri yakalama örneğinde SSN en yüksek değer üst sınırı, sorgunun kullanın.

Kullanıcıların çoğu kullanabilmeniz sarmalayıcısı, işlevleri sys.sp_cdc_generate_wrapper_function sistem saklı yordamı hiçbir değişikliğe gerek olmadan oluşturur.Ancak, sarıcı işlevleri özelleştirmek için komut dosyalarını çalıştırmadan önce komut dosyalarının CREATE özelleştirmek gerekir.

Paket, paketiniz sarmalayıcı işlevlerini çağırdığında, üç parametre değerlerini sağlamanız gerekir.Verileri değiştirme, işlevlerini yakalama üç parametre kullanmak gibi üç bu parametreleridir.Bu üç Parametreler aşağıdaki gibidir:

Sonuç kümesi verileri aşağıdaki sarıcı işlevleri includesthe döndürdü:

  • Tüm istenen sütunların veri değiştirin.

  • Bir sütun, bir veya iki karakter uzunluğundaki bir alanda, satırı ile ilişkili olan işlemi tanımlamak için kullandığı __CDC_OPERATION adı.Bu alan için geçerli değerler şunlardır: ‘ ı ’ için ekleme, ‘ D ’ için silme, ‘ UO ’ güncelleştirmesinin eski değerleri ve ‘ BM ’ güncelleştirme yeni değerler için.

  • Bunları sonra işlem kodu ve belirtilen sırada bit sütunlar gibi görünen istekte bulunduğunuzda, bayraklarını, güncelleştirme @update\_flag\_list parametre. Bu sütun ekleyerek adlı ‘ _uflag ’ ilişkili sütunun adı.

Varsa, paket sorguları tüm değişiklikleri için sarmalayıcı işlev de __CDC_STARTLSN ve __CDC_SEQVAL sütunlar döndüren bir sarmalayıcı işlevni çağırır.Bu iki sütunu birinci ve ikinci sütun, sonucu haline küme.Sarmalayıcı işlev, sonuç ayrıca sıralar küme bu iki sütunları temel alan.

Kendi tablo değeri işlev yazılıyor

Ayrıca SQL Server Management Studio kendi sarmalayıcı tablo değerli işlev değişikliği çağıran yazmak için veri sorgu işlevi yakalamak ve sarmalayıcı tablo değerli işlev saklayın SQL Server. Bir Transact-SQL işlev oluşturma hakkında daha fazla bilgi için bkz: (Transact-SQL) işlev CREATE.

Aşağıdaki örnek, değişiklikleri belirtilen değişiklik aralık için bir Müşteri tablosundan alır ve tablo değerli bir işlev tanımlar.Eşlemek için bu işlev kullanan değişiklik veri yakalama işlevleri datetime değerleri ikili günlük sıra numarası (SSN) değerlere değişiklik tablolar dahili olarak kullanır. Bu işlev, birkaç özel koşullar de gerçekleştirir:

  • Boş (null) değer başlatmak için ne zaman geçtiğini saat, bu işlev en erken kullanılabilir değerini kullanır.

  • Boş (null) değer için bitiş zamanı geçirilir saat, bu işlev en son kullanılabilir değerini kullanır.

  • Ne zaman başlangıç SSN genellikle gösterir seçili aralığı için hiçbir kayıt vardır, bu işlev çıkar bir bitiş SSN eşittir.

Değiştir verileri için sorgular bir tablo değer işlev örnekleri

CREATE function CDCSample.uf_Customer (
     @start_time datetime
    ,@end_time datetime
)
returns @Customer table (
     CustomerID int
    ,TerritoryID int
    ,CustomerType nchar(1)
    ,rowguid uniqueidentifier
    ,ModifiedDate datetime
    ,CDC_OPERATION varchar(1)
) as
begin
    declare @from_lsn binary(10), @to_lsn binary(10)

    if (@start_time is null)
        select @from_lsn = sys.fn_cdc_get_min_lsn('Customer')
    else
        select @from_lsn = sys.fn_cdc_increment_lsn(sys.fn_cdc_map_time_to_lsn('largest less than or equal',@start_time))

    if (@end_time is null)
        select @to_lsn = sys.fn_cdc_get_max_lsn()
    else
        select @to_lsn = sys.fn_cdc_map_time_to_lsn('largest less than or equal',@end_time)

    if (@from_lsn = sys.fn_cdc_increment_lsn(@to_lsn))
        return

    -- Query for change data
    insert into @Customer
    select 
        CustomerID,    
        TerritoryID, 
        CustomerType, 
        rowguid, 
        ModifiedDate, 
        case __$operation
                when 1 then 'D'
                when 2 then 'I'
                when 4 then 'U'
                else null
         end as CDC_OPERATION
    from 
        cdc.fn_cdc_get_net_changes_Customer(@from_lsn, @to_lsn, 'all')

    return
end 
go

Değiştir verilerle ek meta veriler alınıyor

Daha önce gösterilen kullanıcı tarafından oluşturulan tablo değerli işlev yalnızca kullansa __ $ işlemi sütuncdc.fn_cdc_get_net_changes_<capture_instance> işlev, dört sütun, her değişikliği satır için meta veriler döndürür. Bu değerler, veri akışı kullanmak istiyorsanız, bunları gibi ek sütunlar tablo değerli sarmalayıcı ' dönebilirsiniz işlev.

Sütun adı

Veri türü

Açıklama

__ $ start_lsn

binary(10)

Değiştirmek için Kayıt işlemle ilişkili SSN.

Aynı işlemde kaydedilmiş tüm değişiklikleri aynı yürütme SSN paylaşır.Örneğin, kaynak tablo bir güncelleştirme işleminde iki farklı satır değiştirir, değişikliği tablosu dört satır (iki eski değerlerle) ve iki yeni değerlerle içerir her ile aynı __ $ start_lsn değeri.

__ $ seqval

binary(10)

Bir işlemde satır değişiklikleri sipariş için kullanılan sıra değeri.

__ $ işlemi

int

Değişikliği ile ilişkili veri işleme dili (DML) işlemi.Aşağıdakilerden biri olabilir:

1 silme =

2 ekleme =

3 güncelleştirmesi (güncelleştirme işlemi önce değerler.) =

4 Güncelleştirmesi (güncelleştirme işlemi sonra değerler.) =

__ $ update_mask

varbinary(128)

Değiştirilen bu sütunları tanımlama değişiklik tablo sütun sıra sayılarını üzerinde temel BIR bit maskesi.Değiştirilen sütunları belirlemeye sahipse, bu değer inceleyin.

<Yakalanan bir kaynak tablo sütunları>

değişir

Işlev tarafından döndürülen kalan sütunları yakalama örnek oluşturulduğunda, yakalanan sütun olarak tanımlananların kaynak tablo sütunlarından ' dir.Kaynak tablosundaki tüm sütunlar, sütun, yakalanan sütun listesinden ilk belirtildi, döndürülür.

Daha fazla bilgi için bkz:cdc.fn_cdc_get_net_changes_ < capture_instance > (Transact-SQL).

Sonraki adım

Değişiklik verileri için sorgular tablo değerli işlev oluşturduktan sonra sonraki adıma paketin veri akışı tasarlama başlatmaktır.

Sonraki konu:Alma ve değiştirme verileri anlama

Integration Services icon (small) Tümleştirme Hizmetleri ile güncel kalın

Karşıdan yüklemeler, makaleleri, örnekler ve en son Microsoft video yanı sıra, seçili topluluğun çözümleri için ziyaret Integration Services sayfa MSDN veya TechNet:

Bu güncelleştirmelerin otomatik bildirim için kullanılabilir RSS akışlarına abone olmak sayfa.