Läs in data stegvis från Azure SQL Database till Azure Blob Storage med PowerShell
GÄLLER FÖR: Azure Data Factory
Azure Synapse Analytics
Dricks
Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!
I den här självstudien använder du Azure Data Factory för att skapa en pipeline som läser in deltadata från en tabell i Azure SQL Database till Azure Blob Storage.
I de här självstudierna går du igenom följande steg:
- Förbered datalagringen för att lagra värdet för vattenstämpeln.
- Skapa en datafabrik.
- Skapa länkade tjänster.
- Skapa datauppsättningar för källa, mottagare och vattenstämpel.
- Skapa en pipeline.
- Köra pipelinen.
- Övervaka pipelinekörningen.
Översikt
Här är det avancerade diagrammet:
Här är några viktiga steg för att skapa den här lösningen:
Markera vattenstämpelkolumnen. Markera en kolumn i källdatalagringen som går att använda för att dela upp de nya eller uppdaterade posterna för varje körning. Vanligtvis ökar data i den markerade kolumnen (till exempel last_modify_time elle ID) när rader skapas eller uppdateras. Det maximala värdet i den här kolumnen används som vattenstämpel.
Förbered datalagringen för att lagra värdet för vattenstämpeln.
I den här självstudien lagrar du storleksgränsen i en SQL-databas.Skapa en pipeline med följande arbetsflöde:
Pipelinen i den här lösningen har följande aktiviteter:
- Skapa två sökningsaktiviteter. Använd den första sökningsaktiviteten för att hämta det sista vattenstämpelvärdet. Använd den andra sökningsaktiviteten för att hämta det nya vattenstämpelvärdet. Vattenstämpelvärdena skickas till kopieringsaktiviteten.
- Skapa en aktiviteten Kopiera som kopierar rader från källdatalagret med värdet för vattenstämpelkolumnen större än det gamla vattenstämpelvärdet och mindre än eller lika med det nya vattenstämpelvärdet. Sedan kopieras deltadata från källdatalagringen till Blob-lagring som en ny fil.
- Skapa en StoredProcedure-aktivitet som uppdaterar vattenstämpelvärdet för den pipeline som körs nästa gång.
Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.
Förutsättningar
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
- Azure SQL Database. Du använder databasen som källa för datalagringen. Om du inte har någon databas i Azure SQL Database kan du läsa Skapa en databas i Azure SQL Database för steg för att skapa en.
- Azure Storage. Du kan använda blob-lagringen som mottagare för datalagringen. Om du inte har ett lagringskonto finns det anvisningar om hur du skapar ett i Skapa ett lagringskonto. Skapa en container med namnet adftutorial.
- Azure PowerShell. Följ instruktionerna i Installera och konfigurera Azure PowerShell.
Skapa en datatabell i din SQL-databas
Öppna SQL Server Management Studio. I Server Explorer högerklickar du på databasen och väljer Ny fråga.
Kör följande SQL-kommando mot din SQL-databas för att skapa en tabell med namnet
data_source_table
som datakällagringen:create table data_source_table ( PersonID int, Name varchar(255), LastModifytime datetime ); INSERT INTO data_source_table (PersonID, Name, LastModifytime) VALUES (1, 'aaaa','9/1/2017 12:56:00 AM'), (2, 'bbbb','9/2/2017 5:23:00 AM'), (3, 'cccc','9/3/2017 2:36:00 AM'), (4, 'dddd','9/4/2017 3:21:00 AM'), (5, 'eeee','9/5/2017 8:06:00 AM');
I den här självstudien ska du använda LastModifytime som vattenstämpelkolumn. Data i datakällagringen visas i följande tabell:
PersonID | Name | LastModifytime -------- | ---- | -------------- 1 | aaaa | 2017-09-01 00:56:00.000 2 | bbbb | 2017-09-02 05:23:00.000 3 | cccc | 2017-09-03 02:36:00.000 4 | dddd | 2017-09-04 03:21:00.000 5 | eeee | 2017-09-05 08:06:00.000
Skapa en annan tabell i SQL-databasen för att lagra värdet för högvattenmärket
Kör följande SQL-kommando mot din SQL-databas för att skapa en tabell med namnet
watermarktable
för att lagra värdet för högvattenmärket:create table watermarktable ( TableName varchar(255), WatermarkValue datetime, );
Ställ in standardvärdet för högvattenmärket med tabellnamnet på källdatalagret. I den här självstudien är tabellnamnet: data_source_table.
INSERT INTO watermarktable VALUES ('data_source_table','1/1/2010 12:00:00 AM')
Granska informationen i tabellen
watermarktable
.Select * from watermarktable
Utdata:
TableName | WatermarkValue ---------- | -------------- data_source_table | 2010-01-01 00:00:00.000
Skapa en lagrad procedur i din SQL-databas
Kör följande kommando för att skapa en lagrad procedur i din SQL-databas:
CREATE PROCEDURE usp_write_watermark @LastModifiedtime datetime, @TableName varchar(50)
AS
BEGIN
UPDATE watermarktable
SET [WatermarkValue] = @LastModifiedtime
WHERE [TableName] = @TableName
END
Skapa en datafabrik
Definiera en variabel för resursgruppens namn som du kan använda senare i PowerShell-kommandon. Kopiera följande kommandotext till PowerShell, ange ett namn för Azure-resursgruppen, sätt dubbla citattecken omkring namnet och kör sedan kommandot. Ett exempel är
"adfrg"
.$resourceGroupName = "ADFTutorialResourceGroup";
Om resursgruppen redan finns behöver du kanske inte skriva över den. Ge variabeln
$resourceGroupName
ett annat värde och kör kommandot igen.Definiera en variabel för datafabrikens plats.
$location = "East US"
Kör följande kommando för att skapa en Azure-resursgrupp:
New-AzResourceGroup $resourceGroupName $location
Om resursgruppen redan finns behöver du kanske inte skriva över den. Ge variabeln
$resourceGroupName
ett annat värde och kör kommandot igen.Definiera en variabel för datafabrikens namn.
Viktigt!
Uppdateringen av datafabrikens namn för att göra det unikt globalt. Ett exempel är ADFTutorialFactorySP1127.
$dataFactoryName = "ADFIncCopyTutorialFactory";
Skapa datafabriken genom att köra följande Set-AzDataFactoryV2-cmdlet :
Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryName
Observera följande:
Namnet på datafabriken måste vara globalt unikt. Om du får följande felmeddelande ändrar du namnet och försöker igen:
The specified Data Factory name 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.
Om du vill skapa Data Factory-instanser måste det användarkonto du använder för att logga in på Azure vara medlem av rollerna deltagare eller ägare, eller vara administratör för Azure-prenumerationen.
Om du vill se en lista med Azure-regioner där Data Factory är tillgängligt för närvarande markerar du de regioner du är intresserad av på följande sida. Expandera sedan Analytics och leta rätt på Data Factory: Tillgängliga produkter per region. Datalager (Lagring, SQL Database, Azure SQL Managed Instance och så vidare) och beräkningar (Azure HDInsight osv.) som används av datafabriken kan finnas i andra regioner.
Skapa länkade tjänster
Du kan skapa länkade tjänster i en datafabrik för att länka ditt datalager och beräkna datafabrik-tjänster. I det här avsnittet skapar du länkade tjänster till ditt lagringskonto och SQL Database.
Skapa en länkad lagringstjänst
Skapa en JSON-fil med namnet AzureStorageLinkedService.json i mappen C:\ADF med följande innehåll. (Skapa mappen ADF om den inte redan finns.) Ersätt
<accountName>
och<accountKey>
med namnet och nyckeln för ditt lagringskonto innan du sparar filen.{ "name": "AzureStorageLinkedService", "properties": { "type": "AzureStorage", "typeProperties": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>" } } }
Växla till mappen ADF i PowerShell.
Kör cmdleten Set-AzDataFactoryV2LinkedService för att skapa den länkade tjänsten AzureStorageLinkedService. I följande exempel skickar du värden för parametrarna ResourceGroupName och DataFactoryName:
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"
Här är exempel på utdata:
LinkedServiceName : AzureStorageLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
Skapa en länkad tjänst till SQL-databas
Skapa en JSON-fil med namnet AzureSQLDatabaseLinkedService.json i mappen C:\ADF med följande innehåll. (Skapa mappen ADF om den inte redan finns.) Ersätt <ditt servernamn> och <ditt databasnamn> med namnet på servern och databasen innan du sparar filen. Du måste också konfigurera Azure SQL Server för att bevilja åtkomst till datafabrikens hanterade identitet.
{ "name": "AzureSqlDatabaseLinkedService", "properties": { "type": "AzureSqlDatabase", "typeProperties": { "connectionString": "Server=tcp:<your-server-name>.database.windows.net,1433;Database=<your-database-name>;" }, "authenticationType": "ManagedIdentity", "annotations": [] } }
Växla till mappen ADF i PowerShell.
Kör cmdleten Set-AzDataFactoryV2LinkedService för att skapa den länkade tjänsten AzureSQLDatabaseLinkedService.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSQLDatabaseLinkedService" -File ".\AzureSQLDatabaseLinkedService.json"
Här är exempel på utdata:
LinkedServiceName : AzureSQLDatabaseLinkedService ResourceGroupName : ADF DataFactoryName : incrementalloadingADF Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService ProvisioningState :
Skapa datauppsättningar
I det här steget skapar du databaser för att representera käll- och mottagardata.
Skapa en källdatauppsättning
Skapa en JSON-fil med namnet SourceDataset.json i samma mapp med följande innehåll:
{ "name": "SourceDataset", "properties": { "type": "AzureSqlTable", "typeProperties": { "tableName": "data_source_table" }, "linkedServiceName": { "referenceName": "AzureSQLDatabaseLinkedService", "type": "LinkedServiceReference" } } }
I den här självstudien använder du tabellnamnet data_source_table. Ersätt det om du använder en tabell med ett annan namn.
Kör cmdleten Set-AzDataFactoryV2Dataset för att skapa datauppsättningen SourceDataset.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SourceDataset" -File ".\SourceDataset.json"
Här är exempel på utdata från cmdleten:
DatasetName : SourceDataset ResourceGroupName : ADF DataFactoryName : incrementalloadingADF Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Skapa en källdatauppsättning
Skapa en JSON-fil med namnet SinkDataset.json i samma mapp med följande innehåll:
{ "name": "SinkDataset", "properties": { "type": "AzureBlob", "typeProperties": { "folderPath": "adftutorial/incrementalcopy", "fileName": "@CONCAT('Incremental-', pipeline().RunId, '.txt')", "format": { "type": "TextFormat" } }, "linkedServiceName": { "referenceName": "AzureStorageLinkedService", "type": "LinkedServiceReference" } } }
Viktigt!
Det här kodfragmentet förutsätter att du har en blobcontainer med namnet
adftutorial
i bloblagringen. Skapa containern om den inte finns, eller ställ in den för namnet på en befintlig. Utdatamappenincrementalcopy
skapas automatiskt om den inte finns i containern. I den här självstudien genereras filnamnet dynamiskt med uttrycket@CONCAT('Incremental-', pipeline().RunId, '.txt')
.Kör cmdleten Set-AzDataFactoryV2Dataset för att skapa datauppsättningen SinkDataset.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "SinkDataset" -File ".\SinkDataset.json"
Här är exempel på utdata från cmdleten:
DatasetName : SinkDataset ResourceGroupName : ADF DataFactoryName : incrementalloadingADF Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureBlobDataset
Skapa en datauppsättning för en vattenstämpel
I det här steget skapar du en datauppsättning för att lagra ett värde för ett högvattenmärke.
Skapa en JSON-fil med namnet WatermarkDataset.json i samma mapp med följande innehåll:
{ "name": " WatermarkDataset ", "properties": { "type": "AzureSqlTable", "typeProperties": { "tableName": "watermarktable" }, "linkedServiceName": { "referenceName": "AzureSQLDatabaseLinkedService", "type": "LinkedServiceReference" } } }
Kör cmdleten Set-AzDataFactoryV2Dataset för att skapa datauppsättningen WatermarkDataset.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "WatermarkDataset" -File ".\WatermarkDataset.json"
Här är exempel på utdata från cmdleten:
DatasetName : WatermarkDataset ResourceGroupName : ADF DataFactoryName : incrementalloadingADF Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Skapa en pipeline
I den här självstudien skapar du en pipeline med två sökningsaktiviteter, en kopieringsaktivitet och en aktivitet för lagrad procedur i en länkad pipeline.
Skapa en JSON-fil med namnet IncrementalCopyPipeline.json i samma mapp med följande innehåll:
{ "name": "IncrementalCopyPipeline", "properties": { "activities": [ { "name": "LookupOldWaterMarkActivity", "type": "Lookup", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "select * from watermarktable" }, "dataset": { "referenceName": "WatermarkDataset", "type": "DatasetReference" } } }, { "name": "LookupNewWaterMarkActivity", "type": "Lookup", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "select MAX(LastModifytime) as NewWatermarkvalue from data_source_table" }, "dataset": { "referenceName": "SourceDataset", "type": "DatasetReference" } } }, { "name": "IncrementalCopyActivity", "type": "Copy", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "select * from data_source_table where LastModifytime > '@{activity('LookupOldWaterMarkActivity').output.firstRow.WatermarkValue}' and LastModifytime <= '@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}'" }, "sink": { "type": "BlobSink" } }, "dependsOn": [ { "activity": "LookupNewWaterMarkActivity", "dependencyConditions": [ "Succeeded" ] }, { "activity": "LookupOldWaterMarkActivity", "dependencyConditions": [ "Succeeded" ] } ], "inputs": [ { "referenceName": "SourceDataset", "type": "DatasetReference" } ], "outputs": [ { "referenceName": "SinkDataset", "type": "DatasetReference" } ] }, { "name": "StoredProceduretoWriteWatermarkActivity", "type": "SqlServerStoredProcedure", "typeProperties": { "storedProcedureName": "usp_write_watermark", "storedProcedureParameters": { "LastModifiedtime": {"value": "@{activity('LookupNewWaterMarkActivity').output.firstRow.NewWatermarkvalue}", "type": "datetime" }, "TableName": { "value":"@{activity('LookupOldWaterMarkActivity').output.firstRow.TableName}", "type":"String"} } }, "linkedServiceName": { "referenceName": "AzureSQLDatabaseLinkedService", "type": "LinkedServiceReference" }, "dependsOn": [ { "activity": "IncrementalCopyActivity", "dependencyConditions": [ "Succeeded" ] } ] } ] } }
Kör cmdleten Set-AzDataFactoryV2Pipeline för att skapa pipelinen IncrementalCopyPipeline.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IncrementalCopyPipeline" -File ".\IncrementalCopyPipeline.json"
Här är exempel på utdata:
PipelineName : IncrementalCopyPipeline ResourceGroupName : ADF DataFactoryName : incrementalloadingADF Activities : {LookupOldWaterMarkActivity, LookupNewWaterMarkActivity, IncrementalCopyActivity, StoredProceduretoWriteWatermarkActivity} Parameters :
Köra pipelinen
Kör pipelinen IncrementalCopyPipeline med hjälp av cmdleten Invoke-AzDataFactoryV2Pipeline . Ersätt platshållarna med din egen grupp och datafabrikens namn.
$RunId = Invoke-AzDataFactoryV2Pipeline -PipelineName "IncrementalCopyPipeline" -ResourceGroupName $resourceGroupName -dataFactoryName $dataFactoryName
Kontrollera status för pipelinen genom att köra cmdleten Get-AzDataFactoryV2ActivityRun tills du ser alla aktiviteter som körs. Ersätt platshållarna med din egen lämpliga tid för parametern RunStartedAfter och RunStartedBefore. I den här självstudien använder du -RunStartedAfter "2017/09/14" och -RunStartedBefore "2017/09/15".
Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $RunId -RunStartedAfter "<start time>" -RunStartedBefore "<end time>"
Här är exempel på utdata:
ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : LookupNewWaterMarkActivity PipelineRunId : d4bf3ce2-5d60-43f3-9318-923155f61037 PipelineName : IncrementalCopyPipeline Input : {source, dataset} Output : {NewWatermarkvalue} LinkedServiceName : ActivityRunStart : 9/14/2017 7:42:42 AM ActivityRunEnd : 9/14/2017 7:42:50 AM DurationInMs : 7777 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : LookupOldWaterMarkActivity PipelineRunId : d4bf3ce2-5d60-43f3-9318-923155f61037 PipelineName : IncrementalCopyPipeline Input : {source, dataset} Output : {TableName, WatermarkValue} LinkedServiceName : ActivityRunStart : 9/14/2017 7:42:42 AM ActivityRunEnd : 9/14/2017 7:43:07 AM DurationInMs : 25437 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : IncrementalCopyActivity PipelineRunId : d4bf3ce2-5d60-43f3-9318-923155f61037 PipelineName : IncrementalCopyPipeline Input : {source, sink} Output : {dataRead, dataWritten, rowsCopied, copyDuration...} LinkedServiceName : ActivityRunStart : 9/14/2017 7:43:10 AM ActivityRunEnd : 9/14/2017 7:43:29 AM DurationInMs : 19769 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : StoredProceduretoWriteWatermarkActivity PipelineRunId : d4bf3ce2-5d60-43f3-9318-923155f61037 PipelineName : IncrementalCopyPipeline Input : {storedProcedureName, storedProcedureParameters} Output : {} LinkedServiceName : ActivityRunStart : 9/14/2017 7:43:32 AM ActivityRunEnd : 9/14/2017 7:43:47 AM DurationInMs : 14467 Status : Succeeded Error : {errorCode, message, failureType, target}
Granska resultaten
I blob-lagringen (sink store) ser du att data har kopierats till filen som definierats i SinkDataset. I den aktuella självstudien är filnamnet
Incremental- d4bf3ce2-5d60-43f3-9318-923155f61037.txt
. Öppna filen så ser du poster i filen som är samma som de data som finns i SQL-databasen.1,aaaa,2017-09-01 00:56:00.0000000 2,bbbb,2017-09-02 05:23:00.0000000 3,cccc,2017-09-03 02:36:00.0000000 4,dddd,2017-09-04 03:21:00.0000000 5,eeee,2017-09-05 08:06:00.0000000
Kontrollera det senaste värdet från
watermarktable
. Du kan se att vattenstämpeln har uppdaterats.Select * from watermarktable
Här är exempel på utdata:
TableName WatermarkValue data_source_table 2017-09-05 8:06:00.000
Infoga data i datakällagret för att verifiera deltadatainläsning
Infoga nya data i SQL-databasen (datakällagring).
INSERT INTO data_source_table VALUES (6, 'newdata','9/6/2017 2:23:00 AM') INSERT INTO data_source_table VALUES (7, 'newdata','9/7/2017 9:01:00 AM')
Uppdaterade data i SQL-databasen är:
PersonID | Name | LastModifytime -------- | ---- | -------------- 1 | aaaa | 2017-09-01 00:56:00.000 2 | bbbb | 2017-09-02 05:23:00.000 3 | cccc | 2017-09-03 02:36:00.000 4 | dddd | 2017-09-04 03:21:00.000 5 | eeee | 2017-09-05 08:06:00.000 6 | newdata | 2017-09-06 02:23:00.000 7 | newdata | 2017-09-07 09:01:00.000
Kör pipelinen IncrementalCopyPipeline igen med hjälp av cmdleten Invoke-AzDataFactoryV2Pipeline . Ersätt platshållarna med din egen grupp och datafabrikens namn.
$RunId = Invoke-AzDataFactoryV2Pipeline -PipelineName "IncrementalCopyPipeline" -ResourceGroupName $resourceGroupName -dataFactoryName $dataFactoryName
Kontrollera status för pipelinen genom att köra cmdleten Get-AzDataFactoryV2ActivityRun tills du ser alla aktiviteter som körs. Ersätt platshållarna med din egen lämpliga tid för parametern RunStartedAfter och RunStartedBefore. I den här självstudien använder du -RunStartedAfter "2017/09/14" och -RunStartedBefore "2017/09/15".
Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $RunId -RunStartedAfter "<start time>" -RunStartedBefore "<end time>"
Här är exempel på utdata:
ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : LookupNewWaterMarkActivity PipelineRunId : 2fc90ab8-d42c-4583-aa64-755dba9925d7 PipelineName : IncrementalCopyPipeline Input : {source, dataset} Output : {NewWatermarkvalue} LinkedServiceName : ActivityRunStart : 9/14/2017 8:52:26 AM ActivityRunEnd : 9/14/2017 8:52:58 AM DurationInMs : 31758 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : LookupOldWaterMarkActivity PipelineRunId : 2fc90ab8-d42c-4583-aa64-755dba9925d7 PipelineName : IncrementalCopyPipeline Input : {source, dataset} Output : {TableName, WatermarkValue} LinkedServiceName : ActivityRunStart : 9/14/2017 8:52:26 AM ActivityRunEnd : 9/14/2017 8:52:52 AM DurationInMs : 25497 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : IncrementalCopyActivity PipelineRunId : 2fc90ab8-d42c-4583-aa64-755dba9925d7 PipelineName : IncrementalCopyPipeline Input : {source, sink} Output : {dataRead, dataWritten, rowsCopied, copyDuration...} LinkedServiceName : ActivityRunStart : 9/14/2017 8:53:00 AM ActivityRunEnd : 9/14/2017 8:53:20 AM DurationInMs : 20194 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : ADF DataFactoryName : incrementalloadingADF ActivityName : StoredProceduretoWriteWatermarkActivity PipelineRunId : 2fc90ab8-d42c-4583-aa64-755dba9925d7 PipelineName : IncrementalCopyPipeline Input : {storedProcedureName, storedProcedureParameters} Output : {} LinkedServiceName : ActivityRunStart : 9/14/2017 8:53:23 AM ActivityRunEnd : 9/14/2017 8:53:41 AM DurationInMs : 18502 Status : Succeeded Error : {errorCode, message, failureType, target}
I blob-lagringen ser du att en annan fil har skapats. I den här självstudien är det nya filnamnet
Incremental-2fc90ab8-d42c-4583-aa64-755dba9925d7.txt
. När du öppnar filen ser du två rader med poster i den.Kontrollera det senaste värdet från
watermarktable
. Du kan se att vattenstämpeln har uppdaterats igen.Select * from watermarktable
exempel på utdata:
TableName WatermarkValue data_source_table 2017-09-07 09:01:00.000
Relaterat innehåll
I den här självstudiekursen fick du:
- Förbered datalagringen för att lagra värdet för vattenstämpeln.
- Skapa en datafabrik.
- Skapa länkade tjänster.
- Skapa datauppsättningar för källa, mottagare och vattenstämpel.
- Skapa en pipeline.
- Köra pipelinen.
- Övervaka pipelinekörningen.
I den här självstudien kopierade pipelinen data från en enda tabell i Azure SQL Database till Blob Storage. Gå vidare till följande självstudie för att lära dig hur du kopierar data från flera tabeller i en SQL Server-databas till SQL Database.