Tutorial: Synchronisieren von Daten aus SQL Database Edge mit Azure Blob Storage unter Verwendung von Azure Data FactoryTutorial: Sync data from SQL Database Edge to Azure Blob storage by using Azure Data Factory

In diesem Tutorial verwenden Sie Azure Data Factory, um Daten aus einer Tabelle in einer Instanz von Azure SQL Database Edge inkrementell mit Azure Blob Storage zu synchronisieren.In this tutorial, you'll use Azure Data Factory to incrementally sync data to Azure Blob storage from a table in an instance of Azure SQL Database Edge.

VoraussetzungenBefore you begin

Falls Sie in Ihrer Azure SQL Database Edge-Bereitstellung noch keine Datenbank oder Tabelle erstellt haben, verwenden Sie eine der folgenden Erstellungsmethoden:If you haven't already created a database or table in your Azure SQL Database Edge deployment, use one of these methods to create one:

  • Verwenden Sie SQL Server Management Studio oder Azure Data Studio zum Herstellen einer Verbindung mit SQL Database Edge.Use SQL Server Management Studio or Azure Data Studio to connect to SQL Database Edge. Führen Sie ein SQL-Skript zum Erstellen der Datenbank und der Tabelle aus.Run a SQL script to create the database and table.

  • Erstellen Sie eine SQL-Datenbank und -Tabelle mithilfe von SQLCMD, indem Sie eine direkte Verbindung mit dem SQL Database Edge-Modul herstellen.Create a SQL database and table by using SQLCMD by directly connecting to the SQL Database Edge module. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit der Datenbank-Engine mithilfe von „sqlcmd“.For more information, see Connect to the Database Engine by using sqlcmd.

  • Verwenden Sie „SQLPackage.exe“, um eine DAC-Paketdatei im SQL Database Edge-Container bereitzustellen.Use SQLPackage.exe to deploy a DAC package file to the SQL Database Edge container. Sie können diesen Prozess automatisieren, indem Sie den URI der SqlPackage-Datei als Teil der gewünschten Konfiguration des Moduls angeben.You can automate this process by specifying the SqlPackage file URI as part of the module's desired properties configuration. Sie können auch direkt das Clienttool „SqlPackage.exe“ verwenden, um ein DAC-Paket in SQL Database Edge bereitzustellen.You can also directly use the SqlPackage.exe client tool to deploy a DAC package to SQL Database Edge.

    Weitere Informationen zum Herunterladen von „SqlPackage.exe“ finden Sie unter Herunterladen und Installieren von „sqlpackage“.For information about how to download SqlPackage.exe, see Download and install sqlpackage. Im folgenden finden Sie einige Beispielbefehle für „SqlPackage.exe“.Following are some sample commands for SqlPackage.exe. Weitere Informationen finden Sie in der Dokumentation zu „SqlPackage.exe“.For more information, see the SqlPackage.exe documentation.

    Erstellen eines DAC-PaketsCreate a DAC package

    sqlpackage /Action:Extract /SourceConnectionString:"Data Source=<Server_Name>,<port>;Initial Catalog=<DB_name>;User ID=<user>;Password=<password>" /TargetFile:<dacpac_file_name>
    

    Anwenden eines DAC-PaketsApply a DAC package

    sqlpackage /Action:Publish /Sourcefile:<dacpac_file_name> /TargetServerName:<Server_Name>,<port> /TargetDatabaseName:<DB_Name> /TargetUser:<user> /TargetPassword:<password>
    

Erstellen einer SQL-Tabelle und einer Prozedur zum Speichern und Aktualisieren der GrenzwertstufenCreate a SQL table and procedure to store and update the watermark levels

Eine Grenzwerttabelle dient zum Speichern des letzten Zeitstempels, bis zu dem die Daten bereits mit Azure Storage synchronisiert wurden.A watermark table is used to store the last timestamp up to which data has already been synchronized with Azure Storage. Eine gespeicherte T-SQL-Prozedur (Transact-SQL) dient dazu, die Grenzwerttabelle nach jeder Synchronisierung zu aktualisieren.A Transact-SQL (T-SQL) stored procedure is used to update the watermark table after every sync.

