Aracılığıyla paylaş


PowerShell kullanarak değişiklik izleme bilgilerini kullanarak verileri Azure SQL Veritabanı Azure Blob Depolama artımlı olarak yükleme

UYGULANANLAR: Azure Data Factory Azure Synapse Analytics

İpucu

Kuruluşlar için hepsi bir arada analiz çözümü olan Microsoft Fabric'te Data Factory'yi deneyin. Microsoft Fabric , veri taşımadan veri bilimine, gerçek zamanlı analize, iş zekasına ve raporlamaya kadar her şeyi kapsar. Yeni bir deneme sürümünü ücretsiz olarak başlatmayı öğrenin!

Bu öğreticide, Azure SQL Veritabanı'daki kaynak veritabanındaki değişiklik izleme bilgilerine dayalı olarak değişiklik verilerini bir Azure blob depolama alanına yükleyen bir işlem hattına sahip bir Azure veri fabrikası oluşturacaksınız.

Bu öğreticide aşağıdaki adımları gerçekleştireceksiniz:

  • Kaynak veri deposunu hazırlama
  • Veri fabrikası oluşturma.
  • Bağlı hizmet oluşturma.
  • Kaynak, havuz ve değişiklik izleme veri kümelerini oluşturma.
  • Tam kopyalama işlem hattını oluşturma, çalıştırma ve izleme
  • Kaynak tabloya veri ekleme veya bu verileri güncelleştirme
  • Artımlı kopyalama işlem hattını oluşturma, çalıştırma ve izleme

Not

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz . Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Genel bakış

İlk veriler yüklendikten sonra verileri artımlı olarak yükleme senaryosu, veri tümleştirme çözümlerinde sıkça kullanılır. Bazı durumlarda, kaynak veri deponuzda belirli bir süre içinde değiştirilen veriler (örneğin, LastModifyTime, CreationTime) kolayca dilimlenebilir. Bazı durumlarda değişiklik verilerini, verileri en son işlediğiniz zamandan açıkça ayırt etmenin bir yolu yoktur. Azure SQL Veritabanı ve SQL Server gibi veri depoları tarafından desteklenen Değişiklik İzleme teknolojisi, değişiklik verilerini belirlemek için kullanılabilir. Bu öğreticide, Azure SQL Veritabanındaki değişiklik verilerini Azure Blob Depolama’ya artımlı olarak yüklemek amacıyla SQL Değişiklik İzleme teknolojisiyle Azure Data Factory’nin nasıl kullanılacağı açıklanır. SQL Değişiklik İzleme teknolojisi hakkında daha kesin bilgiler için bkz. SQL Server’da Değişiklik İzleme.

Uçtan uca iş akışı

Değişiklik İzleme teknolojisini kullanarak verileri artımlı olarak yüklemek için sık kullanılan uçtan uca iş akışı adımları burada verilmiştir.

Not

Hem Azure SQL Veritabanı hem de SQL Server, Değişiklik İzleme teknolojisini destekler. Bu öğreticide, Azure SQL Veritabanını kaynak veri deposu olarak kullanılır. Sql Server örneğini de kullanabilirsiniz.

  1. Geçmiş verilerin ilk yüklenmesi (bir kez çalıştır):
    1. Azure SQL Veritabanı'daki kaynak veritabanında Değişiklik İzleme teknolojisini etkinleştirin.
    2. Değiştirilen verileri yakalamak için temel olarak veritabanındaki SYS_CHANGE_VERSION ilk değerini alın.
    3. Kaynak veritabanından bir Azure blob depolama alanına tam veri yükleyin.
  2. Delta verilerinin bir zamanlamaya göre artımlı yüklenmesi (verilerin ilk yüklenmesinden sonra düzenli aralıklarla çalıştırılır):
    1. Eski ve yeni SYS_CHANGE_VERSION değerleri alın.
    2. sys.change_tracking_tables yerine kaynak tablosundaki verilerle değiştirilen satırların (iki SYS_CHANGE_VERSION değeri arasında) birincil anahtarlarını birleştirerek değişiklik verilerini yükleyin ve ardından değişiklik verilerini hedefe taşıyın.
    3. SYS_CHANGE_VERSION değerini bir sonraki değişiklik yükleme için değiştirin.

