Freigeben über


Kopieren und Transformieren von Daten in Azure Synapse Analytics mithilfe von Azure Data Factory- oder Synapse-Pipelines

Gilt für: Azure Data Factory Azure Synapse Analytics

Tipp

Data Factory in Microsoft Fabric ist die nächste Generation von Azure Data Factory mit einer einfacheren Architektur, integrierter KI und neuen Features. Wenn Sie mit der Datenintegration noch nicht vertraut sind, beginnen Sie mit Fabric Data Factory. Vorhandene ADF-Workloads können auf Fabric aktualisiert werden, um auf neue Funktionen in der Datenwissenschaft, Echtzeitanalysen und Berichterstellung zuzugreifen.

In diesem Artikel wird beschrieben, wie Sie Daten mithilfe der Kopieraktivität in Azure Data Factory oder Synapse-Pipelines aus und in Azure Synapse Analytics kopieren sowie Daten mithilfe von Datenfluss in Azure Data Lake Storage Gen2 transformieren. Weitere Informationen zu Azure Data Factory finden Sie im Artikel introductory.

Unterstützte Funktionen

Dieser Azure Synapse Analytics Connector wird für die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR Verwalteter privater Endpunkt
Copy-Aktivität (Quelle/Senke) (1) (2)
Zuordnungsdatenfluss (Quelle/Senke)
Lookup-Aktivität (1) (2)
GetMetadata-Aktivität (1) (2)
Skript-Aktivität (1) (2)
Aktivität „Gespeicherte Prozedur“ (1) (2)

(1) Azure Integrationslaufzeit (2) Selbst gehostete Integrationslaufzeit

Für Copy-Aktivität unterstützt dieser Azure Synapse Analytics Connector die folgenden Funktionen:

  • Kopieren Sie Daten mittels SQL-Authentifizierung und Authentifizierung mit Microsoft Entra-Anwendungstoken mit einem Dienstprinzipal oder verwalteten Identitäten für Azure-Ressourcen.
  • Als Quelle das Abrufen von Daten mithilfe einer SQL-Abfrage oder gespeicherten Prozedur Sie können auch eine parallele Kopie aus einer Azure Synapse Analytics Quelle auswählen. Weitere Informationen finden Sie im Abschnitt Parallel copy from Azure Synapse Analytics.
  • Als Senke das Laden von Daten mithilfe einer COPY-Anweisung oder PolyBase oder BULK INSERT. Wir empfehlen die COPY-Anweisung oder PolyBase für eine bessere Kopierleistung. Der Connector unterstützt auch das automatische Erstellen einer Zieltabelle mit „DISTRIBUTION = ROUND_ROBIN“ auf Basis des Quellschemas, wenn keine vorhanden ist.

Wichtig

Wenn Sie Daten mithilfe eines Azure Integration Runtime kopieren, konfigurieren Sie eine Firewallregel auf serverebene so, dass Azure Dienste auf den logical SQL Server zugreifen können. Wenn Sie Daten mithilfe einer selbstgehosteten Integration Runtime kopieren, konfigurieren Sie die Firewall, um den entsprechenden IP-Adressbereich zuzulassen. Dieser Bereich enthält die IP-Adresse des Computers, die zum Herstellen einer Verbindung mit Azure Synapse Analytics verwendet wird.

Erste Schritte

Tipp

Um eine optimale Leistung zu erzielen, verwenden Sie polyBase- oder COPY-Anweisung, um Daten in Azure Synapse Analytics zu laden. Die Abschnitte Verwendung von PolyBase zum Laden von Daten in Azure Synapse Analytics und Verwendung der COPY-Anweisung zum Laden von Daten in Azure Synapse Analytics enthalten Details. Eine exemplarische Vorgehensweise mit einem Anwendungsfall finden Sie unter Load 1 TB in Azure Synapse Analytics unter 15 Minuten mit Azure Data Factory.

Zum Ausführen der Kopieraktivität mit einer Pipeline können Sie eines der folgenden Tools oder SDKs verwenden:

Erstellen eines Azure Synapse Analytics verknüpften Diensts mithilfe der Benutzeroberfläche

Führen Sie die folgenden Schritte aus, um einen Azure Synapse Analytics verknüpften Dienst in der benutzeroberfläche des Azure Portals zu erstellen.

  1. Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zur Registerkarte "Verwalten", und wählen Sie "Verknüpfte Dienste" aus, und klicken Sie dann auf "Neu":

  2. Suchen Sie nach Synapse, und wählen Sie den Azure Synapse Analytics Connector aus.

    Screenshot des Azure Synapse Analytics connector.

  3. Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.

    Screenshot der Konfiguration für einen Azure Synapse Analytics verknüpften Dienst.

Details zur Connectorkonfiguration

Die folgenden Abschnitte enthalten Details zu Eigenschaften, die Data Factory- und Synapse-Pipelineentitäten definieren, die für einen Azure Synapse Analytics Connector spezifisch sind.

Eigenschaften des verknüpften Diensts

Der Azure Synapse Analytics Connector Recommended Version unterstützt TLS 1.3. Lesen Sie diesen Abschnitt, um die Azure Synapse Analytics Connectorversion von Legacy zu aktualisieren. Einzelheiten zur Eigenschaft finden Sie in den entsprechenden Abschnitten.

Tipp

Beim Erstellen eines verknüpften Diensts für einen serverless SQL-Pool im Azure Synapse aus dem Azure-Portal:

  1. Wählen Sie unter Kontoauswahlmethode die Option Manuell eingeben aus.
  2. Fügen Sie den vollqualifizierten Domänennamen des serverlosen Endpunkts ein. Dies finden Sie auf der Seite Azure Portalübersicht für Ihren Synapse-Arbeitsbereich in den Eigenschaften unter Serverless SQL-Endpunkt. Beispiel: myserver-ondemand.sql-azuresynapse.net.
  3. Geben Sie unter Datenbankname den Datenbanknamen im serverlosen SQL-Pool an.

Tipp

Wenn Sie einen Fehler mit dem Fehlercode "UserErrorFailedToConnectToSqlServer" und der Meldung "Der Sitzungsgrenzwert für die Datenbank ist XXX und wurde erreicht." erhalten, fügen Sie Pooling=false zu Ihrer Verbindungszeichenfolge hinzu und versuchen Sie es erneut.

Diese generischen Eigenschaften werden für einen verknüpften Dienst von Azure Synapse Analytics unterstützt, wenn Sie die empfohlene Version anwenden:

Eigenschaft Beschreibung Erforderlich
type Die „type“-Eigenschaft muss auf AzureSqlDW festgelegt sein. Ja
server Der Name oder die Netzwerkadresse der SQL Server-Instanz, mit der Sie eine Verbindung herstellen möchten. Ja
database Der Name der Datenbank. Ja
authenticationType Der Typ, der für die Authentifizierung verwendet wird. Die zulässigen Werte sind SQL (Standard), ServicePrincipal, SystemAssignedManagedIdentity und UserAssignedManagedIdentity. Wechseln Sie zum entsprechenden Abschnitt über spezifische Eigenschaften und Voraussetzungen für die Authentifizierung. Ja
encrypt Geben Sie an, ob die TLS-Verschlüsselung für alle Daten erforderlich ist, die zwischen dem Client und dem Server gesendet werden. Optionen: obligatorisch (für TRUE, Standard)/optional (für FALSE)/streng. Nein
trustServerCertificate Geben Sie an, ob der Kanal verschlüsselt sein wird, während die Zertifikatskette zum Überprüfen der Vertrauensstellung umgangen wird. Nein
hostNameInCertificate Der Hostname, der beim Validieren des Serverzertifikats für die Verbindung verwendet werden soll. Falls nicht angegeben, wird der Servername für die Zertifikatsvalidierung verwendet. Nein
connectVia Die Integration Runtime, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden soll. Sie können Azure Integration Runtime oder eine selbst gehostete integration runtime verwenden (wenn sich Ihr Datenspeicher in einem privaten Netzwerk befindet). Wenn nicht angegeben, wird die Standard-Azure Integration Runtime verwendet. Nein

Weitere Verbindungseigenschaften finden Sie in der folgenden Tabelle:

Eigenschaft Beschreibung Erforderlich
applicationIntent Der Workloadtyp der Anwendung beim Herstellen einer Verbindung mit einem Server. Zulässige Werte sind ReadOnly und ReadWrite. Nein
connectTimeout Die Zeitspanne (in Sekunden), die auf eine Verbindung mit dem Server gewartet wird, bevor der Versuch abgebrochen wird und ein Fehler generiert wird. Nein
connectRetryCount Anzahl der versuchten Neuverbindungen, nachdem ein Leerlaufverbindungsfehler erkannt wurde. Der Wert sollte eine ganze Zahl zwischen 0 und 255 sein. Nein
connectRetryInterval Die Zeitspanne (in Sekunden) zwischen jedem Neuverbindungsversuch, nachdem ein Leerlaufverbindungsfehler erkannt wurde. Der Wert sollte eine ganze Zahl zwischen 1 und 60 sein. Nein
loadBalanceTimeout Die Mindestdauer (in Sekunden), die eine Verbindung im Verbindungspool verbleiben soll, bevor die Verbindung abgebrochen wird. Nein
commandTimeout Die Standardwartezeit (in Sekunden), bevor der Versuch einer Befehlsausführung beendet und ein Fehler generiert wird. Nein
integratedSecurity Die zulässigen Werte sind true oder false. Geben Sie beim Wert false an, ob Benutzername und Kennwort in der Verbindung angegeben werden. Gibt beim Angeben von true an, ob die aktuellen Windows Kontoanmeldeinformationen für die Authentifizierung verwendet werden. Nein
failoverPartner Name oder Adresse des Partnerservers, mit dem eine Verbindung hergestellt werden soll, wenn der primäre Server ausgefallen ist. Nein
maxPoolSize Die im Verbindungspool zulässige maximale Anzahl von Verbindungen für die angegebene Verbindung. Nein
minPoolSize Die im Verbindungspool zulässige Mindestanzahl von Verbindungen für die angegebene Verbindung. Nein
multipleActiveResultSets Die zulässigen Werte sind true oder false. Wenn Sie true angeben, kann eine Anwendung mehrere aktive Resultsets (MARS) verwalten. Wenn Sie false angeben, muss eine Anwendung alle Resultsets aus einem Batch verarbeiten oder abbrechen, bevor sie andere Batches über diese Verbindung ausführen kann. Nein
multiSubnetFailover Die zulässigen Werte sind true oder false. Wenn Ihre Anwendung eine Verbindung mit einer AlwaysOn-Verfügbarkeitsgruppe (Availability Group, AG) in unterschiedlichen Subnetzen herstellt, ermöglicht das Festlegen dieser Eigenschaft auf true eine schnellere Erkennung des und Verbindung mit dem derzeit aktiven Server. Nein
packetSize Die Größe der Netzwerkpakete (in Byte), die bei der Kommunikation mit einer Instanz des Servers verwendet werden. Nein
pooling Die zulässigen Werte sind true oder false. Wenn Sie true angeben, wird die Verbindung gepoolt. Wenn Sie false angeben, wird die Verbindung bei jeder Anforderung der Verbindung explizit geöffnet. Nein

SQL-Authentifizierung

Um die SQL-Authentifizierung zu verwenden, geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen allgemeinen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
userName Der Benutzername, der zum Herstellen einer Verbindung mit dem Server verwendet wird. Ja
password Das Kennwort für den Benutzernamen. Markieren Sie dieses Feld als SecureString, um es sicher zu speichern. Sie können auch auf ein im Azure Key Vault gespeichertes Geheimnis verweisen. Ja

Beispiel: Verwenden der SQL-Authentifizierung

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Example: Kennwort in Azure Key Vault

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Dienstprinzipalauthentifizierung

Um die Dienstprinzipal-Authentifizierung zu verwenden, geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen allgemeinen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
servicePrincipalId Geben Sie die Client-ID der Anwendung an. Ja
servicePrincipalCredential Die Anmeldeinformationen für den Dienstprinzipal. Geben Sie den Schlüssel der Anwendung an. Markieren Sie dieses Feld als SecureString, um es sicher zu speichern, oder verweisen Sie auf ein Geheimnis, das in Azure Key Vault gespeichert ist. Ja
tenant Geben Sie die Mandanteninformationen (Domänenname oder Mandanten-ID) für Ihre Anwendung an. Sie können sie abrufen, indem Sie die Maus in der oberen rechten Ecke des Azure Portals bewegen. Ja
azureCloudType Geben Sie für die Dienstprinzipalauthentifizierung den Typ der Azure Cloudumgebung an, für die Ihre Microsoft Entra-Anwendung registriert ist.
Zulässige Werte sind AzurePublic, AzureChina, AzureUsGovernment und AzureGermany. Standardmäßig wird die Cloudumgebung der Data Factory oder der Synapse-Pipeline verwendet.
Nein

Sie müssen auch die folgenden Schritte ausführen:

  1. Erstellen Sie eine Microsoft Entra-Anwendung über das Azure-Portal. Notieren Sie sich den Anwendungsnamen und die folgenden Werte zum Definieren des verknüpften Diensts:

    • Anwendungs-ID
    • Anwendungsschlüssel
    • Mandanten-ID
  2. Provision eines Microsoft Entra Administrators für Ihren Server im Azure Portal, sofern noch nicht geschehen. Der Microsoft Entra-Administrator kann ein Microsoft Entra Benutzer oder Microsoft Entra Gruppe sein. Wenn Sie der Gruppe mit der verwalteten Identität eine Administratorrolle zuweisen, überspringen Sie die Schritte 3 und 4. Der Administrator hat vollen Zugriff auf die Datenbank.

  3. Erstellen Sie Benutzer der eigenständigen Datenbank für den Dienstprinzipal. Stellen Sie eine Verbindung mit dem Data Warehouse her, von dem oder zu dem Sie Daten kopieren möchten, und verwenden Sie dazu Tools wie SSMS. Nutzen Sie eine Microsoft Entra-Identität, die über mindestens die Berechtigung ALTER ANY USER verfügt. Führen Sie folgenden T-SQL-Code aus:

    CREATE USER [your_application_name] FROM EXTERNAL PROVIDER;
    
  4. Gewähren Sie dem Dienstprinzipal die notwendigen Berechtigungen, wie bei SQL- oder anderen Benutzern üblich. Führen Sie den folgenden Code aus, oder machen Sie sich mit weiteren Optionen vertraut. Wenn Sie PolyBase zum Laden der Daten verwenden möchten, machen Sie sich mit der benötigten Datenbankberechtigung vertraut.

    EXEC sp_addrolemember db_owner, [your application name];
    
  5. Konfigurieren Sie einen Azure Synapse Analytics verknüpften Dienst in einem Azure Data Factory- oder Synapse-Arbeitsbereich.

Beispiel eines verknüpften Diensts mit Dienstprinzipalauthentifizierung

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalCredential": {
                "type": "SecureString",
                "value": "<application key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Vom System zugewiesene verwaltete Identitäten für Azure Ressourcenauthentifizierung

Ein Data Factory- oder Synapse-Arbeitsbereich kann einer system zugewiesenen verwalteten Identität für Azure Ressourcen zugeordnet werden, die die Ressource darstellt. Sie können diese verwaltete Identität für Azure Synapse Analytics Authentifizierung verwenden. Die angegebene Ressource kann mithilfe dieser Identität auf Daten in Ihrem Data Warehouse zugreifen und diese kopieren.

Um die vom System zugewiesene verwaltete Identitätsauthentifizierung zu verwenden, geben Sie die generischen Eigenschaften an, die im vorherigen Abschnitt beschrieben sind, und führen Sie diese Schritte aus.

  1. Provision eines Microsoft Entra Administrators für Ihren Server im Azure Portal, sofern noch nicht geschehen. Der Microsoft Entra-Administrator kann ein Microsoft Entra Benutzer oder Microsoft Entra Gruppe sein. Wenn Sie der Gruppe mit der verwalteten Identität eine Administratorrolle zuweisen, überspringen Sie die Schritte 3 und 4. Der Administrator hat vollen Zugriff auf die Datenbank.

  2. Erstellen Sie Benutzer der eigenständigen Datenbank für die systemseitig zugewiesene verwaltete Identität. Stellen Sie eine Verbindung mit dem Data Warehouse her, von dem oder zu dem Sie Daten mithilfe von Tools wie SSMS kopieren möchten, und verwenden Sie ein Microsoft Entra-Konto, das mindestens die Berechtigung ALTER ANY USER hat. Führen Sie den folgenden T-SQL-Befehl aus.

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Gewähren Sie der systemseitig zugewiesenen verwalteten Identität erforderliche Berechtigungen, wie Sie es normalerweise für SQL- und andere Benutzer tun. Führen Sie den folgenden Code aus, oder machen Sie sich mit weiteren Optionen vertraut. Wenn Sie PolyBase zum Laden der Daten verwenden möchten, machen Sie sich mit der benötigten Datenbankberechtigung vertraut.

    EXEC sp_addrolemember db_owner, [your_resource_name];
    
  4. Konfigurieren eines verknüpften Dienstes in Azure Synapse Analytics.

Beispiel:

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SystemAssignedManagedIdentity"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Authentifizierung mit einer benutzerseitig zugewiesenen verwalteten Identität

Ein Data Factory- oder Synapse-Arbeitsbereich kann einer verwalteten Identität für Azure-Ressourcen zugeordnet werden, die die Ressource darstellt. Sie können diese verwaltete Identität für Azure Synapse Analytics Authentifizierung verwenden. Die angegebene Ressource kann mithilfe dieser Identität auf Daten in Ihrem Data Warehouse zugreifen und diese kopieren.

Um die vom Benutzer zugewiesene verwaltete Identitätsauthentifizierung zu verwenden, geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen allgemeinen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
Anmeldeinformationen Geben Sie die benutzerseitig zugewiesene verwaltete Identität als Anmeldeinformationsobjekt an. Ja