Führen Sie für die SQL Database Edge-Instanz die folgenden Befehle aus:Run these commands on the SQL Database Edge instance:

    Create table [dbo].[watermarktable]
    (
    TableName varchar(255),
    WatermarkValue datetime,
    )
    GO

    CREATE PROCEDURE usp_write_watermark @timestamp datetime, @TableName varchar(50)  
    AS  
    BEGIN
    UPDATE [dbo].[watermarktable]
    SET [WatermarkValue] = @timestamp WHERE [TableName] = @TableName
    END
    Go

Erstellen einer Data Factory-PipelineCreate a Data Factory pipeline

In diesem Abschnitt erstellen Sie eine Azure Data Factory-Pipeline, um Daten aus einer Tabelle in Azure SQL Database Edge mit Azure Blob Storage zu synchronisieren.In this section, you'll create an Azure Data Factory pipeline to sync data to Azure Blob storage from a table in Azure SQL Database Edge.

Erstellen einer Data Factory über die Data Factory-BenutzeroberflächeCreate a data factory by using the Data Factory UI

Erstellen Sie eine Data Factory gemäß der Anleitung in diesem Tutorial.Create a data factory by following the instructions in this tutorial.

Erstellen einer Data Factory-PipelineCreate a Data Factory pipeline

  1. Wählen Sie auf der Seite Erste Schritte der Data Factory-Benutzeroberfläche die Kachel Pipeline erstellen aus.On the Let's get started page of the Data Factory UI, select Create pipeline.

    Erstellen einer Data Factory-Pipeline

  2. Geben Sie im Fenster Eigenschaften der Pipeline auf der Seite Allgemein den Namen PeriodicSync ein.On the General page of the Properties window for the pipeline, enter PeriodicSync for the name.

  3. Fügen Sie die Lookup-Aktivität hinzu, um den alten Grenzwert abzurufen.Add the Lookup activity to get the old watermark value. Erweitern Sie im Bereich Aktivitäten die Option Allgemein, und ziehen Sie die Lookup-Aktivität auf die Oberfläche des Pipeline-Designers.In the Activities pane, expand General and drag the Lookup activity to the pipeline designer surface. Ändern Sie den Namen der Aktivität in OldWatermark.Change the name of the activity to OldWatermark.

    Hinzufügen der Suche nach dem altem Grenzwert

  4. Wechseln Sie zur Registerkarte Einstellungen, und wählen Sie unter Source Dataset (Quelldataset) die Option Neu aus.Switch to the Settings tab and select New for Source Dataset. Sie erstellen nun ein Dataset für Daten in der Grenzwerttabelle.You'll now create a dataset to represent data in the watermark table. Diese Tabelle enthält den alten Grenzwert, der für den vorherigen Kopiervorgang verwendet wurde.This table contains the old watermark that was used in the previous copy operation.

  5. Wählen Sie im Fenster Neues Dataset die Option Azure SQL Server und anschließend Weiter aus.In the New Dataset window, select Azure SQL Server, and then select Continue.

  6. Geben Sie im Fenster Eigenschaften festlegen für das Dataset unter Name den Namen WatermarkDataset ein.In the Set properties window for the dataset, under Name, enter WatermarkDataset.

  7. Wählen Sie unter Verknüpfter Dienst die Option Neu aus, und führen Sie dann die folgenden Schritte aus:For Linked Service, select New, and then complete these steps:

    1. Geben Sie unter Name die Zeichenfolge SQLDBEdgeLinkedService ein.Under Name, enter SQLDBEdgeLinkedService.

    2. Geben Sie unter Servername die Details Ihres SQL Database Edge-Servers ein.Under Server name, enter your SQL Database Edge server details.

    3. Wählen Sie in der Liste Ihren Datenbanknamen aus.Select your Database name from the list.

    4. Geben Sie unter Benutzername Ihren Benutzernamen und unter Kennwort Ihr Kennwort ein.Enter your User name and Password.

    5. Wählen Sie Verbindung testen aus, um die Verbindung mit der SQL Database Edge-Instanz zu testen.To test the connection to the SQL Database Edge instance, select Test connection.

    6. Klicken Sie auf Erstellen.Select Create.

    Erstellen eines verknüpften Diensts

    1. Klicken Sie auf OK.Select OK.
  8. Wählen Sie auf der Registerkarte Einstellungen die Option Bearbeiten aus.On the Settings tab, select Edit.

  9. Wählen Sie auf der Registerkarte Verbindung unter Tabelle die Option [dbo].[watermarktable] aus.On the Connection tab, select [dbo].[watermarktable] for Table. Wählen Sie Datenvorschau aus, falls Sie eine Vorschau für die Daten in der Tabelle anzeigen möchten.If you want to preview data in the table, select Preview data.

  10. Wechseln Sie zum Pipeline-Editor, indem Sie oben die Registerkarte „Pipeline“ oder in der Strukturansicht auf der linken Seite den Namen der Pipeline auswählen.Switch to the pipeline editor by selecting the pipeline tab at the top or by selecting the name of the pipeline in the tree view on the left. Vergewissern Sie sich im Eigenschaftenfenster für die Lookup-Aktivität, dass in der Liste Source Dataset (Quelldataset) die Option WatermarkDataset ausgewählt ist.In the properties window for the Lookup activity, confirm that WatermarkDataset is selected in the Source dataset list.

  11. Erweitern Sie im Bereich Aktivitäten die Option Allgemein, und ziehen Sie eine weitere Lookup-Aktivität auf die Oberfläche des Pipeline-Designers.In the Activities pane, expand General and drag another Lookup activity to the pipeline designer surface. Legen Sie im Eigenschaftenfenster auf der Registerkarte Allgemein als Namen NewWatermark fest.Set the name to NewWatermark on the General tab of the properties window. Mit dieser Lookup-Aktivität wird der neue Grenzwert aus der Tabelle mit den Quelldaten abgerufen, damit er in das Ziel kopiert werden kann.This Lookup activity gets the new watermark value from the table that contains the source data so it can be copied to the destination.

  12. Wechseln Sie im Eigenschaftenfenster für die zweite Lookup-Aktivität zur Registerkarte Einstellungen, und wählen Sie Neu aus, um ein Dataset zu erstellen, das auf die Quelltabelle mit dem neuen Grenzwert verweist.In the properties window for the second Lookup activity, switch to the Settings tab and select New to create a dataset to point to the source table that contains the new watermark value.

  13. Wählen Sie im Fenster Neues Dataset die SQL Database Edge-Instanz und anschließend Weiter aus.In the New Dataset window, select SQL Database Edge instance, and then select Continue.

    1. Geben Sie im Fenster Eigenschaften festlegen unter Name den Namen SourceDataset ein.In the Set properties window, under Name, enter SourceDataset. Wählen Sie unter Verknüpfter Dienst die Option SQLDBEdgeLinkedService aus.Under Linked service, select SQLDBEdgeLinkedService.

    2. Wählen Sie unter Tabelle die zu synchronisierende Tabelle aus.Under Table, select the table that you want to synchronize. Sie können auch eine Abfrage für dieses Dataset angeben, wie weiter unten in diesem Tutorial beschrieben.You can also specify a query for this dataset, as described later in this tutorial. Die Abfrage hat Vorrang vor der Tabelle, die Sie in diesem Schritt angeben.The query takes precedence over the table you specify in this step.

    3. Klicken Sie auf OK.Select OK.

  14. Wechseln Sie zum Pipeline-Editor, indem Sie oben die Registerkarte „Pipeline“ oder in der Strukturansicht auf der linken Seite den Namen der Pipeline auswählen.Switch to the pipeline editor by selecting the pipeline tab at the top or by selecting the name of the pipeline in the tree view on the left. Vergewissern Sie sich im Eigenschaftenfenster für die Lookup-Aktivität, dass im Feld Source Dataset (Quelldataset) die Option SourceDataset ausgewählt ist.In the properties window for the Lookup activity, confirm that SourceDataset is selected in the Source dataset list.

  15. Wählen Sie unter Abfrage verwenden die Option Abfrage aus.Select Query under Use query. Aktualisieren Sie den Tabellennamen in der folgenden Abfrage, und geben Sie die Abfrage ein.Update the table name in the following query and then enter the query. Sie wählen nur den maximalen Wert von timestamp aus der Tabelle aus.You're selecting only the maximum value of timestamp from the table. Achten Sie darauf, First row only (Nur erste Zeile) auszuwählen.Be sure to select First row only.

    select MAX(timestamp) as NewWatermarkvalue from [TableName]
    

    Auswählen der Abfrage

  16. Erweitern Sie im Bereich Aktivitäten den Eintrag Move & Transform (Verschieben und transformieren), und ziehen Sie die Copy-Aktivität aus dem Bereich Aktivitäten auf die Designer-Oberfläche.In the Activities pane, expand Move & Transform and drag the Copy activity from the Activities pane to the designer surface. Legen Sie als Namen der Aktivität IncrementalCopy fest.Set the name of the activity to IncrementalCopy.

  17. Verbinden Sie beide Lookup-Aktivitäten mit der Copy-Aktivität, indem Sie die grüne Schaltfläche, die den Lookup-Aktivitäten zugeordnet ist, zur Copy-Aktivität ziehen.Connect both Lookup activities to the Copy activity by dragging the green button attached to the Lookup activities to the Copy activity. Lassen Sie die Maustaste los, wenn die Rahmenfarbe der Kopieraktivität blau wird.Release the mouse button when you see the border color of the Copy activity change to blue.

  18. Wählen Sie die Copy-Aktivität aus, und vergewissern Sie sich, dass die Eigenschaften für die Aktivität im Fenster Eigenschaften angezeigt werden.Select the Copy activity and confirm that you see the properties for the activity in the Properties window.

  19. Wechseln Sie im Eigenschaftenfenster zur Registerkarte Quelle, und führen Sie die folgenden Schritte aus:Switch to the Source tab in the Properties window and complete these steps:

    1. Wählen Sie im Feld Source Dataset (Quelldataset) die Option SourceDataset aus.In the Source dataset box, select SourceDataset.

    2. Wählen Sie unter Abfrage verwenden die Option Abfrage aus.Under Use query, select Query.

    3. Geben Sie im Feld Abfrage die SQL-Abfrage ein.Enter the SQL query in the Query box. Dies ist eine Beispielabfrage:Here's a sample query:

    select * from TemperatureSensor where timestamp > '@{activity('OldWaterMark').output.firstRow.WatermarkValue}' and timestamp <= '@{activity('NewWaterMark').output.firstRow.NewWatermarkvalue}'
    
  20. Wählen Sie auf der Registerkarte Senke unter Sink Dataset (Senkendataset) die Option Neu aus.On the Sink tab, select New under Sink Dataset.

  21. In diesem Tutorial ist der Senkendatenspeicher ein Azure Blob Storage-Datenspeicher.In this tutorial, the sink data store is an Azure Blob storage data store. Wählen Sie Azure Blob Storage und anschließend im Fenster Neues Dataset die Option Weiter aus.Select Azure Blob storage, and then select Continue in the New Dataset window.

  22. Wählen Sie im Fenster Format auswählen das Format Ihrer Daten und anschließend Weiter aus.In the Select Format window, select the format of your data, and then select Continue.

  23. Geben Sie im Fenster Eigenschaften festlegen unter Name den Namen SinkDataset ein.In the Set Properties window, under Name, enter SinkDataset. Wählen Sie unter Verknüpfter Dienst die Option Neu aus.Under Linked service, select New. Sie erstellen nun eine Verbindung (einen verknüpften Dienst) mit Ihrer Azure Blob Storage-Instanz.You'll now create a connection (a linked service) to your Azure Blob storage.

  24. Führen Sie im Fenster New Linked Service (Azure Blob Storage) (Neuer verknüpfter Dienst (Azure Blob Storage)) die folgenden Schritte aus:In the New Linked Service (Azure Blob storage) window, complete these steps:

    1. Geben Sie unter Name den Namen AzureStorageLinkedService ein.In the Name box, enter AzureStorageLinkedService.

    2. Wählen Sie unter Speicherkontoname das Azure Storage-Konto für Ihr Azure-Abonnement aus.Under Storage account name, select the Azure storage account for your Azure subscription.

    3. Testen Sie die Verbindung, und wählen Sie Fertig stellen aus.Test the connection and then select Finish.

  25. Vergewissern Sie sich, dass im Fenster Eigenschaften festlegen unter Verknüpfter Dienst die Option AzureStorageLinkedService ausgewählt ist.In the Set Properties window, confirm that AzureStorageLinkedService is selected under Linked service. Wählen Sie Erstellen und OK aus.Select Create and OK.

  26. Wählen Sie auf der Registerkarte Senke die Option Bearbeiten aus.On Sink tab, select Edit.

  27. Navigieren Sie zur Registerkarte Verbindung von SinkDataset, und führen Sie die folgenden Schritte aus:Go to the Connection tab of SinkDataset and complete these steps:

    1. Geben Sie unter Dateipfad den Pfad asdedatasync/incrementalcopy ein. asdedatasync ist hierbei der Blobcontainername und incrementalcopy der Ordnername.Under File path, enter asdedatasync/incrementalcopy, where asdedatasync is the blob container name and incrementalcopy is the folder name. Erstellen Sie den Container, wenn er noch nicht vorhanden ist, oder verwenden Sie den Namen eines bereits vorhandenen.Create the container if it doesn't exist, or use the name of an existing one. Azure Data Factory erstellt den Ausgabeordner incrementalcopy automatisch, falls er nicht vorhanden ist.Azure Data Factory automatically creates the output folder incrementalcopy if it doesn't exist. Sie können auch die Schaltfläche Durchsuchen für den Dateipfad verwenden, um zu einem Ordner in einem Blobcontainer zu navigieren.You can also use the Browse button for the File path to navigate to a folder in a blob container.

    2. Wählen Sie für den Teil Datei des Felds Dateipfad die Option Dynamischen Inhalt hinzufügen [ALT+P] aus, und geben Sie dann @CONCAT('Incremental-', pipeline().RunId, '.txt') in das geöffnete Fenster ein.For the File part of the File path, select Add dynamic content [Alt+P], and then enter @CONCAT('Incremental-', pipeline().RunId, '.txt') in the window that opens. Wählen Sie Fertig stellen aus.Select Finish. Der Dateiname wird mit dem Ausdruck dynamisch generiert.The file name is dynamically generated by the expression. Jede Pipelineausführung verfügt über eine eindeutige ID.Each pipeline run has a unique ID. Die Copy-Aktivität nutzt die Ausführungs-ID zum Generieren des Dateinamens.The Copy activity uses the run ID to generate the file name.

  28. Wechseln Sie zum Pipeline-Editor, indem Sie oben die Registerkarte „Pipeline“ oder in der Strukturansicht auf der linken Seite den Namen der Pipeline auswählen.Switch to the pipeline editor by selecting the pipeline tab at the top or by selecting the name of the pipeline in the tree view on the left.

  29. Erweitern Sie im Bereich Aktivitäten die Option Allgemein, und ziehen Sie die Stored Procedure-Aktivität aus dem Bereich Aktivitäten auf die Oberfläche des Pipeline-Designers.In the Activities pane, expand General and drag the Stored Procedure activity from the Activities pane to the pipeline designer surface. Verbinden Sie die grüne Ausgabe (Erfolgreich) der Copy-Aktivität mit der Stored Procedure-Aktivität.Connect the green (success) output of the Copy activity to the Stored Procedure activity.

  30. Wählen Sie im Pipeline-Designer die Option Stored Procedure-Aktivität aus, und ändern Sie den Namen in SPtoUpdateWatermarkActivity.Select Stored Procedure Activity in the pipeline designer and change its name to SPtoUpdateWatermarkActivity.

  31. Wechseln Sie zur Registerkarte SQL-Konto, und wählen Sie unter Verknüpfter Dienst die Option SQLDBEdgeLinkedService aus.Switch to the SQL Account tab, and select *QLDBEdgeLinkedService under Linked service.

  32. Wechseln Sie zur Registerkarte Gespeicherte Prozedur, und führen Sie die folgenden Schritte aus:Switch to the Stored Procedure tab and complete these steps:

    1. Wählen Sie unter Name der gespeicherten Prozedur die Option [dbo].[usp_write_watermark] aus.Under Stored procedure name, select [dbo].[usp_write_watermark].

    2. Wählen Sie zum Angeben von Werten für die Parameter der gespeicherten Prozedur die Option Import parameter (Importparameter) aus, und geben Sie für die Parameter die folgenden Werte ein:To specify values for the stored procedure parameters, select Import parameter and enter these values for the parameters:

    NAMEName typeType WertValue
    LastModifiedtimeLastModifiedtime DatetimeDateTime @{activity('NewWaterMark').output.firstRow.NewWatermarkvalue}@{activity('NewWaterMark').output.firstRow.NewWatermarkvalue}
    TableNameTableName ZeichenfolgeString @{activity('OldWaterMark').output.firstRow.TableName}@{activity('OldWaterMark').output.firstRow.TableName}
  33. Wählen Sie zum Überprüfen der Pipelineeinstellungen auf der Symbolleiste die Option Überprüfen aus.To validate the pipeline settings, select Validate on the toolbar. Vergewissern Sie sich, dass keine Validierungsfehler vorliegen.Confirm that there are no validation errors. Wählen Sie >> aus, um das Fenster Pipeline Validation Report (Pipelineüberprüfungsbericht) zu schließen.To close the Pipeline Validation Report window, select >>.

  34. Veröffentlichen Sie die Entitäten (verknüpfte Dienste, Datasets und Pipelines) im Azure Data Factory-Dienst, indem Sie die Schaltfläche Alle veröffentlichen auswählen.Publish the entities (linked services, datasets, and pipelines) to the Azure Data Factory service by selecting the Publish All button. Warten Sie, bis eine Erfolgsmeldung für den Veröffentlichungsvorgang angezeigt wird.Wait until you see a message confirming that the publish operation has succeeded.

Auslösen einer Pipeline nach einem ZeitplanTrigger a pipeline based on a schedule

  1. Wählen Sie auf der Symbolleiste für die Pipeline nacheinander Trigger hinzufügen, Neu/Bearbeiten und dann Neu aus.On the pipeline toolbar, select Add Trigger, select New/Edit, and then select New.

  2. Benennen Sie den Trigger mit HourlySync.Name your trigger HourlySync. Wählen Sie unter Typ die Option Zeitplan aus.Under Type, select Schedule. Legen Sie die Wiederholung auf „1 Stunde“ fest.Set the Recurrence to every 1 hour.

  3. Klicken Sie auf OK.Select OK.

  4. Wählen Sie Alle veröffentlichen.Select Publish All.

  5. Wählen Sie Trigger Now (Jetzt auslösen) aus.Select Trigger Now.

  6. Wechseln Sie im linken Bereich zur Registerkarte Überwachen.Switch to the Monitor tab on the left. Sie können den Status der Pipelineausführung anzeigen, die vom manuellen Trigger ausgelöst wird.You can see the status of the pipeline run triggered by the manual trigger. Klicken Sie zum Aktualisieren der Liste auf Aktualisieren.Select Refresh to refresh the list.

Nächste SchritteNext steps

Die Azure Data Factory-Pipeline in diesem Tutorial kopiert einmal pro Stunde Daten aus einer Tabelle in der SQL Database Edge-Instanz an einen Speicherort in Azure Blob Storage.The Azure Data Factory pipeline in this tutorial copies data from a table on a SQL Database Edge instance to a location in Azure Blob storage once every hour. Informationen zu weiteren Data Factory-Verwendungsszenarien finden Sie in diesen Tutorials.To learn about using Data Factory in other scenarios, see these tutorials.