Yüksek düzeyli çözüm

Bu öğreticide, aşağıdaki iki işlemi gerçekleştiren iki işlem hattı oluşturursunuz:

  1. İlk yükleme: Kaynak veri deposundaki (Azure SQL Veritabanı) tüm verileri hedef veri deposuna (Azure Blob Depolama) kopyalayan bir kopyalama etkinliğine sahip bir işlem hattı oluşturursunuz.

    Verilerin tam yüklenmesi

  2. Artımlı yükleme: Aşağıdaki etkinliklerle bir işlem hattı oluşturursunuz ve bunu düzenli olarak çalıştırırsınız.

    1. Eski ve yeni SYS_CHANGE_VERSION değerlerini Azure SQL Veritabanı’ndan almak için iki arama etkinliği oluşturun ve bunu kopyalama etkinliğine geçirin.
    2. SYS_CHANGE_VERSION değerleri arasındaki eklenen/güncelleştirilen/silinen verileri Azure SQL Veritabanı’ndan Azure Blob Depolama’ya kopyalamak için bir kopyalama etkinliği oluşturun.
    3. SYS_CHANGE_VERSION değerini bir sonraki işlem hattı çalıştırmasında güncelleştirmek için bir saklı yordam etkinliği oluşturun.

    Artımlı yükleme akış diyagramı

Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Önkoşullar

  • Azure PowerShell. Azure PowerShell’i yükleme ve yapılandırma konusundaki yönergeleri izleyerek en güncel Azure PowerShell modüllerini yükleyin.
  • Azure SQL Veritabanı. Veritabanını kaynak veri deposu olarak kullanabilirsiniz. Azure SQL Veritabanı'da veritabanınız yoksa, oluşturma adımları için Azure SQL Veritabanı'da veritabanı oluşturma makalesine bakın.
  • Azure Depolama hesabı. Blob depolamayı havuz veri deposu olarak kullanabilirsiniz. Azure depolama hesabınız yoksa, oluşturma adımları için Depolama hesabı oluşturma makalesine bakın. adftutorial adlı bir kapsayıcı oluşturun.