Sie müssen auch die folgenden Schritte ausführen:

  1. Provision eines Microsoft Entra Administrators für Ihren Server im Azure Portal, sofern noch nicht geschehen. Der Microsoft Entra-Administrator kann ein Microsoft Entra Benutzer oder Microsoft Entra Gruppe sein. Wenn Sie der Gruppe mit der verwalteten Identität eine Administratorrolle zuweisen, überspringen Sie die Schritte 3 und 4. Der Administrator hat vollen Zugriff auf die Datenbank.

  2. Erstellen Sie Benutzer der eigenständigen Datenbank für die benutzerseitig zugewiesene verwaltete Identität. Stellen Sie eine Verbindung mit dem Data Warehouse her, von oder zu dem Sie Daten mithilfe von Tools wie SSMS kopieren möchten, mit einer Microsoft Entra-Identität, die mindestens über die Berechtigung ALTER ANY USER verfügt. Führen Sie den folgenden T-SQL-Befehl aus.

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Erstellen Sie mindestens eine benutzerseitig zugewiesene verwaltete Identität, und gewähren Sie dieser Identität die erforderlichen Berechtigungen, wie Sie es normalerweise für SQL- und andere Benutzer tun. Führen Sie den folgenden Code aus, oder machen Sie sich mit weiteren Optionen vertraut. Wenn Sie PolyBase zum Laden der Daten verwenden möchten, machen Sie sich mit der benötigten Datenbankberechtigung vertraut.

    EXEC sp_addrolemember db_owner, [your_resource_name];
    
  4. Weisen Sie Ihrer Data Factory eine oder mehrere benutzerseitig zugewiesene verwaltete Identitäten zu, und erstellen Sie Anmeldeinformationen für jede benutzerseitig zugewiesene verwaltete Identität.

  5. Konfigurieren eines verknüpften Dienstes in Azure Synapse Analytics.

Beispiel

