Share via


Sorgu Değiştir veriler için hazırlanılıyor

Denetim akışında bir Integration Services artımlı bir yük getiren paket verileri değiştirmek, üçüncü ve son görev değişikliği verilerini sorgulamak ve veri akışı bir görev eklemek hazırlamak üzere.

Not

denetim akışı için ikinci Görev değişikliği verilerin seçili aralığı için 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. denetim akışı tasarlama işlemi genel 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.

Tasarım konuları

Değişiklik veri almak için , bir Transact-SQL çağıracaktır tablo değerli işlev aralığının bitiş noktası olarak giriş parametrelerini kabul eden ve döndürür, belirtilen aralık için verileri değiştirme.Veri akışı kaynak bileşeni bu çağrıları işlev.Bu kaynak bileşen hakkında daha fazla bilgi için bkz: Alma ve değiştirme verileri anlama.

En sık kullanılan Integration Services Kaynak bileşenleri, OLE DB kaynağı ve kaynak ADO ADO NET kaynağı içeren bir tablo değerli işlev için parametre bilgileri türetilemez. Bu nedenle, çoğu kaynakları parametreli hale getirilmiş bir işlev doğrudan çağrılamaz.

Giriş parametreleri için işlev geçirilmesi için iki Tasarım seçeneğiniz vardır:

  • Parametreli hale getirilmiş bir sorguya bir dize olarak birleştirin..Bir dinamik SQL dizesi parametresi değerleri sabit kodlanmış dizesi halinde düzenlemek için komut dosyası bir görev veya bir SQL yürütmek görev kullanabilirsiniz.Daha sonra bu dize bir paket değişkende depolayın ve kullanılabilmesi için küme SqlCommand özelliği bir Kaynak bileşeninin.Kaynak bileşeni artık parametre bilgilerini gerektirdiğinden, bu yaklaşım başarılı olur.

    Not

    Önceden derlenmiş komut dosyası, bir SQL yürütmek görev'den daha az ek yük oluşturur.

  • Parametreli hale getirilmiş bir sarmalayıcı kullanın..Alternatif olarak, tablo değerli parametreli işlevini çağıran bir sarmalayıcı parametreli bir saklı yordam oluşturabilirsiniz.Bir kaynak bileşeni başarıyla bir saklı yordam için parametre bilgilerini türetmek, çünkü bu yaklaşım başarılı olur.

Bu konu, ilk tasarım seçeneğini kullanır ve parametreli hale getirilmiş bir sorguya bir dize olarak birleştirir.

Sorgu hazırlanıyor

Giriş parametrelerinin değerlerini tek bir sorguda bağlamak için önce dize, sorgu gereken paket değişkenleri ayarlamak zorunda.

Için küme paketi değişkenleri ayarlayın.

  • Içinde Business Intelligence Development Studio, içinde Değişkenleri penceresinde yürütmek SQL tarafından döndürülen sorgu dizesi tutulacağı bir dize veri türü olan bir değişken oluşturmak görev.

    Bu örnek değişken adı SqlDataQuery kullanır.

Oluşturulan paket değişkenle giriş parametrelerinin değerlerini art arda bağlamak için bir kod görev veya SQL Yürüt) görevi kullanabilirsiniz.Aşağıdaki iki yordam, bu bileşenleri yapılandırmak açıklanmıştır.

Sorgu dizesi art arda bağlamak için bir kod görev kullanmak için

  1. Üzerinde denetim akışı sekmesinde, bir komut dosyası görev paket için döngü kapsayıcı sonra ekleyip için döngü kapsayıcı göreve bağlandığınızda.

    Not

    Bu yordam, tek bir paket artımlı bir yük gerçekleştireceğini varsayar tablo.Bu görevi paketi birden çok tablodan yükler ve bir üst birden çok alt paket paketiyle, ilk bileşen olarak her alt paketine eklenebilir.Daha fazla bilgi için bkz:Birden çok tablo, artımlı bir yükleme gerçekleştirme.

  2. Içinde Komut dosyası görev Düzenleyicisi, on the Komut dosyası sayfasında, aşağıdaki seçenekleri işaretleyin:

    1. Için ReadOnlyVariables, select User::DataReady, User::ExtractStartTime, and User::ExtractEndTime gelen.

    2. Için ReadWriteVariables, listeden seçim User::SqlDataQuery.

  3. Içinde Komut dosyası görev Düzenleyicisi, on the Komut dosyası sayfasında, tıklatın.Komut dosyası Düzenle komut dosyası geliştirme ortamı'nı açın.

  4. Ana yordamda, aşağıdaki kod kesimi birini girin:

    • C# 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;
      

      -ya da-

    • Içinde 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
      
  5. Varsayılan satır döndüren bir kod bırak DtsExecResult.Success komut dosyasının yürütülmesine.

  6. Komut dosyası geliştirme ortamı'nı kapatın ve Komut dosyası görev Düzenleyicisi.

Sorgu dizesi art arda bağlamak için bir SQL yürütmek görev kullanmak için

  1. Üzerinde denetim akışı sekmesinde, bir SQL Yürüt) görevi için döngü kapsayıcı sonra pakete eklemek ve için döngü kapsayıcı bu göreve bağlamak.

    Not

    Bu yordam, tek bir paket artımlı bir yük gerçekleştireceğini varsayar tablo.Bu görevi paketi birden çok tablodan yükler ve bir üst birden çok alt paket paketiyle, ilk bileşen olarak her alt paketine eklenebilir.Daha fazla bilgi için bkz:Birden çok tablo, artımlı bir yükleme gerçekleştirme.

  2. Içinde Görev Düzenleyicisi SQL Yürüt, on the Genel sayfasında, aşağıdaki seçenekleri işaretleyin:

    1. Için ResultSet, select Tek satır.

    2. Geçerli bir kaynak veritabanı bağlantısını yapılandırın.

    3. Için SQLSourceType, select Doğrudan giriş.

    4. Için SQLStatement, 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 yan tümce in this sample generates a query for the initial load of change data by passing a null value for the starting tarih and saat. Bu örnek değişiklik veri yakalama etkinleştirilmeden önce yapılan değişiklikler de veri ambarı için karşıya yüklenecek olduğu senaryonun gidermez.

  3. Üzerinde Parametre eşleme sayfaSQL yürütmek görev Düzenleyicisi, aşağıdaki eşleme yapmak:

    1. DataReady değişkeni 0 parametre eşleyin.

    2. Parametre 1 ExtractStartTime değişkeni ile eşleştirin.

    3. ExtractEndTime değişkeni 2 parametre eşleyin.

  4. Üzerinde Sonuç küme sayfaGörev Düzenleyicisi SQL Yürüt, sonucu SqlDataQuery değişkenine eşleyen.

    Sonuç, SqlDataQuery döndürülen tek sütun adını addır.

Önceki yordamlarda, kodlanmış bir dize değerleri ile bir sorgu dizesi Giriş parametreleri için hazırlayan bir görev yapılandırın.Aşağıdaki kod, bu tür bir sorguda bir örnektir dize:

select * from CDCSample. uf_Customer('2007-06-11 14:21:58', '2007-06-12 14:21:58')

veri akışı görevi ekleme

denetim akışı paket tasarlama son adım, veri akışı görevi eklemektir.

veri akışı görevi ekleme ve denetim akışı tamamlamak için:

  • Üzerinde Denetimi akış sekmesi, veri akışı görevi ekleme ve sorgu birleştirilmiş görevi bağlamak dize.

Sonraki adım

Sorgu hazırladıktan sonra dize ve veri akışı görevi yapılandırmak için sonraki adıma değişiklik verileri veritabanından alır tablo değerli işlev oluştur olduğu.

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

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.