Veritabanınızda veri kaynağı tablosu oluşturma

  1. SQL Server Management Studio'yu başlatın ve SQL Veritabanı bağlanın.

  2. Sunucu Gezgini’nde veritabanınıza sağ tıklayın ve Yeni Sorgu’yu seçin.

  3. Veri kaynağı deposu olarak adlandırılan data_source_table bir tablo oluşturmak için veritabanınızda aşağıdaki SQL komutunu çalıştırın.

    create table data_source_table
    (
        PersonID int NOT NULL,
        Name varchar(255),
        Age int
        PRIMARY KEY (PersonID)
    );
    
    INSERT INTO data_source_table
        (PersonID, Name, Age)
    VALUES
        (1, 'aaaa', 21),
        (2, 'bbbb', 24),
        (3, 'cccc', 20),
        (4, 'dddd', 26),
        (5, 'eeee', 22);
    
    
  4. Aşağıdaki SQL sorgusunu çalıştırarak veritabanınızda ve kaynak tabloda (data_source_table) Değişiklik İzleme mekanizmasını etkinleştirin:

    Not

    • Veritabanınızın adını>, data_source_table olan veritabanınızın adıyla değiştirin<.
    • Değiştirilen veriler, geçerli örnekte iki gün boyunca saklanır. Değiştirilen verileri üç günlük veya daha uzun aralıklarla yüklerseniz, bazı değiştirilen veriler dahil edilmez. Bu durumda CHANGE_RETENTION değerini değiştirip daha büyük bir sayı belirlemelisiniz. Alternatif olarak, değiştirilen verilerin iki gün içinde yüklenmesini de sağlayabilirsiniz. Daha fazla bilgi için bkz. Veritabanı için değişiklik izlemeyi etkinleştirme
    ALTER DATABASE <your database name>
    SET CHANGE_TRACKING = ON  
    (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)  
    
    ALTER TABLE data_source_table
    ENABLE CHANGE_TRACKING  
    WITH (TRACK_COLUMNS_UPDATED = ON)
    
  5. Yeni bir tablo oluşturun ve aşağıdaki sorguyu çalıştırarak ChangeTracking_version değerini varsayılan değerle depolayın:

    create table table_store_ChangeTracking_version
    (
        TableName varchar(255),
        SYS_CHANGE_VERSION BIGINT,
    );
    
    DECLARE @ChangeTracking_version BIGINT
    SET @ChangeTracking_version = CHANGE_TRACKING_CURRENT_VERSION();  
    
    INSERT INTO table_store_ChangeTracking_version
    VALUES ('data_source_table', @ChangeTracking_version)
    

    Not

    SQL Veritabanı için değişiklik izlemeyi etkinleştirdikten sonra veriler değiştirilmezse, değişiklik izleme sürümünün değeri 0 olur.

  6. Veritabanınızda saklı yordam oluşturmak için aşağıdaki sorguyu çalıştırın. İşlem hattı, bu saklı yordamı, bir önceki adımda oluşturduğunuz tablodaki değişiklik izleme sürümünü güncelleştirmeye çağırır.

    CREATE PROCEDURE Update_ChangeTracking_Version @CurrentTrackingVersion BIGINT, @TableName varchar(50)
    AS
    
    BEGIN
    
    UPDATE table_store_ChangeTracking_version
    SET [SYS_CHANGE_VERSION] = @CurrentTrackingVersion
    WHERE [TableName] = @TableName
    
    END    
    

Azure PowerShell

Azure PowerShell’i yükleme ve yapılandırma konusundaki yönergeleri izleyerek en güncel Azure PowerShell modüllerini yükleyin.

Veri fabrikası oluşturma

  1. Daha sonra PowerShell komutlarında kullanacağınız kaynak grubu adı için bir değişken tanımlayın. Aşağıdaki komut metnini PowerShell'e kopyalayın Azure kaynak grubu için çift tırnak içinde bir ad belirtin ve ardından komutu çalıştırın. Örneğin: "adfrg".

    $resourceGroupName = "ADFTutorialResourceGroup";
    

    Kaynak grubu zaten varsa, üzerine yazılmasını istemeyebilirsiniz. $resourceGroupName değişkenine farklı bir değer atayın ve komutu yeniden çalıştırın

  2. Veri fabrikasının konumu için bir değişken tanımlayın:

    $location = "East US"
    
  3. Azure kaynak grubunu oluşturmak için aşağıdaki komutu çalıştırın:

    New-AzResourceGroup $resourceGroupName $location
    

    Kaynak grubu zaten varsa, üzerine yazılmasını istemeyebilirsiniz. $resourceGroupName değişkenine farklı bir değer atayın ve komutu yeniden çalıştırın.

  4. Veri fabrikasının adı için bir değişken tanımlayın.

    Önemli

    Veri fabrikasının adını genel olarak benzersiz olacak şekilde güncelleştirin.

    $dataFactoryName = "IncCopyChgTrackingDF";
    
  5. Veri fabrikasını oluşturmak için aşağıdaki Set-AzDataFactoryV2 cmdlet'ini çalıştırın:

    Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location $location -Name $dataFactoryName
    

