Share via


Adatok növekményes betöltése az Azure SQL Database-ből az Azure Blob Storage-ba változáskövetési információk használatával a PowerShell használatával

A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!

Ebben az oktatóanyagban egy Azure Data Factoryt hoz létre egy folyamattal, amely az Azure SQL Database forrásadatbázisában lévő változáskövetési információk alapján betölti a változásadatokat egy Azure Blob Storage-ba.

Az oktatóanyagban az alábbi lépéseket fogja végrehajtani:

  • A forrásadattár előkészítése
  • Adat-előállító létrehozása
  • Társított szolgáltatások létrehozása.
  • Forrás, fogadó és változáskövetési adatkészletek létrehozása.
  • A teljes másolási folyamat létrehozása, futtatása és figyelése
  • A forrástáblában szereplő adatok hozzáadása vagy frissítése
  • A növekményes másolási folyamat létrehozása, futtatása és figyelése

Megjegyzés:

We recommend that you use the Azure Az PowerShell module to interact with Azure. See Install Azure PowerShell to get started. To learn how to migrate to the Az PowerShell module, see Migrate Azure PowerShell from AzureRM to Az.

Áttekintés

Adatintegrációs megoldások esetében gyakran használt forgatókönyv az adatok növekményes betöltése egy kezdeti, teljes adatbetöltést követően. Bizonyos esetekben a forrásadattárban lévő adott időszakbeli módosított adatok egyszerűen felszeletelhetők (például: LastModifyTime, CreationTime). Bizonyos esetekben nincs kifejezett módja a legutóbbi adatfeldolgozásból származó változásadatok azonosításának. A változásadatok a változáskövetési technológiával azonosíthatóak, amelyeket egyes adattárak támogatnak, például az Azure SQL Database vagy az SQL Server. Ez az oktatóanyag bemutatja, hogy az Azure Data Factory és az SQL változáskövetési technológia segítségével hogyan tölthetők be növekményesen az Azure SQL Database változásadatai az Azure Blob Storage-ba. Az SQL változáskövetési technológiával kapcsolatos részletesebb információért lásd: Változáskövetés az SQL Serveren.

Teljes körű munkafolyamat

Íme az adatok változáskövetési technológiával történő növekményes betöltési munkafolyamatának részletes lépései.

Megjegyzés:

Az Azure SQL Database és az SQL Server is támogatja a változáskövetési technológiát. Ez az oktatóanyag az Azure SQL Database-t használja forrásadattárként. SQL Server-példányt is használhat.

  1. Az előzményadatok kezdeti betöltése (egyszeri futtatás):
    1. A változáskövetési technológia engedélyezése a forrásadatbázisban az Azure SQL Database-ben.
    2. Kérje le a SYS_CHANGE_VERSION kezdeti értékét az adatbázisban a módosított adatok rögzítésének alapkonfigurációjaként.
    3. Töltsön be teljes adatokat a forrásadatbázisból egy Azure Blob Storage-ba.
  2. A deltaadatok növekményes betöltése ütemezés szerint (az adatok kezdeti betöltése után rendszeres időközönként fut):
    1. Kérje le a SYS_CHANGE_VERSION régi és új értékét.
    2. A változásadatok betöltéséhez egyesítse a sys.change_tracking_tables táblázat módosított sorainak (a két SYS_CHANGE_VERSION érték közötti) elsődleges kulcsait és a forrástábla adatait, majd helyezze át a módosított adatokat a célhelyre.
    3. A következő alkalommal frissítse a SYS_CHANGE_VERSION értékét a változásadatok betöltéséhez.

Összefoglaló jellegű megoldás