{
    "name": "AzureSqlDWLinkedService",
    "properties": {
        "type": "AzureSqlDW",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "UserAssignedManagedIdentity",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Legacy-Version

Diese generischen Eigenschaften werden für einen Azure Synapse Analytics verknüpften Dienst unterstützt, wenn Sie LegacyVersion anwenden:

Eigenschaft Beschreibung Erforderlich
type Die „type“-Eigenschaft muss auf AzureSqlDW festgelegt sein. Ja
connectionString Geben Sie die informationen an, die zum Herstellen einer Verbindung mit der Azure Synapse Analytics Instanz für die Eigenschaft connectionString erforderlich sind.
Markieren Sie dieses Feld als „SecureString“, um es sicher zu speichern. Sie können auch den Kennwort/Dienstprinzipalschlüssel in Azure Key Vault ablegen und wenn es sich um die SQL-Authentifizierung handelt, ziehen Sie die password-Konfiguration aus der Verbindungszeichenfolge. Weitere Informationen finden Sie im Artikel Store-Anmeldeinformationen in Azure Key Vault.
Ja
connectVia Die Integration Runtime, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden soll. Sie können Azure Integration Runtime oder eine selbst gehostete integration runtime verwenden (wenn sich Ihr Datenspeicher in einem privaten Netzwerk befindet). Wenn nicht angegeben, wird die Standard-Azure Integration Runtime verwendet. Nein

Informationen zu verschiedenen Authentifizierungstypen finden Sie in den folgenden Abschnitten zu bestimmten Eigenschaften respektive Voraussetzungen:

SQL-Authentifizierung für die Legacy-Version

Um die SQL-Authentifizierung zu verwenden, geben Sie die generischen Eigenschaften an, die im vorherigen Abschnitt beschrieben sind.

Dienstprinzipalauthentifizierung für die Legacy-Version

Um die Dienstprinzipal-Authentifizierung zu verwenden, geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen allgemeinen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
servicePrincipalId Geben Sie die Client-ID der Anwendung an. Ja
servicePrincipalKey Geben Sie den Schlüssel der Anwendung an. Markieren Sie dieses Feld als SecureString, um es sicher zu speichern, oder verweisen Sie auf ein in Azure Key Vault gespeichertes Geheimnis. Ja
tenant Geben Sie die Mandanteninformationen, wie Domänenname oder Mandanten-ID, für Ihre Anwendung an. Rufen Sie sie ab, indem Sie die Maus in die obere rechte Ecke des Azure-Portals bewegen. Ja
azureCloudType Geben Sie für die Dienstprinzipalauthentifizierung den Typ der Azure Cloudumgebung an, für die Ihre Microsoft Entra-Anwendung registriert ist.
Zulässige Werte sind AzurePublic, AzureChina, AzureUsGovernment und AzureGermany. Standardmäßig wird die Cloudumgebung der Data Factory oder der Synapse-Pipeline verwendet.
Nein

Außerdem müssen Sie die Schritte im Abschnitt Dienstprinzipalauthentifizierung ausführen, um die entsprechende Berechtigung zuzuweisen.

Authentifizierung mit einer systemseitig zugewiesenen verwalteten Identität für die Legacy-Version

Um die Authentifizierung mit einer systemseitig zugewiesenen verwalteten Identität zu verwenden, führen Sie den gleichen Schritt für die empfohlene Version im Abschnitt Authentifizierung mit einer systemseitig zugewiesenen verwalteten Identität aus.

Authentifizierung mit einer benutzerseitig zugewiesenen verwalteten Identität für die Legacy-Version

Um die Authentifizierung mit einer benutzerseitig zugewiesenen verwalteten Identität zu verwenden, führen Sie den gleichen Schritt für die empfohlene Version im Abschnitt Authentifizierung mit einer benutzerseitig zugewiesenen verwalteten Identität aus.

Dataset-Eigenschaften

Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie im Artikel zu Datasets.

Die folgenden Eigenschaften werden für Azure Synapse Analytics Datasets unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft des Datasets muss auf AzureSqlDWTable festgelegt sein. Ja
schema Name des Schemas. Quelle: Nein, Senke: Ja
table Name der Tabelle/Ansicht. Quelle: Nein, Senke: Ja
tableName Name der Tabelle/Ansicht mit Schema. Diese Eigenschaft wird aus Gründen der Abwärtskompatibilität weiterhin unterstützt. Verwenden Sie für eine neue Workload schema und table. Quelle: Nein, Senke: Ja

Beispiel für Dataseteigenschaften

{
    "name": "AzureSQLDWDataset",
    "properties":
    {
        "type": "AzureSqlDWTable",
        "linkedServiceName": {
            "referenceName": "<Azure Synapse Analytics linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Eigenschaften der Kopieraktivität

Eine vollständige Liste mit den Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie im Artikel Pipelines. Dieser Abschnitt enthält eine Liste der Eigenschaften, die von der Quelle und Senke von Azure Synapse Analytics unterstützt werden.

Azure Synapse Analytics als Quelle

Tipp

Weitere Informationen zum effizienten Laden von Daten aus Azure Synapse Analytics mithilfe der Datenpartitionierung finden Sie unter Parallel-Kopie aus Azure Synapse Analytics.

Um Daten aus Azure Synapse Analytics zu kopieren, legen Sie die Eigenschaft type in der Quelle "Aktivität kopieren" auf SqlDWSource fest. Die folgenden Eigenschaften werden im Abschnitt source der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Quelle der Kopieraktivität muss auf SqlDWSource festgelegt sein. Ja
sqlReaderQuery Verwendet die benutzerdefinierte SQL-Abfrage zum Lesen von Daten. Beispiel: select * from MyTable. Nein
sqlReaderStoredProcedureName Name der gespeicherten Prozedur, die Daten aus der Quelltabelle liest. Die letzte SQL-Anweisung muss eine SELECT-Anweisung in der gespeicherten Prozedur sein. Nein
storedProcedureParameters Parameter für die gespeicherte Prozedur.
Zulässige Werte sind Namen oder Name-Wert-Paare. Die Namen und die Groß-/Kleinschreibung von Parametern müssen denen der Parameter der gespeicherten Prozedur entsprechen.
Nein
isolationLevel Gibt das Sperrverhalten für Transaktionen für die SQL-Quelle an. Zulässige Werte sind: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Ohne Angabe wird die Standardisolationsstufe der Datenbank verwendet. Weitere Informationen finden Sie unter system.data.isolationlevel. Nein
partitionOptions Gibt die Datenpartitionierungsoptionen an, die zum Laden von Daten aus Azure Synapse Analytics verwendet werden.
Zulässige Werte sind: None (Standard), PhysicalPartitionsOfTable und DynamicRange.
Wenn eine Partitionsoption aktiviert ist (d. h. nicht None), wird der Grad der Parallelität zum gleichzeitigen Laden von Daten aus einem Azure Synapse Analytics durch die Einstellung parallelCopies für die Kopieraktivität gesteuert.
Nein
partitionSettings Geben Sie die Gruppe der Einstellungen für die Datenpartitionierung an.
Verwenden Sie diese Option, wenn die Partitionsoption nicht None lautet.
Nein
Unter partitionSettings:
partitionColumnName Geben Sie den Namen der Quellspalte als „integer“ oder „date/datetime“ (int, smallint, bigint, date, smalldatetime, datetime, datetime2 oder datetimeoffset) an, der von der Bereichspartitionierung für das parallele Kopieren verwendet wird. Ohne Angabe wird der Index oder der Primärschlüssel der Tabelle automatisch erkannt und als Partitionsspalte verwendet.
Verwenden Sie diese Option, wenn die Partitionsoption DynamicRange lautet. Wenn Sie die Quelldaten mithilfe einer Abfrage abrufen, integrieren Sie ?DfDynamicRangePartitionCondition in die WHERE-Klausel. Ein Beispiel finden Sie im Abschnitt Paralleles Kopieren aus SQL-Datenbank.
Nein
partitionUpperBound Der maximale Wert der Partitionsspalte für das Teilen des Partitionsbereichs. Dieser Wert wird zur Entscheidung über den Partitionssprung verwendet, nicht zum Filtern der Zeilen in der Tabelle. Alle Zeilen in der Tabelle oder im Abfrageergebnis werden partitioniert und kopiert. Wenn nicht angegeben, wird der Wert für die Kopieraktivität automatisch erkannt.
Verwenden Sie diese Option, wenn die Partitionsoption DynamicRange lautet. Ein Beispiel finden Sie im Abschnitt Paralleles Kopieren aus SQL-Datenbank.
Nein
partitionLowerBound Der minimale Wert der Partitionsspalte für das Teilen des Partitionsbereichs. Dieser Wert wird zur Entscheidung über den Partitionssprung verwendet, nicht zum Filtern der Zeilen in der Tabelle. Alle Zeilen in der Tabelle oder im Abfrageergebnis werden partitioniert und kopiert. Wenn nicht angegeben, wird der Wert für die Kopieraktivität automatisch erkannt.
Verwenden Sie diese Option, wenn die Partitionsoption DynamicRange lautet. Ein Beispiel finden Sie im Abschnitt Paralleles Kopieren aus SQL-Datenbank.
Nein

Beachten Sie Folgendes:

  • Wenn Sie zum Abrufen von Daten eine gespeicherte Prozedur in der Quelle verwenden und die gespeicherte Prozedur beim Übergeben eines anderen Parameterwerts ein anderes Schema zurückgibt, kommt es möglicherweise beim Importieren eines Schemas über die Benutzeroberfläche oder beim Kopieren von Daten in eine SQL-Datenbank zu einem Fehler oder einem unerwarteten Ergebnis.

Beispiel: Verwenden von SQL-Abfragen

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Beispiel: Verwenden von gespeicherten Prozeduren

"activities":[
    {
        "name": "CopyFromAzureSQLDW",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure Synapse Analytics input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlDWSource",
                "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
                "storedProcedureParameters": {
                    "stringData": { "value": "str3" },
                    "identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
                }
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Gespeicherte Beispielprozedur:

CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
    @stringData varchar(20),
    @identifier int
)
AS
SET NOCOUNT ON;
BEGIN
    select *
    from dbo.UnitTestSrcTable
    where dbo.UnitTestSrcTable.stringData != stringData
    and dbo.UnitTestSrcTable.identifier != identifier
END
GO

Azure Synapse Analytics als Senke

Azure Data Factory- und Synapse-Pipelines unterstützen drei Möglichkeiten zum Laden von Daten in Azure Synapse Analytics.

Über die COPY-Anweisung oder PolyBase können Sie Daten am schnellsten laden und am besten skalieren.

Wenn Sie Daten in Azure Synapse Analytics kopieren möchten, legen Sie den Sinktyp in "Aktivität kopieren" auf SqlDWSink fest. Die folgenden Eigenschaften werden im Abschnitt sink der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
type Die type-Eigenschaft der Senke der Kopieraktivität muss auf SqlDWSink festgelegt sein. Ja
allowPolyBase Gibt an, ob PolyBase zum Laden von Daten in Azure Synapse Analytics verwendet werden soll. allowCopyCommand und allowPolyBase können nicht beide auf „true“ festgelegt sein.

Weitere Informationen zu Einschränkungen und Details finden Sie im Abschnitt Use PolyBase to load data into Azure Synapse Analytics.

Zulässige Werte sind true und false (Standard).
Nein.
Beim Verwenden von PolyBase anwenden.
polyBaseSettings Eine Gruppe von Eigenschaften, die angegeben werden können, wenn die Eigenschaft allowPolybase auf true festgelegt ist. Nein.
Beim Verwenden von PolyBase anwenden.
allowCopyCommand Gibt an, ob COPY-Anweisung zum Laden von Daten in Azure Synapse Analytics verwendet werden soll. allowCopyCommand und allowPolyBase können nicht beide auf „true“ festgelegt sein.

Weitere Informationen finden Sie im Abschnitt Verwenden der COPY-Anweisung zum Laden von Daten in Azure Synapse Analytics zu Einschränkungen und Details.

Zulässige Werte sind true und false (Standard).
Nein.
Beim Verwenden von COPY anwenden.
copyCommandSettings Eine Gruppe von Eigenschaften, die angegeben werden können, wenn die Eigenschaft allowCopyCommand auf TRUE festgelegt ist. Nein.
Beim Verwenden von COPY anwenden.
writeBatchSize Anzahl der Zeilen, die in die SQL-Tabelle pro Batch eingefügt werden sollen.

Zulässiger Wert: integer (Anzahl der Zeilen) Standardmäßig bestimmt der Dienst die geeignete Batchgröße dynamisch auf der Grundlage der Zeilengröße.
Nein.
Beim Verwenden von BULK INSERT anwenden.
writeBatchTimeout Die Wartezeit für den Abschluss der Insert- und Upsert-Vorgänge und die gespeicherte Prozedur, bevor ein Timeout auftritt.
Zulässige Werte werden für den Zeitraum verwendet. Beispiel: „00:30:00“ für 30 Minuten. Wenn kein Wert festgelegt ist, wird für das Timeout der Standardwert „00:30:00“ verwendet.
Nein.
Beim Verwenden von BULK INSERT anwenden.
preCopyScript Geben Sie eine SQL-Abfrage für kopieraktivität an, die ausgeführt werden soll, bevor Sie Daten in Azure Synapse Analytics in jeder Ausführung schreiben. Sie können diese Eigenschaft nutzen, um vorab geladene Daten zu bereinigen. Nein
tableOption Gibt an, ob die Senkentabelle auf Basis des Quellschemas automatisch erstellt werden soll, wenn sie nicht vorhanden ist. Zulässige Werte: none (Standard), autoCreate. Nein
disableMetricsCollection Der Dienst sammelt Metriken wie die Azure Synapse Analytics DWUs zur Optimierung der Kopierleistung und für Empfehlungen, die zusätzlichen Zugriff auf die Master-Datenbank erfordern. Wenn Sie sich wegen dieses Verhaltens Gedanken machen, geben Sie true an, um es zu deaktivieren. Nein (Standard = false)
maxConcurrentConnections Die Obergrenze gleichzeitiger Verbindungen mit dem Datenspeicher während der Aktivitätsausführung. Geben Sie diesen Wert nur an, wenn Sie die Anzahl der gleichzeitigen Verbindungen begrenzen möchten. Nein
WriteBehavior Geben Sie das Schreibverhalten für Kopieraktivitäten an, um Daten in Azure Synapse Analytics zu laden.
Die zulässigen Werte sind Insert und Upsert. Standardmäßig verwendet der Dienst „Insert“, um Daten zu laden.
Nein
upsertSettings Geben Sie die Gruppe der Einstellungen für das Schreibverhalten an.
Wenden Sie dies an, wenn die WriteBehavior-Option Upsert ist.
Nein
Unter upsertSettings:
keys Geben Sie die Spaltennamen für die eindeutige Zeilenidentifikation an. Es kann entweder ein einzelner Schlüssel oder eine Reihe von Schlüsseln verwendet werden. Bei fehlender Angabe wird der Primärschlüssel verwendet. Nein
interimSchemaName Geben Sie das Zwischenschema zum Erstellen einer Zwischentabelle an. Hinweis: Benutzer*innen müssen über die Berechtigung zum Erstellen und Löschen einer Tabelle verfügen. Standardmäßig verwendet die Zwischentabelle das gleiche Schema wie die Senkentabelle. Nein

Beispiel 1: Azure Synapse Analytics-Senke

"sink": {
    "type": "SqlDWSink",
    "allowPolyBase": true,
    "polyBaseSettings":
    {
        "rejectType": "percentage",
        "rejectValue": 10.0,
        "rejectSampleValue": 100,
        "useTypeDefault": true
    }
}

Beispiel 2: Upsert-Daten

"sink": {
    "type": "SqlDWSink",
    "writeBehavior": "Upsert",
    "upsertSettings": {
        "keys": [
             "<column name>"
        ],
        "interimSchemaName": "<interim schema name>"
    },
}

Parallele Kopie aus Azure Synapse Analytics

Der Azure Synapse Analytics Connector im Kopiervorgang ermöglicht integrierte Datenpartitionierung zum parallelen Kopieren von Daten. Die Datenpartitionierungsoptionen befinden sich auf der Registerkarte Quelle der Kopieraktivität.

Screenshot der Partitionierungsoptionen

Wenn Sie partitionierte Kopie aktivieren, führt kopieraktivität parallele Abfragen für Ihre Azure Synapse Analytics Quelle aus, um Daten nach Partitionen zu laden. Der Parallelitätsgrad wird über die Einstellung parallelCopies der Kopieraktivität gesteuert. Wenn Sie z. B. parallelCopies auf vier festlegen, generiert der Dienst gleichzeitig vier Abfragen basierend auf Der angegebenen Partitionsoption und -einstellungen, und jede Abfrage ruft einen Teil der Daten aus Ihrem Azure Synapse Analytics ab.

Sie werden empfohlen, parallele Kopie mit Datenpartitionierung zu aktivieren, insbesondere wenn Sie eine große Datenmenge aus Ihrem Azure Synapse Analytics laden. Im Anschluss finden Sie empfohlene Konfigurationen für verschiedene Szenarien. Beim Kopieren von Daten in einen dateibasierten Datenspeicher wird empfohlen, mehrere Dateien in einen Ordner zu schreiben (nur den Ordnernamen anzugeben). In diesem Fall ist die Leistung besser als beim Schreiben in eine einzelne Datei.

Szenario Empfohlene Einstellungen
Vollständiges Laden aus einer großen Tabelle mit physischen Partitionen Partitionsoption: Physische Partitionen der Tabelle.

Während der Ausführung erkennt der Dienst automatisch die physischen Partitionen und kopiert Daten nach Partitionen.

Um zu überprüfen, ob Ihre Tabelle eine physische Partition besitzt oder nicht, können Sie auf diese Abfrage verweisen.
Vollständiges Laden aus einer großen Tabelle ohne physische Partitionen, aber mit einer integer- oder datetime-Spalte für die Datenpartitionierung. Partitionsoptionen: Partition des dynamischen Bereichs
Partitionsspalte (optional): Geben Sie die Spalte für die Datenpartitionierung an. Ohne Angabe wird der Index oder die Primärschlüsselspalte verwendet.
Obergrenze der Partition und Untergrenze der Partition (optional): Geben Sie an, ob Sie den Partitionssprung bestimmen möchten. Dies dient nicht zum Filtern der Zeilen in der Tabelle; alle Zeilen in der Tabelle werden partitioniert und kopiert. Wenn nicht angegeben, werden die Werte für die Kopieraktivität automatisch erkannt.

Wenn Ihre Partitionsspalte "ID" beispielsweise einen Wertebereich von 1 bis 100 hat und Sie die untere Grenze auf 20 und die obere Grenze auf 80 und die Parallelkopie auf 4 setzen, ruft der Dienst Daten nach 4 Partitionen ab - IDs im Bereich <=20, [21, 50], [51, 80] bzw. >=81.
Laden einer großen Datenmenge unter Verwendung einer benutzerdefinierten Abfrage ohne physische Partitionen, aber mit einer integer- oder date/datetime-Spalte für die Datenpartitionierung. Partitionsoptionen: Partition des dynamischen Bereichs
Abfrage: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
Partitionsspalte: Geben Sie die Spalte an, die zum Partitionieren von Daten verwendet wird.
Obergrenze der Partition und Untergrenze der Partition (optional): Geben Sie an, ob Sie den Partitionssprung bestimmen möchten. Dies dient nicht zum Filtern der Zeilen in der Tabelle; alle Zeilen im Abfrageergebnis werden partitioniert und kopiert. Wenn nicht angegeben, wird der Wert für die Kopieraktivität automatisch erkannt.

Wenn Ihre Partitionsspalte „ID“ beispielsweise einen Wertebereich von 1 bis 100 hat und Sie die untere Grenze auf 20, die obere Grenze auf 80 und die Parallelkopie auf 4 festlegen, ruft der Dienst Daten nach 4 Partitionen ab – IDs im Bereich <=20, [21, 50], [51, 80] bzw. >=81.

Hier finden Sie weitere Beispiele für verschiedene Szenarien:
1. Abfragen der gesamten Tabelle:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
2. Abfragen aus einer Tabelle mit Spaltenauswahl und zusätzlichen WHERE-Klausel-Filtern:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Abfragen mit Unterabfragen:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. Abfragen mit Partition in Unterabfrage:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Bewährte Methoden zum Laden von Daten mit Partitionierungsoption:

  1. Wählen Sie eine aussagekräftige Spalte als Partitionsspalte (wie Primärschlüssel oder eindeutiger Schlüssel), um Datenabweichungen zu vermeiden.
  2. Wenn die Tabelle eine integrierte Partition aufweist, verwenden Sie die Partitionsoption „Physikalische Partitionen der Tabelle“, um eine bessere Leistung zu erzielen.
  3. Wenn Sie Azure Integration Runtime zum Kopieren von Daten verwenden, können Sie größere "Data Integration Units (DIU)" (>4) festlegen, um weitere Rechenressourcen zu nutzen. Prüfen Sie dort die anwendbaren Szenarien.
  4. Grad der Kopierparallelität“ steuert die Partitionsnummern. Ein zu großer Wert schadet manchmal der Leistung. Deshalb wird empfohlen, diesen Wert wie folgt festzulegen: (DIU oder Anzahl der selbstgehosteten IR-Knoten) × (2 bis 4).
  5. Beachten Sie, dass Azure Synapse Analytics gleichzeitig maximal 32 Abfragen ausführen kann. Wenn Sie den „Grad der Kopierparallelität“ auf einen zu hohen Wert festlegen, kann dies zu einem Drosselungsproblem im Zusammenhang mit Azure Synapse Analytics führen.

Beispiel: Vollständiges Laden aus einer großen Tabelle mit physischen Partitionen

"source": {
    "type": "SqlDWSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Beispiel: Abfrage mit dynamischer Bereichspartition

"source": {
    "type": "SqlDWSource",
    "query": "SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>",
    "partitionOption": "DynamicRange",
    "partitionSettings": {
        "partitionColumnName": "<partition_column_name>",
        "partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
        "partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
    }
}

Beispielabfrage zur Überprüfung der physischen Partition

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Wenn die Tabelle eine physische Partition besitzt, würde „HasPartition“ als „Yes“ (Ja) angezeigt werden.

Verwenden der COPY-Anweisung zum Laden von Daten in Azure Synapse Analytics

Die Verwendung COPY-Anweisung ist eine einfache und flexible Möglichkeit zum Laden von Daten in Azure Synapse Analytics mit hohem Durchsatz. Weitere Informationen finden Sie unter Massenladen von Daten mit der COPY-Anweisung.

  • Wenn sich die Quelldaten in Azure Blob oder Azure Data Lake Storage Gen2 befindet und das format COPY-Anweisung kompatibel ist, können Sie die Kopieraktivität verwenden, um die COPY-Anweisung direkt aufzurufen, damit Azure Synapse Analytics die Datenquelle abrufen können. Details finden Sie unter Direktes Kopieren mithilfe der COPY-Anweisung.
  • Wenn der Speicher und das Format der Quelldaten von der COPY-Anweisung ursprünglich nicht unterstützt werden, können Sie stattdessen das Feature Gestaffeltes Kopieren mithilfe der COPY-Anweisung verwenden. Das gestaffelte Kopieren bietet auch einen höheren Durchsatz. Es konvertiert die Daten automatisch in ein mit der COPY-Anweisung kompatibles Format, speichert die Daten dann im Azure Blob Storage und ruft schließlich die COPY-Anweisung auf, um die Daten in Azure Synapse Analytics zu laden.

Tipp

Bei Verwendung der COPY-Anweisung mit Azure Integration Runtime beträgt die effektive Anzahl der Datenintegrations-Einheiten (DIU) immer 2. Die Optimierung der DIU wirkt sich nicht auf die Leistung aus, da das Laden von Daten aus dem Speicher vom Azure Synapse-Modul unterstützt wird.

Direktes Kopieren mithilfe der COPY-Anweisung

Die COPY-Anweisung von Azure Synapse Analytics unterstützt direkt Azure Blob und Azure Data Lake Storage Gen2. Wenn Ihre Quelldaten die in diesem Abschnitt beschriebenen Kriterien erfüllen, verwenden Sie COPY-Anweisung, um direkt aus dem Quelldatenspeicher zu Azure Synapse Analytics zu kopieren. Andernfalls können Sie das gestaffelte Kopieren mithilfe der COPY-Anweisung verwenden. Der Dienst überprüft die Einstellungen und gibt bei der Ausführung der Copy-Aktivität einen Fehler aus, wenn die Kriterien nicht erfüllt werden.

  1. Der mit der Quelle verknüpfte Dienst und das Format verfügen über die folgenden Typen und Authentifizierungsmethoden:

    Unterstützter Quelldatenspeichertyp Unterstütztes Format: Unterstützter Quellauthentifizierungstyp
    Azure Blob Text mit Trennzeichen Kontoschlüsselauthentifizierung, SAS-Authentifizierung (Shared Access Signature), Dienstprinzipalauthentifizierung (mit ServicePrincipalKey), Authentifizierung mit systemseitig zugewiesener verwalteter Identität
      Parquet Kontoschlüsselauthentifizierung, SAS-Authentifizierung (Shared Access Signature)
      ORC Kontoschlüsselauthentifizierung, SAS-Authentifizierung (Shared Access Signature)
    Azure Data Lake Storage Gen2 Text mit Trennzeichen
    Parquet
    ORC
    Kontoschlüsselauthentifizierung, Dienstprinzipalauthentifizierung (mit ServicePrincipalKey), SAS-Authentifizierung (Shared Access Signature), Authentifizierung mit systemseitig zugewiesener verwalteter Identität

    Wichtig

  2. Die Formateinstellungen lauten folgendermaßen:

    1. Bei Parquet: compression kann auf Keine Komprimierung, Snappy oder GZip festgelegt werden.
    2. Bei ORC: compression kann auf Keine Komprimierung, zlib oder Snappy festgelegt sein.
    3. Bei Text mit Trennzeichen:
      1. rowDelimiter ist explizit festgelegt auf einzelnes Zeichen oder \r\n. Der Standardwert wird nicht unterstützt.
      2. nullValue wird als Standardwert übernommen oder ist auf leere Zeichenfolge („“) festgelegt.
      3. encodingName wird als Standardwert übernommen oder ist auf utf-8 oder utf-16 festgelegt.
      4. escapeChar muss quoteChar entsprechen und darf nicht leer sein.
      5. skipLineCount wird als Standardwert übernommen oder ist auf 0 festgelegt.
      6. compression kann auf keine Komprimierung oder GZip festgelegt werden.
  3. Wenn es sich bei der Quelle um einen Ordner handelt, muss recursive beim Kopiervorgang auf „TRUE“ festgelegt sein, und wildcardFilename muss * oder *.* sein.

  4. wildcardFolderPath, wildcardFilename (anders als * oder *.*), modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery und additionalColumns werden nicht angegeben.

Die folgenden Einstellungen der COPY-Anweisung werden unter allowCopyCommand in der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
defaultValues Gibt die Standardwerte für jede Zielspalte in Azure Synapse Analytics an. Die Standardwerte in der Eigenschaft überschreiben die in Data Warehouse festgelegte DEFAULT-Einschränkung, und die Identitätsspalte darf keinen Standardwert haben. Nein
additionalOptions Zusätzliche Optionen, die direkt in der WITH-Klausel in der COPY-Anweisung an eine COPY-Anweisung in Azure Synapse Analytics übergeben werden. Geben Sie den Wert so an, wie er gemäß den Anforderungen der COPY-Anweisung erforderlich ist. Nein
"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true,
                "copyCommandSettings": {
                    "defaultValues": [
                        {
                            "columnName": "col_string",
                            "defaultValue": "DefaultStringValue"
                        }
                    ],
                    "additionalOptions": {
                        "MAXERRORS": "10000",
                        "DATEFORMAT": "'ymd'"
                    }
                }
            },
            "enableSkipIncompatibleRow": true
        }
    }
]

Gestaffeltes Kopieren mithilfe der COPY-Anweisung

Wenn Ihre Quelldaten nicht nativ mit COPY-Anweisung kompatibel sind, aktivieren Sie das Kopieren von Daten über ein Zwischen-Staging-Azure Blob oder Azure Data Lake Storage Gen2 (es kann nicht Azure Storage Premium werden). In diesem Fall konvertiert der Dienst die Daten automatisch, damit das Datenformat den Anforderungen der COPY-Anweisung entspricht. Anschließend wird COPY-Anweisung aufgerufen, um Daten in Azure Synapse Analytics zu laden. Abschließend werden Sie die temporären Daten im Speicher bereinigt. Ausführliche Informationen zum Kopieren von Daten mithilfe von Staging finden Sie unter Gestaffeltes Kopieren.

Um dieses Feature zu verwenden, erstellen Sie einen Azure Blob Storage verknüpften Dienst oder Azure Data Lake Storage Gen2 verknüpften Dienst mit Accountschlüssel oder vom System verwalteten Identitätsauthentifizierung der sich auf das Azure Speicherkonto als Zwischenspeicher bezieht.

Wichtig

Wichtig

Wenn Ihr Staging-Azure Storage mit verwaltetem privatem Endpunkt konfiguriert ist und die Speicherfirewall aktiviert ist, müssen Sie die Authentifizierung verwalteter Identität verwenden und dem Synapse-SQL Server Berechtigungen für den Storage Blob Data Reader erteilen, um sicherzustellen, dass sie während des LADENs der COPY-Anweisung auf die mehrstufigen Dateien zugreifen kann.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaCOPYstatement",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowCopyCommand": true
            },
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Verwenden von PolyBase zum Laden von Daten in Azure Synapse Analytics

Die Verwendung von PolyBase ist eine effiziente Möglichkeit, eine große Menge von Daten mit hohem Durchsatz in Azure Synapse Analytics zu laden. Wenn Sie PolyBase anstelle des standardmäßigen BULKINSERT-Mechanismus verwenden, wird der Durchsatz erheblich gesteigert.

  • Wenn sich Die Quelldaten in Azure Blob oder Azure Data Lake Storage Gen2 befindet und das format polyBase kompatibel ist, können Sie mithilfe von Kopieraktivitäten direkt PolyBase aufrufen, um Azure Synapse Analytics das Abrufen der Daten aus der Quelle zu ermöglichen. Details finden Sie unter Direktes Kopieren mithilfe von PolyBase.
  • Wenn der Speicher und das Format der Quelldaten von PolyBase ursprünglich nicht unterstützt werden, können Sie stattdessen das Feature Gestaffeltes Kopieren mit PolyBase verwenden. Das gestaffelte Kopieren bietet auch einen höheren Durchsatz. Sie konvertiert die Daten automatisch in polybasekompatibles Format, speichert die Daten in Azure Blob Storage und ruft dann PolyBase auf, um Daten in Azure Synapse Analytics zu laden.

Tipp

Weitere Informationen finden Sie unter Bewährte Methoden für die Verwendung von PolyBase. Bei Verwendung von PolyBase mit Azure Integration Runtime sind die effektiven Datenintegrationseinheiten (DIUs) für direkten oder gestaffelten Speicher in Synapse immer auf 2 festgelegt. Die Optimierung der DIU wirkt sich nicht auf die Leistung aus, da das Laden von Daten aus dem Speicher durch die Synapse-Engine erfolgt.

Die folgenden PolyBase-Eigenschaften werden unter polyBaseSettings in der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
rejectValue Gibt die Anzahl oder den Prozentsatz von Zeilen an, die abgelehnt werden können, bevor für die Abfrage ein Fehler auftritt.

Erfahren Sie mehr über die Ablehnungsoptionen von PolyBase im Abschnitt "Argumente" von CREATE EXTERNAL TABLE (Transact-SQL).

Zulässige Werte sind „0“ (Standard), „1“, „2“ usw.
Nein
rejectType Gibt an, ob die rejectValue-Option als Literalwert oder Prozentsatz angegeben ist.

Zulässige Werte sind Value (Standard) und Percentage.
Nein
rejectSampleValue Gibt die Anzahl von Zeilen an, die abgerufen werden, bevor PolyBase den Prozentsatz der abgelehnten Zeilen neu berechnet.

Zulässige Werte sind „1“, „2“ usw.
Ja, wenn für rejectType der Wert percentage festgelegt ist.
useTypeDefault Gibt an, wie fehlende Werte in durch Trennzeichen getrennten Textdateien behandelt werden sollen, wenn PolyBase Daten aus der Textdatei abruft.

Weitere Informationen zu dieser Eigenschaft finden Sie im Abschnitt "Arguments" in CREATE EXTERNAL FILE FORMAT (Transact-SQL).

Zulässige Werte sind true und false (Standard).

Nein

Direktes Kopieren mithilfe von PolyBase

Azure Synapse Analytics PolyBase unterstützt direkt Azure Blob und Azure Data Lake Storage Gen2. Wenn Ihre Quelldaten die in diesem Abschnitt beschriebenen Kriterien erfüllen, verwenden Sie PolyBase, um direkt aus dem Quelldatenspeicher zu Azure Synapse Analytics zu kopieren. Andernfalls können Sie das gestaffelte Kopieren mit PolyBase verwenden.

Tipp

Wenn Sie Daten effizient in Azure Synapse Analytics kopieren möchten, erfahren Sie mehr über Azure Data Factory macht es einfacher und bequemer, Erkenntnisse aus Daten zu gewinnen, indem Sie Data Lake Store mit Azure Synapse Analytics nutzen.

Falls die Anforderungen nicht erfüllt werden, überprüft der Dienst die Einstellungen und greift bei der Datenverschiebung automatisch auf den BULKINSERT-Mechanismus zurück.

  1. Der mit der Quelle verknüpfte Dienst verfügt über die folgenden Typen und Authentifizierungsmethoden:

    Unterstützter Quelldatenspeichertyp Unterstützter Quellauthentifizierungstyp
    Azure Blob Kontoschlüsselauthentifizierung, Authentifizierung mit einer systemseitig zugewiesenen verwalteten Identität
    Azure Data Lake Storage Gen2 Kontoschlüsselauthentifizierung, Authentifizierung mit einer systemseitig zugewiesenen verwalteten Identität

    Wichtig

  2. Das Quelldatenformat lautet Parquet, ORC oder Durch Trennzeichen getrennter Text – mit den folgenden Konfigurationen:

    1. Der Ordnerpfad enthält keinen Platzhalterfilter.
    2. Der Dateiname wurde entweder nicht angegeben oder verweist auf eine einzelne Datei. Wenn Sie in der Kopieraktivität einen Platzhalter-Dateinamen angeben, kann dies nur * oder *.* sein.
    3. rowDelimiter entspricht Standard, \n, \r\n oder \r.
    4. nullValue wird als Standardwert übernommen oder ist auf eine leere Zeichenfolge („“) festgelegt, und treatEmptyAsNull wird als Standardwert übernommen oder ist auf „true“ festgelegt.
    5. encodingName wird als Standardwert übernommen oder ist auf utf-8 festgelegt.
    6. quoteChar, escapeChar und skipLineCount wurden nicht angegeben. PolyBase unterstützt das Überspringen der Kopfzeile, dies kann als firstRowAsHeader konfiguriert werden.
    7. compression kann auf keine Komprimierung, GZip oder Deflate (Verkleinern) festgelegt werden.
  3. Wenn es sich bei der Quelle um einen Ordner handelt, muss recursive in der Kopieraktivität auf „true“ festgelegt werden.

  4. wildcardFolderPath, wildcardFilename, modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery und additionalColumns werden nicht angegeben.

Hinweis

Wenn es sich bei der Quelle um einen Ordner handelt, beachten Sie, dass PolyBase Dateien aus dem Ordner und seinen Unterordnern und keine Daten aus Dateien abruft, bei denen der Dateiname mit einem Unterstrich (_) oder einem Punkt (.) beginnt, wie hier dokumentiert – LOCATION-Argument.

"activities":[
    {
        "name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "ParquetDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "ParquetSource",
                "storeSettings":{
                    "type": "AzureBlobStorageReadSettings",
                    "recursive": true
                }
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            }
        }
    }
]