Aaşağıdaki noktaları unutmayın:

  • Azure data factory adı küresel olarak benzersiz olmalıdır. Aşağıdaki hata iletisini alırsanız adı değiştirip yeniden deneyin.

    The specified Data Factory name 'ADFIncCopyChangeTrackingTestFactory' is already in use. Data Factory names must be globally unique.
    
  • Data Factory örnekleri oluşturmak için, Azure'da oturum açarken kullandığınız kullanıcı hesabı katkıda bulunan veya sahip rollerinin üyesi ya da bir Azure aboneliğinin yöneticisi olmalıdır.

  • Data Factory'nin kullanılabileceği Azure bölgelerinin bir listesi için bir sonraki sayfada ilgilendiğiniz bölgeleri seçin ve Analytics'i genişleterek Data Factory: Products available by region (Bölgeye göre kullanılabilir durumdaki ürünler) bölümünü bulun. Veri fabrikası tarafından kullanılan verileri depoları (Azure Depolama, Azure SQL Veritabanı vb.) ve işlemler (HDInsight vb.) başka bölgelerde olabilir.

Bağlı hizmetler oluşturma

Veri depolarınızı ve işlem hizmetlerinizi veri fabrikasına bağlamak için veri fabrikasında bağlı hizmetler oluşturursunuz. Bu bölümde, Azure SQL Veritabanı'da Azure Depolama hesabınıza ve veritabanınıza bağlı hizmetler oluşturacaksınız.

Azure Depolama bağlı hizmeti oluşturun.

Bu adımda, Azure Depolama Hesabınızı veri fabrikasına bağlarsınız.

  1. :\ADFTutorials\IncCopyChangeTrackingTutorial klasöründe şu içeriğe sahip AzureStorageLinkedService.json adlı bir JSON dosyası oluşturun: (Böyle bir klasör mevcut değilse, bunu oluşturun.) dosyasını kaydetmeden önce değerini <accountKey> Azure depolama hesabınızın adı ve anahtarıyla değiştirin<accountName>.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "type": "AzureStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>"
            }
        }
    }
    
  2. Azure PowerShell'de C:\ADFTutorials\IncCopyChangeTrackingTutorial klasörüne geçin.

  3. Bağlı hizmeti oluşturmak için Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırın: AzureStorageLinkedService. Aşağıdaki örnekte, ResourceGroupName ve DataFactoryName parametrelerinin değerlerini geçirirsiniz.

    Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"
    

    Örnek çıktı aşağıdaki gibidir:

    LinkedServiceName : AzureStorageLinkedService
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
    

Azure SQL Veritabanı bağlı hizmeti oluşturun.

Bu adımda veritabanınızı veri fabrikasına bağlarsınız.

  1. C:\ADFTutorials\IncCopyChangeTrackingTutorial klasöründe şu içeriğe sahip AzureSQLDatabaseLinkedService.json adlı bir JSON dosyası oluşturun: Dosyayı kaydetmeden önce sunucunuzun adını> ve <veritabanınızın> adını sunucunuzun ve veritabanınızın adıyla değiştirin<. Veri fabrikanızın yönetilen kimliğine erişim vermek için Azure SQL Server'ınızı da yapılandırmanız gerekir.

    {
    "name": "AzureSqlDatabaseLinkedService",
    "properties": {
            "type": "AzureSqlDatabase",
            "typeProperties": {
                "connectionString": "Server=tcp:<your-server-name>.database.windows.net,1433;Database=<your-database-name>;"
            },
            "authenticationType": "ManagedIdentity",
            "annotations": []
        }
    }
    
  2. Azure PowerShell'de Set-AzDataFactoryV2LinkedService cmdlet'ini çalıştırarak bağlı hizmeti oluşturun: AzureSQLDatabaseLinkedService.

    Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSQLDatabaseLinkedService" -File ".\AzureSQLDatabaseLinkedService.json"
    

    Örnek çıktı aşağıdaki gibidir:

    LinkedServiceName : AzureSQLDatabaseLinkedService
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
    

Veri kümeleri oluşturma

Bu adımda veri kaynağını, veri hedefini ve SYS_CHANGE_VERSION depolanacağı yeri temsil eden veri kümeleri oluşturacaksınız.