Ebben az oktatóanyagban két folyamatot hoz létre, amelyek az alábbi két műveletet hajtják végre:

  1. Kezdeti betöltés: egy másolási tevékenységgel rendelkező folyamatot fog létrehozni, amely a forrásadattár (Azure SQL Database) összes adatát átmásolja a céladattárba (Azure Blob Storage).

    Full loading of data

  2. Növekményes betöltés: a következő tevékenységeket tartalmazó folyamatot fog létrehozni, majd időszakosan futtatni.

    1. Hozzon létre két keresési tevékenységet a SYS_CHANGE_VERSION régi és új értékének lekéréséhez az Azure SQL Database-ből, majd adja azt át a másolási tevékenységnek.
    2. Hozzon létre egy másolási tevékenységet a két SYS_CHANGE_VERSION érték közötti beillesztett/frissített/törölt adatok az Azure SQL Database-ből az Azure Blob Storage-be való másolásához.
    3. Hozzon létre egy tárolt eljárási tevékenységet a SYS_CHANGE_VERSION értékének a következő folyamatfuttatáshoz való frissítéséhez.

    Increment load flow diagram

Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.

Előfeltételek

  • Azure PowerShell. Kövesse az Azure PowerShell telepítését és konfigurálását ismertető cikkben szereplő utasításokat a legújabb Azure PowerShell-modulok telepítéséhez.
  • Azure SQL Database Ezt az adatbázist használjuk forrásadattárként. Ha nem rendelkezik adatbázissal az Azure SQL Database-ben, a létrehozás lépéseit az Adatbázis létrehozása az Azure SQL Database-ben című cikkben találja.
  • Egy Azure Storage-fiók. A blobtárolót használjuk majd fogadóadattárként. Ha még nem rendelkezik Azure Storage-fiókkal, a létrehozás folyamatáért lásd a tárfiók létrehozását ismertető cikket. Hozzon létre egy tárolót adftutorial néven.

Adatforrástábla létrehozása az adatbázisban

  1. Indítsa el az SQL Server Management Studiót, és csatlakozzon az SQL Database-hez.

  2. A Kiszolgálókezelőben kattintson a jobb gombbal az adatbázisra, és válassza az Új lekérdezés elemet.

  3. Futtassa a következő SQL-parancsot az adatbázison egy adatforrástárként elnevezett data_source_table tábla létrehozásához.

    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. Engedélyezze a változáskövetési mechanizmust az adatbázisban és a forrástáblában (data_source_table) az alábbi SQL-lekérdezés futtatásával:

    Megjegyzés:

    • Cserélje le <az adatbázis nevét> a data_source_table tartalmazó adatbázis nevére.
    • Ebben a példában a rendszer két napig tárolja a módosított adatokat. Ha a módosított adatokat három naponta vagy annál ritkábban tölti be, nem minden módosított adat jelenik meg. Növelje a CHANGE_RETENTION változó értékét, vagy ügyeljen arra, hogy a módosított adatok betöltései között ne teljen el két napnál több idő. További információk: Változáskövetés engedélyezése adatbázishoz.
    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. Hozzon létre egy új táblát, és az alábbi lekérdezés futtatásával tárolja alapértelmezett értékkel a ChangeTracking_version változót:

    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)
    

    Megjegyzés:

    Ha az adatok nem módosultak, miután engedélyezte a változáskövetést az SQL Database-ben, a változáskövetés verziójának értéke 0.

  6. Futtassa a következő lekérdezést egy tárolt eljárás létrehozásához az adatbázisban. A folyamat ezt a tárolt eljárást hívja meg az előző lépésben létrehozott tábla változáskövetési verziójának frissítéséhez.

    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

Kövesse az Azure PowerShell telepítését és konfigurálását ismertető cikkben szereplő utasításokat a legújabb Azure PowerShell-modulok telepítéséhez.

Adat-előállító létrehozása

  1. Adjon meg egy olyan változót, amelyet később a PowerShell-parancsokban az erőforráscsoport neveként fog használni. Másolja az alábbi parancsszöveget a PowerShellbe, adja meg az Azure-erőforráscsoport nevét idézőjelek között, majd futtassa a parancsot. For example: "adfrg".

    $resourceGroupName = "ADFTutorialResourceGroup";
    

    Ha az erőforráscsoport már létezik, előfordulhat, hogy nem kívánja felülírni. Rendeljen egy másik értéket a $resourceGroupName változóhoz, majd futtassa újra a parancsot

  2. Adjon meg egy változót az adat-előállító helyéhez:

    $location = "East US"
    
  3. Futtassa az alábbi parancsot az Azure-erőforráscsoport létrehozásához:

    New-AzResourceGroup $resourceGroupName $location
    

    Ha az erőforráscsoport már létezik, előfordulhat, hogy nem kívánja felülírni. Rendeljen egy másik értéket a $resourceGroupName változóhoz, majd futtassa újra a parancsot.

  4. Adjon meg egy változót az adat-előállító nevéhez.

    Fontos

    Frissítse az adat-előállító nevét, hogy globálisan egyedi legyen.

    $dataFactoryName = "IncCopyChgTrackingDF";
    
  5. Az adat-előállító létrehozásához futtassa a következő Set-AzDataFactoryV2 parancsmagot:

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

Vegye figyelembe az alábbiakat:

  • Az Azure data factory nevének globálisan egyedinek kell lennie. Ha a következő hibaüzenetet kapja, módosítsa a nevet, majd próbálkozzon újra.

    The specified Data Factory name 'ADFIncCopyChangeTrackingTestFactory' is already in use. Data Factory names must be globally unique.
    
  • Data Factory-példányok létrehozásához a felhasználói fióknak, amellyel belép az Azure-ba, a közreműködő vagy tulajdonos szerepkörök tagjának, vagy az Azure-előfizetés rendszergazdájának kell lennie.

  • Azon Azure-régiók megtekintéséhez, amelyekben jelenleg elérhető a Data Factory, a következő lapon válassza ki az Önt érdeklő régiókat, majd bontsa ki az Elemzés részt, és keresse meg a Data Factory: Elérhető termékek régiók szerint szakaszt. Az adat-előállítók által használt adattárak (Azure Storage, Azure SQL Database stb.) és számítási erőforrások (HDInsight stb.) más régiókban is lehetnek.

Társított szolgáltatások létrehozása

Társított szolgáltatásokat hoz létre egy adat-előállítóban az adattárak és a számítási szolgáltatások adat-előállítóval történő társításához. Ebben a szakaszban társított szolgáltatásokat hoz létre az Azure Storage-fiókjához és adatbázisához az Azure SQL Database-ben.

Azure Storage-beli társított szolgáltatás létrehozása

Ebben a lépésben az Azure Storage-fiókot társítja az adat-előállítóval.

  1. Hozzon létre egy AzureStorageLinkedService.json nevű JSON-fájlt a C:\ADFTutorials\IncCopyChangeTrackingTutorial mappában a következő tartalommal (ha még nem létezik a mappa, hozza létre). <accountKey> A fájl mentése előtt cserélje le <accountName>az Azure Storage-fiók nevét és kulcsát.

    {
        "name": "AzureStorageLinkedService",
        "properties": {
            "type": "AzureStorage",
            "typeProperties": {
                "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>"
            }
        }
    }
    
  2. Az Azure PowerShellben váltson a C:\ADFTutorials\IncCopyChangeTrackingTutorial mappára.

  3. Futtassa a Set-AzDataFactoryV2LinkedService parancsmagot a társított szolgáltatás létrehozásához: AzureStorageLinkedService. A következő példában a ResourceGroupName és a DataFactoryName paraméter értékeit fogja megadni.

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

    Itt látható a minta kimenete:

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

Azure SQL Database-beli társított szolgáltatás létrehozása.

Ebben a lépésben az adatbázist az adat-előállítóhoz csatolja.

  1. Hozzon létre egy AzureSQLDatabaseLinkedService.json nevű JSON-fájlt a C:\ADFTutorials\IncCopyChangeTrackingTutorial mappában a következő tartalommal: Cserélje le< a kiszolgáló<>adatbázisának nevét>, <felhasználói azonosítóját> és <jelszavát> a kiszolgáló nevére, az adatbázis nevére, a felhasználói azonosítóra és a jelszóra a fájl mentése előtt.

    {
        "name": "AzureSQLDatabaseLinkedService",
        "properties": {
            "type": "AzureSqlDatabase",
            "typeProperties": {
                "connectionString": "Server = tcp:<server>.database.windows.net,1433;Initial Catalog=<database name>; Persist Security Info=False; User ID=<user name>; Password=<password>; MultipleActiveResultSets = False; Encrypt = True; TrustServerCertificate = False; Connection Timeout = 30;"
            }
        }
    }
    
  2. Az Azure PowerShellben futtassa a Set-AzDataFactoryV2LinkedService parancsmagot a társított szolgáltatás létrehozásához: AzureSQLDatabaseLinkedService.

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

    Itt látható a minta kimenete:

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

Adatkészletek létrehozása

Ebben a lépésben adatkészleteket hoz létre, amelyek az adatforrást, az adatcél helyét és a SYS_CHANGE_VERSION változó tárolási helyét jelölik.

Forrásadatkészlet létrehozása

Ebben a lépésben egy adatkészletet hoz létre, amely a forrásadatokat jelöli.

  1. Hozzon létre egy SourceDataset.json nevű JSON-fájlt ugyanebben a mappában az alábbi tartalommal:

    {
        "name": "SourceDataset",
        "properties": {
            "type": "AzureSqlTable",
            "typeProperties": {
                "tableName": "data_source_table"
            },
            "linkedServiceName": {
                "referenceName": "AzureSQLDatabaseLinkedService",
                "type": "LinkedServiceReference"
            }
        }
    }   
    
  2. Futtassa a Set-AzDataFactoryV2Dataset parancsmagot az adatkészlet létrehozásához: SourceDataset

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

    Itt látható a parancsmag mintakimenete:

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

Fogadó adatkészlet létrehozása

Ebben a lépésben egy adatkészletet hoz létre, amely a forrásadattárból másolt adatokat jelöli.

  1. Hozzon létre egy SinkDataset.json nevű JSON-fájlt ugyanebben a mappában az alábbi tartalommal:

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

    Előfeltételként hozzon létre egy adftutorial nevű tárolót az Azure Blob Storage-ben. Ha még nem létezik, hozza létre a tárolót, vagy állítsa be egy meglévő tároló nevét. Ebben az oktatóanyagban a kimeneti fájl neve dinamikusan jön létre a következő kifejezéssel: @CONCAT("Incremental-", pipeline(). RunId, '.txt').

  2. Futtassa a Set-AzDataFactoryV2Dataset parancsmagot az adatkészlet létrehozásához: SinkDataset

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

    Itt látható a parancsmag mintakimenete:

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

Változáskövetési adatkészlet létrehozása

Ebben a lépésben egy adatkészletet hozunk létre a változáskövetés verziószámának tárolásához.

  1. Hozzon létre egy ChangeTrackingDataset.json nevű JSON-fájlt ugyanebben a mappában az alábbi tartalommal:

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

    Előfeltételként hozzon létre egy table_store_ChangeTracking_version nevű táblát.

  2. Futtassa a Set-AzDataFactoryV2Dataset parancsmagot az adathalmaz létrehozásához: ChangeTrackingDataset

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

    Itt látható a parancsmag mintakimenete:

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

Folyamat létrehozása teljes másolat készítéséhez