Gestaffeltes Kopieren mit PolyBase

Wenn Ihre Quelldaten nicht nativ mit PolyBase kompatibel sind, aktivieren Sie das Kopieren von Daten über ein Zwischen-Staging-Azure Blob oder Azure Data Lake Storage Gen2 (es kann nicht Azure Storage Premium werden). In diesem Fall konvertiert der Dienst die Daten automatisch, damit das Datenformat den Anforderungen von PolyBase entspricht. Anschließend wird PolyBase aufgerufen, um Daten in Azure Synapse Analytics zu laden. Abschließend werden Sie die temporären Daten im Speicher bereinigt. Ausführliche Informationen zum Kopieren von Daten mithilfe von Staging finden Sie unter Gestaffeltes Kopieren.

Um dieses Feature zu verwenden, erstellen Sie einen Azure Blob Storage verknüpften Dienst oder Azure Data Lake Storage Gen2 verknüpften Dienst mit Accountschlüssel oder verwalteter Identitätsauthentifizierung, der sich auf das Azure Speicherkonto als Zwischenspeicher bezieht.

Wichtig

Wichtig

Wenn Ihr Staging-Azure Storage mit verwaltetem privatem Endpunkt konfiguriert ist und die Speicherfirewall aktiviert ist, müssen Sie die Authentifizierung verwalteter Identität verwenden und dem Synapse-SQL Server Berechtigungen für den Storage Blob Data Reader erteilen, um sicherzustellen, dass sie während der PolyBase-Auslastung auf die mehrstufigen Dateien zugreifen kann.

"activities":[
    {
        "name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "SQLServerDataset",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "AzureSQLDWDataset",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlSource",
            },
            "sink": {
                "type": "SqlDWSink",
                "allowPolyBase": true
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                }
            }
        }
    }
]

Bewährte Methoden für die Verwendung von PolyBase

In den folgenden Abschnitten finden Sie zusätzlich zu den in Best Practices für Azure Synapse Analytics erwähnten Methoden bewährte Methoden.

Erforderliche Datenbankberechtigungen

Um PolyBase zu verwenden, muss der Benutzer, der Daten in Azure Synapse Analytics lädt, über "CONTROL"-Berechtigung verfügen für die Zieldatenbank. Sie können dies beispielsweise erreichen, indem Sie diesen Benutzer als Mitglied der Rolle db_owner hinzufügen. Erfahren Sie, wie Sie dies in der übersicht Azure Synapse Analytics tun.

Beschränkungen hinsichtlich Zeilengröße und Datentyp

In PolyBase sind Ladevorgänge auf Zeilen beschränkt, die kleiner als 1 MB sind. Die Anwendung kann nicht für das Laden von VARCHR(MAX), NVARCHAR(MAX) oder VARBINARY(MAX) genutzt werden. Weitere Informationen finden Sie unter Azure Synapse Analytics Servicekapazitätsbeschränkungen.

Wenn die Quelldaten Zeilen enthalten, die größer als 1 MB sind, empfiehlt es sich, die Quelltabellen vertikal in mehrere kleine Tabellen zu teilen. Stellen Sie sicher, dass die längste Zeile den Grenzwert nicht überschreitet. Die kleineren Tabellen können dann mithilfe von PolyBase geladen und in Azure Synapse Analytics zusammengeführt werden.

Alternativ können Sie für Daten mit breiten Spalten dieser Art eine andere Anwendung als PolyBase nutzen, um die Daten zu laden. Deaktivieren Sie hierzu die Einstellung „allow PolyBase“.

Azure Synapse Analytics Ressourcenklasse

Um den bestmöglichen Durchsatz zu erzielen, weisen Sie dem Benutzer eine größere Ressourcenklasse zu, die Daten über PolyBase in Azure Synapse Analytics lädt.

Problembehandlung in PolyBase

Laden in die Spalte „Decimal“

Wenn sich die Quelldaten im Textformat oder in anderen nicht PolyBase-kompatiblen Speicher befinden (unter Verwendung einer gestuften Kopie und PolyBase) und einen leeren Wert enthalten, der in eine Dezimalspalte von Azure Synapse Analytics geladen werden soll, wird möglicherweise der folgende Fehler angezeigt:

ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....

Die Lösung besteht darin, die Option „Use type default“ in der Senke der Kopieraktivität unter den > PolyBase-Einstellungen zu deaktivieren (Festlegung auf „false“). „USE_TYPE_DEFAULT“ ist eine native PolyBase-Konfiguration, mit der die Behandlung von fehlenden Werten in durch Trennzeichen getrennten Textdateien angegeben wird, wenn PolyBase Daten aus der Textdatei abruft.

Überprüfen der TableName-Eigenschaft in Azure Synapse Analytics

Die folgende Tabelle enthält Beispiele zum Angeben der tableName-Eigenschaft im JSON-Dataset. Es zeigt verschiedene Kombinationen von Schema und Tabellennamen.

Datenbankschema Tabellenname JSON-Eigenschaft tableName
dbo MyTable MyTable oder dbo.MyTable oder [dbo].[MyTable]
dbo1 MyTable dbo1.MyTable oder [dbo1].[MyTable]
dbo My.Table [My.Table] oder [dbo].[My.Table]
dbo1 My.Table [dbo1].[My.Table]

Sollte der folgende Fehler auftreten, liegt dies unter Umständen am Wert für die tableName-Eigenschaft. Informationen zur korrekten Angabe von Werten für die JSON-Eigenschaft tableName finden Sie in der Tabelle oben.

Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider

Spalten mit Standardwerten

Das PolyBase-Feature akzeptiert aktuell lediglich dieselbe Anzahl von Spalten wie in der Zieltabelle. Beispiel: Sie verfügen über eine Tabelle mit vier Spalten, von denen eine mit einem Standardwert definiert ist. Die Eingabedaten müssen weiterhin vier Spalten aufweisen. Bei Bereitstellung eines Eingabedatasets mit drei Spalten tritt ein Fehler wie der folgende auf:

All columns of the table must be specified in the INSERT BULK statement.

Der NULL-Wert ist eine Sonderform des Standardwerts. Wenn die Spalte NULL-Werte zulässt, können die Eingabedaten im Blob für diese Spalte leer sein. Sie dürfen im Eingabedataset aber nicht fehlen. PolyBase fügt NULL für fehlende Werte in Azure Synapse Analytics ein.

Fehler beim Zugriff auf externe Dateien

Wenn Sie den folgenden Fehler erhalten, stellen Sie sicher, dass Sie die verwaltete Identitätsauthentifizierung verwenden und der verwalteten Identität des Azure Synapse Arbeitsbereichs Berechtigungen für den Speicher-Blob-Datenleser erteilt haben.

Job failed due to reason: at Sink '[SinkName]': shaded.msdataflow.com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:\r\nHdfsBridge::isDirExist 

Weitere Informationen finden Sie unter Gewähren von Berechtigungen für die verwaltete Identität nach der Erstellung eines Arbeitsbereichs.

Eigenschaften von Mapping Data Flow

Beim Transformieren von Daten im Zuordnungsdatenfluss können Sie auf Tabellen in Azure Synapse Analytics zugreifen und in diese schreiben. Weitere Informationen finden Sie unter Quellentransformation und Senkentransformation in Zuordnungsdatenflüssen.

Quellentransformation

Einstellungen, die für Azure Synapse Analytics spezifisch sind, sind auf der Registerkarte Source-Optionen der Quelltransformation verfügbar.

Eingabe: Wählen Sie aus, ob Sie Ihre Quelle auf eine Tabelle verweisen (Äquivalent von Select * from <table-name>) oder eine benutzerdefinierte SQL-Abfrage eingeben.

Enable Staging Es wird dringend empfohlen, diese Option in Produktionsworkloads mit Azure Synapse Analytics Quellen zu verwenden. Wenn Sie eine Datenflussaktivität mit Azure Synapse Analytics-Quellen aus einer Pipeline ausführen, werden Sie zur Eingabe eines Speicherkontos am Stagingort aufgefordert und verwenden dieses für das gestaffelte Laden von Daten. Es ist der schnellste Mechanismus zum Laden von Daten aus Azure Synapse Analytics.

  • Wenn Sie die verwaltete Identitätsauthentifizierung für Ihren speicherverknüpften Dienst verwenden, lernen Sie die erforderlichen Konfigurationen für Azure Blob bzw. Azure Data Lake Storage Gen2 kennen.
  • Wenn Ihr Azure Storage mit einem VNet-Dienstendpunkt konfiguriert ist, müssen Sie die verwaltete Identitätsauthentifizierung verwenden, wobei "vertrauenswürdigen Microsoft-Dienst zulassen" im Speicherkonto aktiviert ist. Weitere Informationen finden Sie unter Auswirkungen der Verwendung von VNet-Dienstendpunkten mit Azure-Speicher.
  • Wenn Sie den serverlosen Azure Synapse-SQL-Pool als Quelle verwenden, wird das Aktivieren des Stagings nicht unterstützt.

Abfrage: Wenn Sie im Eingabefeld „Query“ (Abfrage) auswählen, geben Sie eine SQL-Abfrage für die Quelle ein. Diese Einstellung überschreibt jede Tabelle, die Sie im Dataset ausgewählt haben. Order By-Klauseln werden hier nicht unterstützt. Sie können aber eine vollständige SELECT FROM-Anweisung festlegen. Sie können auch benutzerdefinierte Tabellenfunktionen verwenden. select * from udfGetData() ist eine benutzerdefinierte Funktion in SQL, die eine Tabelle zurückgibt. Diese Abfrage generiert eine Quelltabelle, die Sie in Ihrem Datenfluss verwenden können. Die Verwendung von Abfragen stellt auch eine gute Möglichkeit dar, um die Zeilen für Tests oder Suchvorgänge zu verringern.

SQL-Beispiel: Select * from MyTable where customerId > 1000 and customerId < 2000

Batchgröße: Geben Sie eine Batchgröße ein, um große Datenmengen in Leseblöcke zu segmentieren. In Datenflüssen wird diese Einstellung verwendet, um die Spark-Zwischenspeicherung in Spalten festzulegen. Dies ist ein Optionsfeld, in dem Spark-Standardwerte verwendet werden, wenn kein Wert eingegeben wurde.

Isolationsstufe: Der Standardwert für SQL-Quellen im Zuordnungsdatenfluss lautet „Lesen ohne Commit“. Sie können die Isolationsstufe hier in einen der folgenden Werte ändern:

  • Lesen zugesichert
  • Lesen nicht zugesichert
  • Wiederholbarer Lesevorgang
  • Serialisierbar
  • Keine (Isolationsstufe ignorieren)

Isolationsstufe

Senkentransformation

Einstellungen, die für Azure Synapse Analytics spezifisch sind, sind auf der Registerkarte Settings der Sinktransformation verfügbar.

Updatemethode: bestimmt, welche Vorgänge für das Datenbankziel zulässig sind. Standardmäßig sind lediglich Einfügevorgänge zulässig. Wenn Sie für Zeilen Update-, Upsert- oder Löschvorgänge verwenden möchten, fügen Sie zunächst eine Transformation zur Änderung von Zeilen hinzu, um Zeilen für diese Aktionen zu kennzeichnen. Für Update-, Upsert- und Löschvorgänge muss mindestens eine Schlüsselspalte festgelegt werden, um die Zeile zu bestimmen, die geändert werden soll.

Tabellenaktion: Bestimmt, ob die Zieltabelle vor dem Schreiben neu erstellt werden soll oder alle Zeilen aus der Zieltabelle entfernt werden sollen.

  • Keine: Es wird keine Aktion an der Tabelle vorgenommen.
  • Neu erstellen: Die Tabelle wird gelöscht und neu erstellt. Erforderlich, wenn eine neue Tabelle dynamisch erstellt wird.
  • Abschneiden: Alle Zeilen werden aus der Zieltabelle entfernt.

Staging aktivieren: Ermöglicht das Laden von Daten in Azure Synapse Analytics SQL-Pools mithilfe des Kopierbefehls und wird für die meisten Synapse-Senken empfohlen. Der Stagingspeicher wird in der Aktivität Execute Datenfluss konfiguriert.

Batchgröße: Steuert, wie viele Zeilen in die einzelnen Buckets geschrieben werden. Durch größere Batches werden zwar Komprimierung und Arbeitsspeicheroptimierung verbessert, beim Zwischenspeichern von Daten besteht aber die Gefahr, dass Ausnahmen wegen unzureichenden Arbeitsspeichers auftreten.

Sinkschema verwenden: Standardmäßig wird eine temporäre Tabelle unter dem Sinkschema als Staging erstellt. Alternativ können Sie die Option Sinkschema verwenden deaktivieren, und stattdessen einen Schemanamen in Benutzer-DB-Schema verwenden angeben, unter dem Data Factory eine Stagingtabelle erstellt, um vorgelagerte Daten zu laden und diese automatisch nach Abschluss zu löschen. Stellen Sie sicher, dass Sie Tabellenberechtigungen in der Datenbank erstellen und die Berechtigung für das Schema ändern.

Screenshot: Datenfluss „Senkenschema verwenden“

Pre- und Post-SQL-Skripts: Geben Sie mehrzeilige SQL-Skripts ein, die ausgeführt werden, bevor Daten in die Senkendatenbank geschrieben werden (Vorverarbeitung) und danach (Nachbearbeitung).

Screenshot: SQL-Skripts für Vor- und Nachverarbeitung im Azure Synapse Analytics-Datenfluss

Tipp

  1. Es wird empfohlen, einzelne Batchskripts mit mehreren Befehlen in mehrere Batches aufzuteilen.
  2. In einem Batch können nur DDL- (Data Definition Language) und DML-Anweisungen (Data Manipulation Language) ausgeführt werden, die eine einfache Updatezählung zurückgeben. Weitere Informationen finden Sie unter Ausführen von Batchvorgängen.

Fehlerzeilenbehandlung

Beim Schreiben in Azure Synapse Analytics können bestimmte Datenzeilen aufgrund von vom Ziel festgelegten Einschränkungen fehlschlagen. Häufige Fehler sind z. B. folgende:

  • Zeichenfolgen- oder Binärdaten würden in der Tabelle abgeschnitten.
  • Der Wert NULL kann nicht in die Spalte einfügt werden.
  • Fehler beim Konvertieren des Werts in den Datentyp

Standardmäßig scheitert eine Datenflussausführung beim ersten erhaltenen Fehler. Sie können die Option Bei Fehler fortsetzen auswählen, die einen Abschluss des Datenflusses auch dann ermöglicht, wenn einzelne Zeilen Fehler aufweisen. Der Dienst bietet Ihnen verschiedene Optionen, mit denen Sie diese Fehlerzeilen behandeln können.

Transaktionscommit: Wählen Sie aus, ob Ihre Daten in einer einzelnen Transaktion oder in Batches geschrieben werden. Eine einzelne Transaktion führt zu einer besseren Leistung, und es werden keine geschriebenen Daten für andere sichtbar gemacht, bis die Transaktion abgeschlossen ist. Batchtransaktionen haben eine schlechtere Leistung, können aber für große Datasets verwendet werden.

Ausgabe abgelehnter Daten: Wenn diese Option aktiviert ist, können Sie die Fehlerzeilen in eine CSV-Datei in einem Azure Blob Storage oder einem Azure Data Lake Storage Gen2 Konto Ihrer Wahl ausgeben. Dadurch werden die Fehlerzeilen mit drei zusätzlichen Spalten geschrieben: dem SQL-Vorgang wie INSERT oder UPDATE, dem Datenfluss-Fehlercode und der Fehlermeldung für die Zeile.

Bericht bei Fehler als erfolgreich markieren: Wenn diese Option aktiviert ist, wird der Datenfluss als erfolgreich markiert, auch wenn Fehlerzeilen gefunden werden.

Abbildung: Fehlerzeilenverarbeitung bei der Senkentransformation in einem Zuordnungsdatenfluss

Eigenschaften der Lookup-Aktivität

Ausführliche Informationen zu den Eigenschaften finden Sie unter Lookup-Aktivität.

Eigenschaften der GetMetadata-Aktivität

Ausführliche Informationen zu den Eigenschaften finden Sie unter GetMetadata-Aktivität.

Datentypzuordnung für Azure Synapse Analytics

Wenn Sie Daten aus oder in Azure Synapse Analytics kopieren, werden die folgenden Zuordnungen aus Azure Synapse Analytics Datentypen zu Azure Data Factory Zwischendatentypen verwendet. Diese Zuordnungen werden auch verwendet, wenn Daten aus oder in Azure Synapse Analytics mithilfe von Synapse-Pipelines kopiert werden, da Pipelines auch Azure Data Factory in Azure Synapse implementieren. Unter Schema- und Datentypzuordnungen erfahren Sie, wie Sie Aktivitätszuordnungen für Quellschema und Datentyp in die Senke kopieren.

Tipp

Lesen Sie im Artikel Table-Datentypen in Azure Synapse Analytics, über die in Azure Synapse Analytics unterstützten Datentypen sowie über die Problemumgehungen für nicht unterstützte Datentypen.

Azure Synapse Analytics Datentyp Data Factory-Zwischendatentyp
BIGINT Int64
BINARY Byte[]
bit Boolean
char String; Char[]
date Datetime
Datetime Datetime
datetime2 Datetime
Datetimeoffset DateTimeOffset
Decimal Decimal
FILESTREAM-Attribut (varbinary(max)) Byte[]
Float Double
image Byte[]
INT Int32
money Decimal
NCHAR String; Char[]
NUMERIC Decimal
NVARCHAR String; Char[]
real Single
rowversion Byte[]
smalldatetime Datetime
SMALLINT Int16
SMALLMONEY Decimal
time TimeSpan
TINYINT Byte
UNIQUEIDENTIFIER Guid
varbinary Byte[]
varchar String; Char[]

Aktualisieren der Azure Synapse Analytics-Version

Um die Azure Synapse Analytics-Version zu aktualisieren, führen Sie auf der Seite Edit linked service wählen Sie Recommended unter Version aus, und konfigurieren Sie den verknüpften Dienst, indem Sie auf Linked-Diensteigenschaften für die empfohlene Version verweisen.

Die folgende Tabelle zeigt die Unterschiede zwischen Azure Synapse Analytics unter Verwendung von der empfohlenen und der Legacyversion.

Empfohlene Version Legacy-Version
Unterstützung von TLS 1.3 über encrypt als strict. TLS 1.3 wird nicht unterstützt.

Eine Liste der Datenspeicher, die als Quellen und Senken für die Kopieraktivität unterstützt werden, finden Sie unter Unterstützte Datenspeicher und Formate.