Kaynak veri kümesi oluşturma

Bu adımda, kaynak verileri temsil etmek için bir veri kümesi oluşturursunuz.

  1. Aşağıdaki içeriğe sahip klasörde SourceDataset.json adlı bir JSON dosyası oluşturun:

    {
        "name": "SourceDataset",
        "properties": {
            "type": "AzureSqlTable",
            "typeProperties": {
                "tableName": "data_source_table"
            },
            "linkedServiceName": {
                "referenceName": "AzureSQLDatabaseLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }   
    
  2. Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırarak veri kümesini oluşturun: SourceDataset

    Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SourceDataset" -File ".\SourceDataset.json"
    

    Cmdlet’in örnek çıktısı aşağıdaki gibidir:

    DatasetName       : SourceDataset
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
    

Havuz veri kümesi oluşturma

Bu adımda, kaynak veri deposundan kopyalanan verileri temsil etmek için bir veri kümesi oluşturursunuz.

  1. Aşağıdaki içeriğe sahip klasörde SinkDataset.json adlı bir JSON dosyası oluşturun:

    {
        "name": "SinkDataset",
        "properties": {
            "type": "AzureBlob",
            "typeProperties": {
                "folderPath": "adftutorial/incchgtracking",
                "fileName": "@CONCAT('Incremental-', pipeline().RunId, '.txt')",
                "format": {
                    "type": "TextFormat"
                }
            },
            "linkedServiceName": {
                "referenceName": "AzureStorageLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }
    

    Önkoşulların bir parçası olarak, Azure Blob Depolama’nızda adftutorial kapsayıcısını oluşturursunuz. Henüz yoksa kapsayıcıyı oluşturun (veya) var olan bir kapsayıcının adına ayarlayın. Bu öğreticide, çıkış dosyası adı dinamik olarak şu ifade kullanılarak oluşturulur: @CONCAT('Incremental-', pipeline(). RunId, '.txt').

  2. Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırarak veri kümesini oluşturun: SinkDataset

    Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SinkDataset" -File ".\SinkDataset.json"
    

    Cmdlet’in örnek çıktısı aşağıdaki gibidir:

    DatasetName       : SinkDataset
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureBlobDataset
    

Değişiklik izleme veri kümesi oluşturma

Bu adımda değişiklik izleme sürümünü depolamak için bir veri kümesi oluşturacaksınız.

  1. Aşağıdaki içeriğe sahip klasörde ChangeTrackingDataset.json adlı bir JSON dosyası oluşturun:

    {
        "name": " ChangeTrackingDataset",
        "properties": {
            "type": "AzureSqlTable",
            "typeProperties": {
                "tableName": "table_store_ChangeTracking_version"
            },
            "linkedServiceName": {
                "referenceName": "AzureSQLDatabaseLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }
    

    Önkoşulların bir parçası olarak table_store_ChangeTracking_version tablosunu oluşturursunuz.

  2. Set-AzDataFactoryV2Dataset cmdlet'ini çalıştırarak veri kümesini oluşturun: ChangeTrackingDataset

    Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "ChangeTrackingDataset" -File ".\ChangeTrackingDataset.json"
    

    Cmdlet’in örnek çıktısı aşağıdaki gibidir:

    DatasetName       : ChangeTrackingDataset
    ResourceGroupName : ADFTutorialResourceGroup
    DataFactoryName   : IncCopyChgTrackingDF
    Structure         :
    Properties        : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
    

Tam kopya için işlem hattı oluşturma

Bu adımda, kaynak veri deposundaki (Azure SQL Veritabanı) tüm verileri hedef veri deposuna (Azure Blob Depolama) kopyalayan bir kopyalama etkinliğine sahip bir işlem hattı oluşturursunuz.

  1. Şu içeriğe sahip klasörde bir FullCopyPipeline.json adlı bir JSON dosyası oluşturun:

    {
        "name": "FullCopyPipeline",
        "properties": {
            "activities": [{
                "name": "FullCopyActivity",
                "type": "Copy",
                "typeProperties": {
                    "source": {
                        "type": "SqlSource"
                    },
                    "sink": {
                        "type": "BlobSink"
                    }
                },
    
                "inputs": [{
                    "referenceName": "SourceDataset",
                    "type": "DatasetReference"
                }],
                "outputs": [{
                    "referenceName": "SinkDataset",
                    "type": "DatasetReference"
                }]
            }]
        }
    }
    
  2. İşlem hattını oluşturmak için Set-AzDataFactoryV2Pipeline cmdlet'ini çalıştırın: FullCopyPipeline.

     Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "FullCopyPipeline" -File ".\FullCopyPipeline.json"
    

    Örnek çıktı aşağıdaki gibidir:

     PipelineName      : FullCopyPipeline
     ResourceGroupName : ADFTutorialResourceGroup
     DataFactoryName   : IncCopyChgTrackingDF
     Activities        : {FullCopyActivity}
     Parameters        :
    

Tam kopyalama işlem hattını çalıştırma

Invoke-AzDataFactoryV2Pipeline cmdlet'ini kullanarak fullCopyPipeline işlem hattını çalıştırın.

Invoke-AzDataFactoryV2Pipeline -PipelineName "FullCopyPipeline" -ResourceGroup $resourceGroupName -dataFactoryName $dataFactoryName        

Tam kopyalama işlem hattını izleme

  1. Azure portalı’nda oturum açın.

  2. Tüm hizmetler’e tıklayın, data factories anahtar sözcüğüyle arama yapın ve Veri fabrikaları seçeneğini belirleyin.

    Veri fabrikaları menüsü

  3. Veri fabrikaları listesinde veri fabrikanızı arayın ve bunu seçerek Veri fabrikası sayfasını başlatın.

    Veri fabrikanızı arama

  4. Veri fabrikası sayfasında İzleme ve Yönetme kutucuğuna tıklayın.

    İzleme ve Yönetme kutucuğu

  5. Veri Entegrasyonu Uygulaması ayrı bir sekmede başlatılır. Tüm işlem hattı çalıştırmalarını ve bunların durumlarını görebilirsiniz. Aşağıdaki örnekte işlem hattı çalıştırmasının durumunun Başarılı olarak belirtildiğini görebilirsiniz. Parametreler sütunundaki bağlantıya tıklayarak işlem hattına geçirilen parametreleri denetleyebilirsiniz. Bir hata oluştuysa, Hata sütununda bir bağlantı görürsünüz. Eylemler sütunundaki bağlantıya tıklayın.

    Bir veri fabrikası için işlem hattı çalıştırmalarını gösteren ekran görüntüsü.

  6. Eylemler sütunundaki bağlantıya tıkladığınızda, işlem hattına yönelik tüm eylem çalıştırmalarını gösteren sayfayı görürsünüz.

    İşlem Hatları bağlantısının vurgulu olduğu bir veri fabrikasının etkinlik çalıştırmalarını gösteren ekran görüntüsü.

  7. İşlem hattı çalıştırmaları görünümüne dönmek için, resimde gösterildiği gibi İşlem hatları seçeneğine tıklayın.

Sonuçları gözden geçirin

adftutorial kapsayıcısının incremental-<GUID>.txt klasöründe incchgtracking adlı bir dosya görürsünüz.

Tam kopyadan çıkış dosyası

Dosyada veritabanınızdaki veriler bulunmalıdır:

1,aaaa,21
2,bbbb,24
3,cccc,20
4,dddd,26
5,eeee,22

Kaynak tabloya daha fazla veri ekleme

Bir satır eklemek ve satırı güncelleştirmek için veritabanınızda aşağıdaki sorguyu çalıştırın.

INSERT INTO data_source_table
(PersonID, Name, Age)
VALUES
(6, 'new','50');


UPDATE data_source_table
SET [Age] = '10', [name]='update' where [PersonID] = 1

Değişiklik kopyası için bir işlem hattı oluşturma

Bu adımda, aşağıdaki etkinliklerle bir işlem hattı oluşturursunuz ve bunu düzenli olarak çalıştırırsınız. Arama etkinlikleri, eski ve yeni SYS_CHANGE_VERSION değerlerini Azure SQL Veritabanı’ndan alır ve bunu kopyalama etkinliğine geçirir. Kopyalama etkinliği, SYS_CHANGE_VERSION değerleri arasındaki eklenen/güncelleştirilen/silinen verileri Azure SQL Veritabanı’ndan Azure Blob Depolama’ya kopyalar. Saklı yordam etkinliği, SYS_CHANGE_VERSION değerini bir sonraki işlem hattı çalıştırmasında güncelleştirir.

  1. Aşağıdaki içeriğe sahip klasörde bir IncrementalCopyPipeline.json adlı bir JSON dosyası oluşturun:

    {
        "name": "IncrementalCopyPipeline",
        "properties": {
            "activities": [
                {
                    "name": "LookupLastChangeTrackingVersionActivity",
                    "type": "Lookup",
                    "typeProperties": {
                        "source": {
                            "type": "SqlSource",
                            "sqlReaderQuery": "select * from table_store_ChangeTracking_version"
                        },
                        "dataset": {
                            "referenceName": "ChangeTrackingDataset",
                            "type": "DatasetReference"
                        }
                    }
                },
                {
                    "name": "LookupCurrentChangeTrackingVersionActivity",
                    "type": "Lookup",
                    "typeProperties": {
                        "source": {
                            "type": "SqlSource",
                            "sqlReaderQuery": "SELECT CHANGE_TRACKING_CURRENT_VERSION() as CurrentChangeTrackingVersion"
                        },
                        "dataset": {
                            "referenceName": "SourceDataset",
                            "type": "DatasetReference"
                        }
                    }
                },
                {
                    "name": "IncrementalCopyActivity",
                    "type": "Copy",
                    "typeProperties": {
                        "source": {
                            "type": "SqlSource",
                            "sqlReaderQuery": "select data_source_table.PersonID,data_source_table.Name,data_source_table.Age, CT.SYS_CHANGE_VERSION, SYS_CHANGE_OPERATION from data_source_table RIGHT OUTER JOIN CHANGETABLE(CHANGES data_source_table, @{activity('LookupLastChangeTrackingVersionActivity').output.firstRow.SYS_CHANGE_VERSION}) as CT on data_source_table.PersonID = CT.PersonID where CT.SYS_CHANGE_VERSION <= @{activity('LookupCurrentChangeTrackingVersionActivity').output.firstRow.CurrentChangeTrackingVersion}"
                        },
                        "sink": {
                            "type": "BlobSink"
                        }
                    },
                    "dependsOn": [
                        {
                            "activity": "LookupLastChangeTrackingVersionActivity",
                            "dependencyConditions": [
                                "Succeeded"
                            ]
                        },
                        {
                            "activity": "LookupCurrentChangeTrackingVersionActivity",
                            "dependencyConditions": [
                                "Succeeded"
                            ]
                        }
                    ],
                    "inputs": [
                        {
                            "referenceName": "SourceDataset",
                            "type": "DatasetReference"
                        }
                    ],
                    "outputs": [
                        {
                            "referenceName": "SinkDataset",
                            "type": "DatasetReference"
                        }
                    ]
                },
                {
                    "name": "StoredProceduretoUpdateChangeTrackingActivity",
                    "type": "SqlServerStoredProcedure",
                    "typeProperties": {
                        "storedProcedureName": "Update_ChangeTracking_Version",
                        "storedProcedureParameters": {
                            "CurrentTrackingVersion": {
                                "value": "@{activity('LookupCurrentChangeTrackingVersionActivity').output.firstRow.CurrentChangeTrackingVersion}",
                                "type": "INT64"
                            },
                            "TableName": {
                                "value": "@{activity('LookupLastChangeTrackingVersionActivity').output.firstRow.TableName}",
                                "type": "String"
                            }
                        }
                    },
                    "linkedServiceName": {
                        "referenceName": "AzureSQLDatabaseLinkedService",
                        "type": "LinkedServiceReference"
                    },
                    "dependsOn": [
                        {
                            "activity": "IncrementalCopyActivity",
                            "dependencyConditions": [
                                "Succeeded"
                            ]
                        }
                    ]
                }
            ]
        }
    }
    
  2. İşlem hattını oluşturmak için Set-AzDataFactoryV2Pipeline cmdlet'ini çalıştırın: FullCopyPipeline.

     Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IncrementalCopyPipeline" -File ".\IncrementalCopyPipeline.json"
    

    Örnek çıktı aşağıdaki gibidir:

     PipelineName      : IncrementalCopyPipeline
     ResourceGroupName : ADFTutorialResourceGroup
     DataFactoryName   : IncCopyChgTrackingDF
     Activities        : {LookupLastChangeTrackingVersionActivity, LookupCurrentChangeTrackingVersionActivity, IncrementalCopyActivity, StoredProceduretoUpdateChangeTrackingActivity}
     Parameters        :
    

Artımlı kopyalama işlem hattını çalıştırma

Invoke-AzDataFactoryV2Pipeline cmdlet'ini kullanarak IncrementalCopyPipeline işlem hattını çalıştırın.

Invoke-AzDataFactoryV2Pipeline -PipelineName "IncrementalCopyPipeline" -ResourceGroup $resourceGroupName -dataFactoryName $dataFactoryName     

Artımlı kopyalama işlem hattını izleme

  1. Veri Tümleştirme Uygulaması’nda işlem hattı çalıştırmaları görünümünü yenileyin. Listede IncrementalCopyPipeline değerini gördüğünüzü onaylayın. Eylemler sütunundaki bağlantıya tıklayın.

    İşlem hattınız da dahil olmak üzere bir veri fabrikası için işlem hattı çalıştırmalarını gösteren ekran görüntüsü.

  2. Eylemler sütunundaki bağlantıya tıkladığınızda, işlem hattına yönelik tüm eylem çalıştırmalarını gösteren sayfayı görürsünüz.

    Birkaçı başarılı olarak işaretlenmiş bir veri fabrikası için işlem hattı çalıştırmalarını gösteren ekran görüntüsü.

  3. İşlem hattı çalıştırmaları görünümüne dönmek için, resimde gösterildiği gibi İşlem hatları seçeneğine tıklayın.

Sonuçları gözden geçirin

adftutorial kapsayıcısının incchgtracking klasöründe ikinci dosyayı görürsünüz.

Artımlı kopyadan çıkış dosyası

Dosyada yalnızca veritabanınızdaki delta verileri bulunmalıdır. U bulunan kayıt, veritabanındaki güncelleştirilmiş satırdır ve I ise eklenen bir satırdır.

1,update,10,2,U
6,new,50,1,I

İlk üç sütun, data_source_table tablosundaki değiştirilmiş verilerdir. Son iki sütun, değişiklik izleme sistem tablosundaki meta verilerdir. Dördüncü sütun, değiştirilen her satıra ilişkin SYS_CHANGE_VERSION değeridir. Beşinci sütun ise işlemdir: U = güncelleştirme, I = ekleme. Değişiklik izleme bilgileri hakkında daha fazla ayrıntı için bkz. CHANGETABLE.

==================================================================
PersonID Name    Age    SYS_CHANGE_VERSION    SYS_CHANGE_OPERATION
==================================================================
1        update  10            2                                 U
6        new     50            1                                 I

Yeni ve değiştirilmiş dosyaları yalnızca LastModifiedDate'larına göre kopyalama hakkında bilgi edinmek için aşağıdaki öğreticiye ilerleyin: