Sorgu Değiştir veriler için hazırlanılıyor
De denetim akışı , bir Integration Services değiştirmek veri paket, artımlı bir yük gerçekleştirir, üçüncü ve son görevdir hazırlanmak sorgu Değiştir veriler için ve Ekle bir veri akışı görev.
Not
İkinci görev denetim akışı için seçili zaman aralığı için değişiklik veri hazır olduğunu sağlamaktır.Bu görev hakkında daha fazla bilgi için bkz: Değiştir hazır veridir olup olmadığını belirleme.Tasarlama genel işlem açıklaması için denetim akışı, bkz: Değiştir ile veri yakalama artımlı geliştirme yükler.
Paketlerdeki Değiştir veri yakalama kullanımını gösteren tam ve uçtan uca örnekler görmek için bkz: Integration Services örnekleri üzerinde Codeplex.
Tasarımıyla ilgili önemli noktalar
Değiştir veri almak için aralığı bitiş noktaları olarak giriş parametrelerini kabul eden bir Transact-sql tablo değerli işlev çağırır ve belirtilen aralık için veri döndürür değiştirin.Bu bir kaynak veri akışı bileşeni çağırır işlev.Bu kaynak bileşeni hakkında daha fazla bilgi için bkz: Alma ve değiştirme verileri anlama.
En sık kullanılan Integration Services kaynak, bileşenler dahil olmak üzere ole db kaynağı, ado kaynak ve ado net kaynak parametre bilgileri için türetbir tablo değerli işlev. Bu nedenle, çoğu kaynakları doğrudan parametreli bir işlev çağrılamaz.
Giriş parametreleri için iletmek için iki tasarım seçeneğiniz vardır işlev:
Parametreli Sorgu olarak bir araya getirmek bir dize.Dinamik sql bir araya getirmek için Script görev veya sql Yürüt görev kullanabilirsiniz dize sabit kodlanmış içine parametre değerleri ile dize.Bu depolar, dize paket değişkeni içinde ve bir kaynak bileşeni SqlCommand özelliğini ayarlamak için kullanın.Kaynak bileşeni artık parametre bilgisi gerektirdiği için bu yaklaşım başarılı olur.
Not
Önceden derlenmiş komut dosyası, sql Yürüt görev'den daha az ek yük çeker.
Parametreli bir sarıcı kullanır.Alternatif olarak, tablo değerli işlev parametreli çağıran bir kapsayıcı olarak parametreli bir saklı yordam oluşturabilirsiniz.Bu yaklaşım başarılı olur, çünkü bir kaynak bileşeni başarıyla bir saklı yordam için parametre bilgilerini türetebilirsiniz.
Bu konuda ilk tasarım seçeneğini kullanır ve parametreli sorgu olarak çeviren bir dize.
Sorgu hazırlama
Tek bir sorguda birleştirir giriş parametrelerinin değerlerini birleştirmek için önce dize, sorguyu gereken paket değişkenlerini ayarlamak zorunda.
İçin küme up paket değişkenleri
De Business Intelligence Development Studio, te değişkenleri penceresinde, sql Yürüt görev tarafından döndürülen sorgu dizgisini tutmak için bir dize veri türündeki bir değişkeni oluşturun.
Bu örnek, SqlDataQuery değişken adını kullanır.
Oluşturulan paket değişkeni ile giriş parametrelerinin değerlerini birleştirmek için Script görev veya sql Yürüt görev kullanabilirsiniz.Aşağıdaki iki yordamdan bu bileşenleri konfigüre etme yöntemleri açıklanmaktadır.
Sorgu art arda eklemek için bir komut dosyası görev kullanmak içindize
Üzerinde Akış denetimi sekmesinde, bir komut dosyası görevi Ekle paket için döngü kapsayıcı sonra ve görev için döngü kapsayıcı bağlanın.
Not
Bu yordam, tek bir paket artımlı bir yük gerçekleştirdiği varsayar tablo.Bu görev paket birden çok tablodan gelen yükler ve birden çok alt paketleri ile bir üst paket varsa, her alt pakete ilk bileşeni olarak eklenebilir.Daha fazla bilgi için bkz: Birden çok tablo, artımlı bir yük gerçekleştirmek.
De Komut dosyası görev Düzenleyicisi, Script sayfa, aşağıdaki seçenekleri belirleyin:
İçin ReadOnlyVariables, select User::DataReady, User::ExtractStartTime, ve User::ExtractEndTime dan.
İçin ReadWriteVariables, listeden User::SqlDataQuery seçin.
De Komut dosyası görev Düzenleyicisi, Script sayfa,'ı Komut dosyasını düzenle komut dosyası geliştirme ortamı açmak için.
Ana yordamda aşağıdaki kodu kesimleri birini girin:
Size C# ile programlama, aşağıdaki kod satırlarını girin:
int dataReady; System.DateTime extractStartTime; System.DateTime extractEndTime; string sqlDataQuery; dataReady = (int)Dts.Variables["DataReady"].Value; extractStartTime = (System.DateTime)Dts.Variables["ExtractStartTime"].Value; extractEndTime = (System.DateTime)Dts.Variables["ExtractEndTime"].Value; if (dataReady == 2) { sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer('" + string.Format("{0:yyyy-MM-dd hh:mm:ss}", extractStartTime) + "', '" + string.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) + "')"; } else { sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer(null" + ", '" + string.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) + "')"; } Dts.Variables["SqlDataQuery"].Value = sqlDataQuery;
- veya -
Siz de programlama, Visual Basic, aşağıdaki kod satırlarını girin:
Dim dataReady As Integer Dim extractStartTime As Date Dim extractEndTime As Date Dim sqlDataQuery As String dataReady = CType(Dts.Variables("DataReady").Value, Integer) extractStartTime = CType(Dts.Variables("ExtractStartTime").Value, Date) extractEndTime = CType(Dts.Variables("ExtractEndTime").Value, Date) If dataReady = 2 Then sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer('" & _ String.Format("{0:yyyy-MM-dd hh:mm:ss}", extractStartTime) & _ "', '" & _ String.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) & _ "')" Else sqlDataQuery = "SELECT * FROM CDCSample.uf_Customer(null" & _ ", '" & _ String.Format("{0:yyyy-MM-dd hh:mm:ss}", extractEndTime) & _ "')" End If Dts.Variables("SqlDataQuery").Value = sqlDataQuery
Varsayılan kod satırı, döndüren bırakın DtsExecResult.Success gelen komut yürütülmesi
Komut dosyası geliştirme ortamı kapatın ve Komut dosyası görev Düzenleyicisi.
Sorgu art arda bağlamak için sql Yürüt görev kullanmak içindize
Üzerinde Akış denetimi sekmesinde, bir sql Yürüt görevi Ekle paket için döngü kapsayıcı sonra ve bu görev için döngü kapsayıcı bağlanın.
Not
Bu yordam, tek bir paket artımlı bir yük gerçekleştirdiği varsayar tablo.Bu görev paket birden çok tablodan gelen yükler ve birden çok alt paketleri ile bir üst paket varsa, her alt pakete ilk bileşeni olarak eklenebilir.Daha fazla bilgi için bkz: Birden çok tablo, artımlı bir yük gerçekleştirmek.
De Yürütme sql görev Düzenleyicisi, Genel sayfa, aşağıdaki seçenekleri belirleyin:
İçin sonuç kümesi, select tek satır.
Geçerli bir kaynak veritabanı bağlantısını yapılandırın.
İçin SQLSourceType, select doğrudan giriş.
İçin sqldeyimi, aşağıdaki SQL deyim girin:
declare @ExtractStartTime datetime, @ExtractEndTime datetime, @DataReady int select @DataReady = ?, @ExtractStartTime = ?, @ExtractEndTime = ? if @DataReady = 2 select N'select * from CDCSample.uf_Customer' + N'('''+ convert(nvarchar(30),@ExtractStartTime,120) + ''', ''' + convert(nvarchar(30),@ExtractEndTime,120) + ''') ' as SqlDataQuery else select N'select * from CDCSample.uf_Customer' + N'(null, ''' + convert(nvarchar(30),@ExtractEndTime,120) + ''') ' as SqlDataQuery
Not
The else clause in this sample generates a query for the initial load of change data by passing a null value for the starting date and time.Bu örnek, değişiklik veri ambarı yakalama etkinleştirilmeden önce yapılan değişiklikler de veri ambarı ambar karşıya yüklenecek olan senaryo gidermez.
Üzerinde Parametre eşleme sayfa Yürütme sql görev Düzenleyicisi, aşağıdaki eşleme yapın:
DataReady değişkeni 0 parametre eşleyin.
Parametre 1 ExtractStartTime değişken eşleyin.
ExtractEndTime değişkeni 2 parametre eşleyin.
Üzerinde Sonuç kümesi sayfa Yürütme sql görev Düzenleyicisi, sonucu adı SqlDataQuery değişken eşleyin.
Sonuç, SqlDataQuery döndürülen tek sütun adını addır.
Önceki yordamı sabit kodlanmış dize değerleri içeren bir sorgu dizesi giriş parametreleri için hazırlayan bir görev yapılandırma.Aşağıdaki kod, bir sorgu bir örnektir dize:
select * from CDCSample. uf_Customer('2007-06-11 14:21:58', '2007-06-12 14:21:58')
Veri akışı görev ekleme
Son adımda tasarlama denetim akışı paket veri akışı görev eklemek için.
Veri akışı görev eklemek ve denetim akışı tamamlamak için
- Üzerinde Akış denetimi sekmesinde, veri akışı görev eklemek ve sorgu birleştirilmiş görev bağlanmak dize.
Sonraki Adım
Sorgu hazırladıktan sonra dize ve veri akışı görev yapılandırmak için sonraki adımı Değiştir veri veritabanından alır tablo değerli işlev oluştur.
Sonraki konu:Değişiklik veri almak için işlevi oluşturma
|