Ebben a lépésben egy másolási tevékenységgel rendelkező folyamatot fog létrehozni, amely a forrásadattár (Azure SQL Database) összes adatát átmásolja a céladattárba (Azure Blob Storage).

  1. Hozzon létre egy FullCopyPipeline.json nevű JSON-fájlt ugyanebben a mappában az alábbi tartalommal:

    {
        "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. Futtassa a Set-AzDataFactoryV2Pipeline parancsmagot a folyamat létrehozásához: FullCopyPipeline.

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

    Itt látható a minta kimenete:

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

A teljes másolási folyamat futtatása

Futtassa a folyamatot: FullCopyPipeline az Invoke-AzDataFactoryV2Pipeline parancsmaggal.

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

A teljes másolási folyamat megfigyelése

  1. Jelentkezzen be az Azure Portalra.

  2. Kattintson a Minden szolgáltatás elemre, végezzen keresést a data factories kulcsszóval, és válassza az Adat-előállítók lehetőséget.

    Data factories menu

  3. Keresse meg az adat-előállítóját az adat-előállítók listájában, és kattintson rá az Adat-előállító lap megnyitásához.

    Search for your data factory

  4. Az Adat-előállító lapon kattintson a Figyelés és felügyelet csempére.

    Monitor & Manage tile

  5. A adatintegráció alkalmazás egy külön lapon indul el. Megtekintheti az összes folyamatfuttatást és azok állapotát. A következő példában a folyamatfuttatás állapota Sikeres. A Paraméterek oszlopban található hivatkozásra kattintva megtekintheti a folyamatnak átadott paramétereket. Hiba esetén egy hivatkozás jelenik meg a Hiba oszlopban. Kattintson a Műveletek oszlopban található hivatkozásra.

    Screenshot shows pipeline runs for a data factory.

  6. Ha a Műveletek oszlopban található hivatkozásra kattint, megjelenik a következő lap, amely megmutatja a folyamat összes tevékenységfuttatását.

    Screenshot shows activity runs for a data factory with the Pipelines link called out.

  7. A Folyamatfuttatások nézetre való visszaváltáshoz kattintson a Folyamatok lehetőségre a képen látható módon.

Az eredmények áttekintése

Egy incremental-<GUID>.txt nevű fájl található az adftutorial nevű tároló incchgtracking mappájában.

Output file from full copy

A fájlnak az adatbázisból származó adatokkal kell rendelkeznie:

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

További adatok hozzáadása a forrástáblához

Futtassa az alábbi lekérdezést az adatbázison egy sor hozzáadásához és egy sor frissítéséhez.

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


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

Folyamat létrehozása a változásadatok másolásához

Ebben a lépésben a következő tevékenységeket tartalmazó folyamatot fog létrehozni, majd időszakosan futtatni. A keresési tevékenységek lekérik a SYS_CHANGE_VERSION régi és új értékét az Azure SQL Database-ből, majd átadják azt a másolási tevékenységnek. A másolási tevékenység a két SYS_CHANGE_VERSION érték közötti beillesztett/frissített/törölt adatokat az Azure SQL Database-ből az Azure Blob Storage-be másolja. A tárolt eljárási tevékenység frissíti a SYS_CHANGE_VERSION értékét a következő folyamatfuttatáshoz.

  1. Hozzon létre egy IncrementalCopyPipeline.json nevű JSON-fájlt ugyanebben a mappában az alábbi tartalommal:

    {
        "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. Futtassa a Set-AzDataFactoryV2Pipeline parancsmagot a folyamat létrehozásához: FullCopyPipeline.

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

    Itt látható a minta kimenete:

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

A növekményes másolási folyamat futtatása

Futtassa a folyamatot: IncrementalCopyPipeline az Invoke-AzDataFactoryV2Pipeline parancsmaggal.

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

A növekményes másolási folyamat figyelése

  1. Az adatintegrációs alkalmazásban frissítse a Folyamatfuttatások nézetet. Ellenőrizze, hogy az IncrementalCopyPipeline szerepel-e a listában. Kattintson a Műveletek oszlopban található hivatkozásra.

    Screenshot shows pipeline runs for a data factory including your pipeline.

  2. Ha a Műveletek oszlopban található hivatkozásra kattint, megjelenik a következő lap, amely megmutatja a folyamat összes tevékenységfuttatását.

    Screenshot shows pipeline runs for a data factory with several marked as succeeded.

  3. A Folyamatfuttatások nézetre való visszaváltáshoz kattintson a Folyamatok lehetőségre a képen látható módon.

Az eredmények áttekintése

A második fájl az adftutorial nevű tároló incchgtracking mappájában található.

Output file from incremental copy

A fájlnak csak az adatbázis különbözeti adataival kell rendelkeznie. Az U karaktert tartalmazó rekord a frissített sor az adatbázisban, az I karaktert tartalmazó rekord pedig a hozzáadott sor.

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

Az első három oszlop a data_source_table táblából származó módosított adatokat tartalmazza. Az utolsó két oszlop a változáskövetési rendszer táblájából származó metaadatokat tartalmazza. A negyedik oszlop az egyes módosított sorokra vonatkozó SYS_CHANGE_VERSION értéket tartalmazza. Az ötödik oszlop a műveletet tartalmazza: U = frissítés, I = beszúrás. A változáskövetési adatokkal kapcsolatos információért lásd: CHANGETABLE.

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

A következő oktatóanyagban megismerheti, hogyan másolhat új és módosított fájlokat csak a LastModifiedDate alapján: