Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik:
Azure Data Factory
Azure Synapse Analytics
Tipp
Ez az oktatóanyag bemutatja, hogyan másolhat át több táblát az Azure SQL Database-ből az Azure Synapse Analytics-be. A minta egyéb másolási forgatókönyvek esetén is alkalmazható. Például a táblák másolása SQL Server/Oracle-ből Azure SQL Database/Data Warehouse/Azure Blobba, különböző elérési utak másolása Blobból Azure SQL Database táblákba.
Az oktatóanyag a következő főbb lépésekből áll:
- Adat-előállító létrehozása
- Társított szolgáltatások létrehozása Azure SQL Database, Azure Synapse Analytics és Azure Storage.
- Hozzon létre Azure SQL Database és Azure Synapse Analytics adatkészleteket.
- Egy folyamat létrehozása a másolni kívánt táblák megkeresésére, és egy másik folyamat létrehozása a tényleges másolási művelet elvégzésére
- Folyamat futásának indítása
- A folyamatok és tevékenységek futásának figyelemmel kísérése
Ez az oktatóanyag Azure PowerShell használ. Az adat-előállítók egyéb eszközökkel/SDK-kkal való létrehozásával kapcsolatban lásd rövid útmutatóinkat.
Teljes körű munkafolyamat
Ebben a forgatókönyvben számos táblát szeretnénk az Azure SQL Database-ből az Azure Synapse Analytics-be másolni. Vezetékekben végbemenő munkafolyamat logikai lépések sorrendje a következő:
- Az első folyamat megkeresi azoknak a tábláknak a listáját, amelyeket át kell másolni a fogadó adattárakba. Másik megoldásként fenntarthat egy metaadattáblát, amely felsorolja az összes, a fogadó adattárba másolandó táblát. A folyamat ezután elindít egy másik folyamatot, amely végigiterál az adatbázis összes tábláján, és elvégzi az adatmásolási műveletet.
- A második folyamat hajtja végre a tényleges másolást. A táblák listáját használja paraméterként. A lista minden táblája esetében másolja a Azure SQL Database adott táblát a megfelelő táblába Azure Synapse Analytics blobtároló és PolyBase használatával a legjobb teljesítmény érdekében. Ebben a példában az első folyamat a táblák listáját adja át a paraméter értékeként.
Ha nem rendelkezik Azure-előfizetéssel, a kezdés előtt hozzon létre egy free fiókot.
Előfeltételek
Megjegyzés
Javasoljuk, hogy az Azure Az PowerShell-modult használja a Azure használatához. Első lépésként lásd: Install Azure PowerShell. Az Az PowerShell-modulra való migrálásról az Migrate Azure PowerShell az AzureRM-ből az Az című témakörben olvashat.
- Azure PowerShell. Kövesse a Hogyan telepítse és konfigurálja Azure PowerShell utasításait.
- Azure Storage fiók. A Azure Storage fiók átmeneti blobtárolóként használatos a tömeges másolási műveletben.
- Azure SQL Database. Ez az adatbázis tartalmazza a forrásadatokat.
- Azure Synapse Analytics. Ez az adattárház tárolja az SQL Database-ből átmásolt adatokat.
SQL Database és Azure Synapse Analytics előkészítése
Az Azure SQL adatbázis előkészítése:
Hozzon létre egy adatbázist az Adventure Works LT-mintaadatokkal az Azure SQL Database-ben a Adatbázis létrehozása az Azure SQL Database-ben cikkben. Ez az oktatóanyag az összes táblát átmásolja ebből a mintaadatbázisból az Azure Synapse Analyticsbe.
Az Azure Synapse Analytics célhely előkészítése
Ha nem rendelkezik Azure Synapse Analytics munkaterülettel, a A létrehozás lépéseit a Azure Synapse Analytics című cikkben találja.
Hozzon létre megfelelő táblázatsémákat Azure Synapse Analytics. A Azure Data Factory használatával migrálhatja/másolhatja az adatokat egy későbbi lépésben.
Azure szolgáltatások az SQL Server eléréséhez
Az SQL Database és a Azure Synapse Analytics esetében engedélyezze Azure szolgáltatások számára az SQL Server elérését. Győződjön meg arról, hogy A Azure szolgáltatásokhoz való hozzáférés engedélyezése beállítás be van kapcsolva ON a kiszolgálóhoz. Ez a beállítás lehetővé teszi, hogy a Data Factory szolgáltatás adatokat olvasson be a Azure SQL Database, és adatokat írjon a Azure Synapse Analytics. A beállítás ellenőrzéséhez és bekapcsolásához hajtsa végre a következő lépéseket:
- Kattintson a Minden szolgáltatás elemre a bal oldalon, majd az SQL-kiszolgálók elemre.
- Válassza ki a kiszolgálót, és kattintson a BEÁLLÍTÁSOK területen a Tűzfal elemre.
- A Firewall beállításai lapon kattintson ONA Azure szolgáltatásokhoz való hozzáférés engedélyezése.
Adat-előállító létrehozása
Indítsa el a PowerShellt. Az oktatóanyag végéig tartsa nyitva Azure PowerShell. Ha bezárja és újra megnyitja a programot, akkor újra le kell futtatnia a parancsokat.
Futtassa a következő parancsot, és adja meg a Azure portálra való bejelentkezéshez használt felhasználónevet és jelszót:
Connect-AzAccountFuttassa a következő parancsot a fiókhoz tartozó előfizetések megtekintéséhez.
Get-AzSubscriptionFuttassa a következő parancsot a használni kívánt előfizetés kiválasztásához. Cserélje le a SubscriptionId elemet a Azure-előfizetés azonosítójára:
Select-AzSubscription -SubscriptionId "<SubscriptionId>"Futtassa a Set-AzDataFactoryV2 parancsmagot egy adat-előállító létrehozásához. A parancs végrehajtása előtt cserélje le a helyőrzőket a saját értékeire.
$resourceGroupName = "<your resource group to create the factory>" $dataFactoryName = "<specify the name of data factory to create. It must be globally unique.>" Set-AzDataFactoryV2 -ResourceGroupName $resourceGroupName -Location "East US" -Name $dataFactoryNameVegye figyelembe az alábbiakat:
A Azure adat-előállító 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 'ADFv2QuickStartDataFactory' is already in use. Data Factory names must be globally unique.Data Factory-példányok létrehozásához a Azure-előfizetés közreműködőjének vagy rendszergazdájának kell lennie.
Azoknak a Azure régióknak a listájához, amelyekben a Data Factory jelenleg elérhető, jelölje ki az Önt érdeklő régiókat az alábbi lapon, majd bontsa ki a Analytics elemet a Data Factory: Régiók szerint elérhető termékek. A data factory által használt adattárak (Azure Storage, Azure SQL Database stb.) és a data factory által használt számítások (HDInsight stb.) más régiókban is lehetnek.
Társított szolgáltatások létrehozása
Ebben az oktatóanyagban létrehoz három társított szolgáltatást a forrás, a fogadó és az átmeneti blobhoz, beleértve az adattárakkal való kapcsolatot:
Az eredeti Azure SQL Database kapcsolt szolgáltatás létrehozása.
Hozzon létre egy AzureSqlDatabaseLinkedService.json nevű JSON-fájlt a C:\ADFv2TutorialBulkCopy mappában a következő tartalommal: (Ha még nem létezik, hozza létre az ADFv2TutorialBulkCopy nevű mappát.)
Fontos
Cserélje le <servername>, <databasename>, <username>@<servername> és <password> a fájl mentése előtt a Azure SQL Database értékeivel.
{ "name": "AzureSqlDatabaseLinkedService", "properties": { "type": "AzureSqlDatabase", "typeProperties": { "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" } } }A Azure PowerShell-ben váltson a ADFv2TutorialBulkCopy mappára.
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 : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDatabaseLinkedService
A fogadó Azure Synapse Analytics társított szolgáltatás létrehozása
Hozzon létre egy AzureSqlDWLinkedService.json nevű JSON-fájlt a C:\ADFv2TutorialBulkCopy mappában a következő tartalommal:
Fontos
Cserélje le <servername>, <databasename>, <username>@<servername> és <password> a fájl mentése előtt a Azure SQL Database értékeivel.
{ "name": "AzureSqlDWLinkedService", "properties": { "type": "AzureSqlDW", "typeProperties": { "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" } } }Az AzureSqlDWLinkedService társított szolgáltatás létrehozásához futtassa a Set-AzDataFactoryV2LinkedService parancsmagot.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWLinkedService" -File ".\AzureSqlDWLinkedService.json"Itt látható a minta kimenete:
LinkedServiceName : AzureSqlDWLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDWLinkedService
Az átmeneti Azure Storage társított szolgáltatás létrehozása
Ebben az oktatóanyagban a Azure Blob Storage átmeneti átmeneti területként való használatával engedélyezi a PolyBase-t a jobb másolási teljesítmény érdekében.
Hozzon létre egy AzureStorageLinkedService.json nevű JSON-fájlt a C:\ADFv2TutorialBulkCopy mappában a következő tartalommal:
Fontos
A fájl mentése előtt cserélje le a <accountName> és <accountKey> elemet a Azure tárfiók nevére és kulcsára.
{ "name": "AzureStorageLinkedService", "properties": { "type": "AzureStorage", "typeProperties": { "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>" } } }Az AzureStorageLinkedService társított szolgáltatás létrehozásához futtassa a Set-AzDataFactoryV2LinkedService parancsmagot.
Set-AzDataFactoryV2LinkedService -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureStorageLinkedService" -File ".\AzureStorageLinkedService.json"Itt látható a minta kimenete:
LinkedServiceName : AzureStorageLinkedService ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Properties : Microsoft.Azure.Management.DataFactory.Models.AzureStorageLinkedService
Adatkészletek létrehozása
Ebben az oktatóanyagban létrehozza a forrás és a fogadó adatkészletet, amelyek megadják az adatok tárolásának helyét:
Adatkészlet létrehozása a forrás SQL-adatbázishoz
Hozzon létre egy AzureSqlDatabaseDataset.json nevű JSON-fájlt a C:\ADFv2TutorialBulkCopy mappában a következő tartalommal. A „tableName” egy helyőrző, mivel később, a másolási tevékenység során az SQL-lekérdezést fogja használni az adatok lekéréséhez.
{ "name": "AzureSqlDatabaseDataset", "properties": { "type": "AzureSqlTable", "linkedServiceName": { "referenceName": "AzureSqlDatabaseLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": "dummy" } } }Az AzureSqlDatabaseDataset adatkészlet létrehozásához futtassa a Set-AzDataFactoryV2Dataset parancsmagot.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDatabaseDataset" -File ".\AzureSqlDatabaseDataset.json"Itt látható a minta kimenete:
DatasetName : AzureSqlDatabaseDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlTableDataset
Adatkészlet létrehozása az Azure Synapse Analytics célhelyhez
Hozzon létre egy AzureSqlDWDataset.json nevű JSON-fájlt a C:\ADFv2TutorialBulkCopy mappában a következő tartalommal: A „tableName” paraméterként van beállítva. A másolási tevékenység, amely erre az adatkészletre hivatkozik, később át fogja adni a tényleges értéket az adatkészletnek.
{ "name": "AzureSqlDWDataset", "properties": { "type": "AzureSqlDWTable", "linkedServiceName": { "referenceName": "AzureSqlDWLinkedService", "type": "LinkedServiceReference" }, "typeProperties": { "tableName": { "value": "@{dataset().DWTableName}", "type": "Expression" } }, "parameters":{ "DWTableName":{ "type":"String" } } } }Az AzureSqlDWDataset adatkészlet létrehozásához futtassa a Set-AzDataFactoryV2Dataset parancsmagot.
Set-AzDataFactoryV2Dataset -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "AzureSqlDWDataset" -File ".\AzureSqlDWDataset.json"Itt látható a minta kimenete:
DatasetName : AzureSqlDWDataset ResourceGroupName : <resourceGroupname> DataFactoryName : <dataFactoryName> Structure : Properties : Microsoft.Azure.Management.DataFactory.Models.AzureSqlDwTableDataset
Folyamatok létrehozása
Ebben az oktatóanyagban két csővezetéket hoz létre:
Az „IterateAndCopySQLTables” folyamat létrehozása
Ez a folyamat a táblák listáját használja paraméterként. A lista minden táblájához az adatokat az Azure SQL Database táblából az Azure Synapse Analyticsbe másolja, szakaszos másolást és a PolyBase-t használva.
Hozzon létre egy IterateAndCopySQLTables.json nevű JSON-fájlt a C:\ADFv2TutorialBulkCopy mappában a következő tartalommal:
{ "name": "IterateAndCopySQLTables", "properties": { "activities": [ { "name": "IterateSQLTables", "type": "ForEach", "typeProperties": { "isSequential": "false", "items": { "value": "@pipeline().parameters.tableList", "type": "Expression" }, "activities": [ { "name": "CopyData", "description": "Copy data from Azure SQL Database to Azure Synapse Analytics", "type": "Copy", "inputs": [ { "referenceName": "AzureSqlDatabaseDataset", "type": "DatasetReference" } ], "outputs": [ { "referenceName": "AzureSqlDWDataset", "type": "DatasetReference", "parameters": { "DWTableName": "[@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]" } } ], "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "SELECT * FROM [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]" }, "sink": { "type": "SqlDWSink", "preCopyScript": "TRUNCATE TABLE [@{item().TABLE_SCHEMA}].[@{item().TABLE_NAME}]", "allowPolyBase": true }, "enableStaging": true, "stagingSettings": { "linkedServiceName": { "referenceName": "AzureStorageLinkedService", "type": "LinkedServiceReference" } } } } ] } } ], "parameters": { "tableList": { "type": "Object" } } } }A folyamat létrehozásához: IterateAndCopySQLTables, futtassa a Set-AzDataFactoryV2Pipeline parancsmagot.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "IterateAndCopySQLTables" -File ".\IterateAndCopySQLTables.json"Itt látható a minta kimenete:
PipelineName : IterateAndCopySQLTables ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {IterateSQLTables} Parameters : {[tableList, Microsoft.Azure.Management.DataFactory.Models.ParameterSpecification]}
A „GetTableListAndTriggerCopyData” folyamat létrehozása
Ez a folyamat két lépést hajt végre:
- Megkeresi a Azure SQL Database rendszertáblát a másolandó táblák listájának lekéréséhez.
- Elindítja az „IterateAndCopySQLTables” folyamatot, amely elvégezi a tényleges adatmásolást.
Hozzon létre egy GetTableListAndTriggerCopyData.json nevű JSON-fájlt a C:\ADFv2TutorialBulkCopy mappában a következő tartalommal:
{ "name":"GetTableListAndTriggerCopyData", "properties":{ "activities":[ { "name": "LookupTableList", "description": "Retrieve the table list from Azure SQL database", "type": "Lookup", "typeProperties": { "source": { "type": "SqlSource", "sqlReaderQuery": "SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.TABLES WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'SalesLT' and TABLE_NAME <> 'ProductModel'" }, "dataset": { "referenceName": "AzureSqlDatabaseDataset", "type": "DatasetReference" }, "firstRowOnly": false } }, { "name": "TriggerCopy", "type": "ExecutePipeline", "typeProperties": { "parameters": { "tableList": { "value": "@activity('LookupTableList').output.value", "type": "Expression" } }, "pipeline": { "referenceName": "IterateAndCopySQLTables", "type": "PipelineReference" }, "waitOnCompletion": true }, "dependsOn": [ { "activity": "LookupTableList", "dependencyConditions": [ "Succeeded" ] } ] } ] } }A folyamat létrehozásához: GetTableListAndTriggerCopyData, futtassa a Set-AzDataFactoryV2Pipeline parancsmagot.
Set-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -Name "GetTableListAndTriggerCopyData" -File ".\GetTableListAndTriggerCopyData.json"Itt látható a minta kimenete:
PipelineName : GetTableListAndTriggerCopyData ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> Activities : {LookupTableList, TriggerCopy} Parameters :
Folyamat futásának indítása és monitorozása
Indítsa el a fő „GetTableListAndTriggerCopyData” folyamat futását, és őrizze meg a folyamat futtatási azonosítóját későbbi monitorozás céljából. Eközben az ExecutePipeline tevékenységben megadott módon elindítja az „IterateAndCopySQLTables” folyamat futását.
$runId = Invoke-AzDataFactoryV2Pipeline -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineName 'GetTableListAndTriggerCopyData'Futtassa a következő szkriptet a GetTableListAndTriggerCopyData folyamat futási állapotának folyamatos ellenőrzéséhez, majd nyomtassa ki az utolsó folyamatfuttatás és tevékenységfuttatás eredményét.
while ($True) { $run = Get-AzDataFactoryV2PipelineRun -ResourceGroupName $resourceGroupName -DataFactoryName $DataFactoryName -PipelineRunId $runId if ($run) { if ($run.Status -ne 'InProgress') { Write-Host "Pipeline run finished. The status is: " $run.Status -ForegroundColor "Yellow" Write-Host "Pipeline run details:" -ForegroundColor "Yellow" $run break } Write-Host "Pipeline is running...status: InProgress" -ForegroundColor "Yellow" } Start-Sleep -Seconds 15 } $result = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId $runId -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) Write-Host "Activity run details:" -ForegroundColor "Yellow" $resultItt látható a példa futtatás kimenete:
Pipeline run details: ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> RunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData LastUpdated : 9/18/2017 4:08:15 PM Parameters : {} RunStart : 9/18/2017 4:06:44 PM RunEnd : 9/18/2017 4:08:15 PM DurationInMs : 90637 Status : Succeeded Message : Activity run details: ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> ActivityName : LookupTableList PipelineRunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData Input : {source, dataset, firstRowOnly} Output : {count, value, effectiveIntegrationRuntime} LinkedServiceName : ActivityRunStart : 9/18/2017 4:06:46 PM ActivityRunEnd : 9/18/2017 4:07:09 PM DurationInMs : 22995 Status : Succeeded Error : {errorCode, message, failureType, target} ResourceGroupName : <resourceGroupName> DataFactoryName : <dataFactoryName> ActivityName : TriggerCopy PipelineRunId : 0000000000-00000-0000-0000-000000000000 PipelineName : GetTableListAndTriggerCopyData Input : {pipeline, parameters, waitOnCompletion} Output : {pipelineRunId} LinkedServiceName : ActivityRunStart : 9/18/2017 4:07:11 PM ActivityRunEnd : 9/18/2017 4:08:14 PM DurationInMs : 62581 Status : Succeeded Error : {errorCode, message, failureType, target}Az „IterateAndCopySQLTables” folyamat futtatási azonosítóját lekérheti, és ellenőrizheti a tevékenységfuttatás részletes eredményét a következő módon.
Write-Host "Pipeline 'IterateAndCopySQLTables' run result:" -ForegroundColor "Yellow" ($result | Where-Object {$_.ActivityName -eq "TriggerCopy"}).Output.ToString()Itt látható a példa futtatás kimenete:
{ "pipelineRunId": "7514d165-14bf-41fb-b5fb-789bea6c9e58" }$result2 = Get-AzDataFactoryV2ActivityRun -DataFactoryName $dataFactoryName -ResourceGroupName $resourceGroupName -PipelineRunId <copy above run ID> -RunStartedAfter (Get-Date).AddMinutes(-30) -RunStartedBefore (Get-Date).AddMinutes(30) $result2Csatlakozzon az Azure Synapse Analyticshez, és győződjön meg arról, hogy az adatok megfelelő módon másolták át az Azure SQL Database-ből.
Kapcsolódó tartalom
Az oktatóanyagban az alábbi lépéseket hajtotta végre:
- Adat-előállító létrehozása
- Társított szolgáltatások létrehozása Azure SQL Database, Azure Synapse Analytics és Azure Storage.
- Hozzon létre Azure SQL Database és Azure Synapse Analytics adatkészleteket.
- Egy folyamat létrehozása a másolni kívánt táblák megkeresésére, és egy másik folyamat létrehozása a tényleges másolási művelet elvégzésére
- Folyamat futásának indítása
- A folyamatok és tevékenységek futásának figyelemmel kísérése
Folytassa a következő oktatóanyaggal, amelyben az adatok egy forrásból egy célhelyre történő fokozatos másolását ismerheti meg: