Gegevens kopiëren en transformeren in Azure SQL Database met behulp van Azure Data Factory of Azure Synapse Analytics

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

In dit artikel wordt beschreven hoe u kopieeractiviteit gebruikt in Azure Data Factory- of Azure Synapse-pijplijnen om gegevens van en naar Azure SQL Database te kopiëren, en hoe u Data Flow gebruikt om gegevens in een Azure SQL Database. Lees voor meer informatie het inleidende artikel voor Azure Data Factory of Azure Synapse Analytics.

Ondersteunde mogelijkheden

Deze Azure SQL Database-connector wordt ondersteund voor de volgende activiteiten:

Voor Copy-activiteit ondersteunt Azure SQL Database deze functies:

  • Gegevens kopiëren met behulp van SQL verificatie en Azure Active Directory (Azure AD)-toepassings-tokenverificatie met een service-principal of beheerde identiteiten voor Azure-resources.
  • Als bron kunt u gegevens ophalen met behulp van een SQL query of een opgeslagen procedure. U kunt er ook voor kiezen om parallel te kopiëren vanuit Azure SQL Database bron. Zie de sectie Parallel kopiëren SQL database voor meer informatie.
  • Als sink maakt u automatisch een doeltabel als deze niet bestaat op basis van het bronschema; het toevoegen van gegevens aan een tabel of het aanroepen van een opgeslagen procedure met aangepaste logica tijdens het kopiëren.

Als u Azure SQL Database serverlozelaag gebruikt, moet u er rekening mee houden dat wanneer de server is onderbroken, de activiteit niet kan worden uitgevoerd in plaats van te wachten tot de automatische hervatting gereed is. U kunt activiteiten opnieuw proberen of extra activiteiten aan een keten toevoegen om ervoor te zorgen dat de server live is na de daadwerkelijke uitvoering.

Belangrijk

Als u gegevens kopieert met behulp van de Azure Integration Runtime, configureert u een firewallregel op serverniveau zodat Azure-services toegang hebben tot de server. Als u gegevens kopieert met behulp van een zelf-hostende Integration Runtime, configureert u de firewall om het juiste IP-bereik toe te staan. Dit bereik omvat het IP-adres van de computer dat wordt gebruikt om verbinding te maken met Azure SQL Database.

Aan de slag

Als u de kopieeractiviteit wilt uitvoeren met een pijplijn, kunt u een van de volgende hulpprogramma's of SDK's gebruiken:

Een gekoppelde Azure SQL Database maken met behulp van de gebruikersinterface

Gebruik de volgende stappen om een gekoppelde service Azure SQL Database maken in Azure Portal gebruikersinterface.

  1. Blader naar het tabblad Beheren in uw Azure Data Factory of Synapse-werkruimte, selecteer Gekoppelde services en klik vervolgens op Nieuw:

  2. Zoek naar SQL en selecteer de Azure SQL Database connector.

    Selecteer Azure SQL Database connector.

  3. Configureer de servicegegevens, test de verbinding en maak de nieuwe gekoppelde service.

    Schermopname van de configuratie voor Azure SQL Database gekoppelde service.

Configuratiedetails van connector

De volgende secties bieden details over eigenschappen die worden gebruikt voor het definiëren van Azure Data Factory of Synapse-pijplijnentiteiten die specifiek zijn voor een Azure SQL Database-connector.

Eigenschappen van gekoppelde service

Deze eigenschappen worden ondersteund voor een gekoppelde Azure SQL Database service:

Eigenschap Beschrijving Vereist
type De eigenschap type moet worden ingesteld op AzureSqlDatabase. Ja
connectionString Geef de informatie op die nodig is om verbinding te maken met Azure SQL Database-exemplaar voor de eigenschap connectionString.
U kunt ook een wachtwoord of service-principalsleutel in een Azure Key Vault. Als dit een SQL is, haalt u de configuratie password uit de connection string. Zie het JSON-voorbeeld na de tabel en Referenties opslaan in Azure Key Vault.
Yes
servicePrincipalId Geef de client-id van de toepassing op. Ja, wanneer u Azure AD-verificatie gebruikt met een service-principal
servicePrincipalKey Geef de sleutel van de toepassing op. Markeer dit veld als SecureString om het veilig op te slaan of te verwijzen naar een geheim dat isopgeslagen in Azure Key Vault . Ja, wanneer u Azure AD-verificatie gebruikt met een service-principal
tenant Geef de tenantgegevens op, zoals de domeinnaam of tenant-id, waaronder uw toepassing zich bevindt. Haal deze op door de muisaanwijzer in de rechterbovenhoek van de Azure Portal. Ja, wanneer u Azure AD-verificatie gebruikt met een service-principal
azureCloudType Geef voor verificatie van de service-principal het type Azure-cloudomgeving op waarvoor uw Azure AD-toepassing is geregistreerd.
Toegestane waarden zijn AzurePublic, AzureChina, AzureUsGovernment en AzureGermany. Standaard wordt de data factory cloudomgeving van de Synapse-pijplijn gebruikt.
No
alwaysEncryptedSettings Geef alwaysencryptedsettings-informatie op die nodig is om Always Encrypted in staat te stellen gevoelige gegevens te beveiligen die zijn opgeslagen op SQL-server met behulp van een beheerde identiteit of service-principal. Zie het JSON-voorbeeld na de tabel en de sectie Always Encrypted gebruiken voor meer informatie. Als dit niet wordt opgegeven, wordt de standaardinstelling Always Encrypted uitgeschakeld. No
connectVia Deze integratieruntime wordt gebruikt om verbinding te maken met het gegevensopslag. U kunt de Azure Integration Runtime of een zelf-hostende Integration Runtime gebruiken als uw gegevensopslag zich in een particulier netwerk bevindt. Als dit niet wordt opgegeven, wordt de standaard Azure Integration Runtime gebruikt. No

Notitie

Azure SQL Database Always Encrypted wordt niet ondersteund in de gegevensstroom.

Raadpleeg voor verschillende verificatietypen respectievelijk de volgende secties over vereisten en JSON-voorbeelden:

Tip

Als u een fout krijgt met de foutcode UserErrorFailedToConnectToSqlServer en een bericht als 'De sessielimiet voor de database is XXX en is bereikt', voegt u toe aan uw connection string en probeert u het Pooling=false opnieuw. Pooling=false wordt ook aanbevolen voor het instellen van een gekoppelde service van Integration Runtime SHIR(Zelf-hostend Integration Runtime). Pooling en andere verbindingsparameters kunnen worden toegevoegd als nieuwe parameternamen en -waarden in de sectie Aanvullende verbindingseigenschappen van het formulier voor het maken van een gekoppelde service.

SQL-verificatie

Voorbeeld: verificatie SQL gebruiken

{
    "name": "AzureSqlDbLinkedService",
    "properties": {
        "type": "AzureSqlDatabase",
        "typeProperties": {
            "connectionString": "Data Source=tcp:<servername>.database.windows.net,1433;Initial Catalog=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Voorbeeld: wachtwoord in Azure Key Vault

{
    "name": "AzureSqlDbLinkedService",
    "properties": {
        "type": "AzureSqlDatabase",
        "typeProperties": {
            "connectionString": "Data Source=tcp:<servername>.database.windows.net,1433;Initial Catalog=<databasename>;User ID=<username>@<servername>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30",
            "password": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "<Azure Key Vault linked service name>",
                    "type": "LinkedServiceReference"
                },
                "secretName": "<secretName>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Voorbeeld: Gebruik Always Encrypted

{
    "name": "AzureSqlDbLinkedService",
    "properties": {
        "type": "AzureSqlDatabase",
        "typeProperties": {
            "connectionString": "Data Source=tcp:<servername>.database.windows.net,1433;Initial Catalog=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
        },
        "alwaysEncryptedSettings": {
            "alwaysEncryptedAkvAuthType": "ServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Verificatie van service-principal

Volg deze stappen voor het gebruik van een azure AD-toepassings-tokenverificatie op basis van een service-principal:

  1. Maak een Azure Active Directory van de Azure Portal. Noteer de naam van de toepassing en de volgende waarden die de gekoppelde service definiëren:

    • Toepassings-id
    • Toepassingssleutel
    • Tenant-id
  2. Inrichten Azure Active Directory beheerder voor uw server op de Azure Portal als u dit nog niet hebt gedaan. De Azure AD-beheerder moet een Azure AD-gebruiker of Azure AD-groep zijn, maar dit kan geen service-principal zijn. Deze stap wordt uitgevoerd zodat u in de volgende stap een Azure AD-identiteit kunt gebruiken om een ingesloten databasegebruiker voor de service-principal te maken.

  3. Maak ingesloten databasegebruikers voor de service-principal. Verbinding maken naar de database van of waaruit u gegevens wilt kopiëren met behulp van hulpprogramma's zoals SQL Server Management Studio, met een Azure AD-identiteit met ten minste ALTER ANY USER-machtiging. Voer de volgende T-SQL:

    CREATE USER [your application name] FROM EXTERNAL PROVIDER;
    
  4. Verleen de service-principal de benodigde machtigingen zoals u normaal gesproken SQL gebruikers of anderen. Voer de volgende code uit. Zie dit document voor meer opties.

    ALTER ROLE [role name] ADD MEMBER [your application name];
    
  5. Configureer Azure SQL Database gekoppelde service in een Azure Data Factory of Synapse-werkruimte.

Voorbeeld van gekoppelde service die gebruikmaakt van verificatie van service-principals

{
    "name": "AzureSqlDbLinkedService",
    "properties": {
        "type": "AzureSqlDatabase",
        "typeProperties": {
            "connectionString": "Data Source=tcp:<servername>.database.windows.net,1433;Initial Catalog=<databasename>;Connection Timeout=30",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Beheerde identiteiten voor verificatie van Azure-resources

Een data factory of Synapse-werkruimte kan worden gekoppeld aan een beheerde identiteit voor Azure-resources die de service vertegenwoordigt bij het verifiëren bij andere resources in Azure. U kunt deze beheerde identiteit gebruiken voor Azure SQL Database verificatie. De aangewezen factory of Synapse-werkruimte kan gegevens van of naar uw database openen en kopiëren met behulp van deze identiteit.

Volg deze stappen om verificatie van beheerde identiteiten te gebruiken.

  1. Een Azure Active Directory-beheerder inrichten voor uw server op Azure Portal als u dit nog niet hebt gedaan. De Azure AD-beheerder kan een Azure AD-gebruiker of een Azure AD-groep zijn. Als u de groep met beheerde identiteit een beheerdersrol verleent, slaat u stap 3 en 4 over. De beheerder heeft volledige toegang tot de database.

  2. Maak ingesloten databasegebruikers voor de beheerde identiteit. Verbinding maken naar de database van of waaruit u gegevens wilt kopiëren met behulp van hulpprogramma's zoals SQL Server Management Studio, met een Azure AD-identiteit met ten minste ALTER ANY USER-machtiging. Voer de volgende T-SQL:

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Verleen de beheerde identiteit machtigingen die u nodig hebt, zoals u normaal gesproken SQL gebruikers en anderen. Voer de volgende code uit. Zie dit document voor meer opties.

    ALTER ROLE [role name] ADD MEMBER [your_resource_name];
    
  4. Configureer een Azure SQL Database gekoppelde service.

Voorbeeld

{
    "name": "AzureSqlDbLinkedService",
    "properties": {
        "type": "AzureSqlDatabase",
        "typeProperties": {
            "connectionString": "Data Source=tcp:<servername>.database.windows.net,1433;Initial Catalog=<databasename>;Connection Timeout=30"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Eigenschappen van gegevensset

Zie Gegevenssets voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van gegevenssets.

De volgende eigenschappen worden ondersteund voor Azure SQL Database gegevensset:

Eigenschap Beschrijving Vereist
type De eigenschap type van de gegevensset moet worden ingesteld op AzureSqlTable. Yes
schema Naam van het schema. Nee voor bron, Ja voor sink
tabel Naam van de tabel/weergave. Nee voor bron, Ja voor sink
tableName Naam van de tabel/weergave met schema. Deze eigenschap wordt ondersteund voor achterwaartse compatibiliteit. Gebruik en voor een nieuwe schema table workload. Nee voor bron, Ja voor sink

Voorbeeld van eigenschappen van gegevensset

{
    "name": "AzureSQLDbDataset",
    "properties":
    {
        "type": "AzureSqlTable",
        "linkedServiceName": {
            "referenceName": "<Azure SQL Database linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Eigenschappen van de kopieeractiviteit

Zie Pijplijnen voor een volledige lijst met secties en eigenschappen die beschikbaar zijn voor het definiëren van activiteiten. Deze sectie bevat een lijst met eigenschappen die worden ondersteund door Azure SQL Database bron en sink.

Azure SQL Database als de bron

Tip

Als u gegevens uit een Azure SQL Database wilt laden met behulp van gegevenspartities, kunt u meer informatie vinden in Parallel kopiëren SQL database.

Als u gegevens wilt kopiëren Azure SQL Database, worden de volgende eigenschappen ondersteund in de sectie bron van kopieeractiviteit:

Eigenschap Beschrijving Vereist
type De eigenschap type van de bron van de kopieeractiviteit moet worden ingesteld op AzureSqlSource. Het type SqlSource wordt nog steeds ondersteund voor achterwaartse compatibiliteit. Yes
sqlReaderQuery Deze eigenschap maakt gebruik van de aangepaste SQL om gegevens te lezen. Een voorbeeld is select * from MyTable. No
sqlReaderStoredProcedureName De naam van de opgeslagen procedure die gegevens uit de brontabel leest. De laatste SQL moet een SELECT-instructie zijn in de opgeslagen procedure. No
storedProcedureParameters Parameters voor de opgeslagen procedure.
Toegestane waarden zijn naam- of waardeparen. De namen en het casing van parameters moeten overeenkomen met de namen en het casing-gebruik van de opgeslagen procedureparameters.
No
isolationLevel Hiermee geeft u het transactievergrendelingsgedrag voor de SQL bron. De toegestane waarden zijn: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Als dit niet wordt opgegeven, wordt het standaardisolatieniveau van de database gebruikt. Raadpleeg dit document voor meer informatie. No
partitionOptions Hiermee geeft u de opties voor gegevenspartities op die worden gebruikt voor het laden van gegevens Azure SQL Database.
Toegestane waarden zijn: Geen (standaard), PhysicalPartitionsOfTable en DynamicRange.
Wanneer een partitieoptie is ingeschakeld (dat wil zeggen, niet ), wordt de mate van parallelle activiteit voor het gelijktijdig laden van gegevens uit een Azure SQL Database bepaald door de instelling van de None parallelCopies kopieeractiviteit.
No
partitionSettings Geef de groep instellingen voor gegevenspartities op.
Pas toe wanneer de partitieoptie niet None is.
No
Onder partitionSettings :
partitionColumnName Geef de naam op van de bronkolom in geheel getal of datum/datum-tijdtype ( , , , , , , , of ) die wordt gebruikt door bereikpartities voor int smallint parallelle bigint date smalldatetime datetime datetime2 datetimeoffset kopie. Als dit niet wordt opgegeven, wordt de index of de primaire sleutel van de tabel automatisch gedetecteerd en gebruikt als de partitiekolom.
Pas toe wanneer de partitieoptie DynamicRange is. Als u een query gebruikt om de brongegevens op te halen, sluit u ?AdfDynamicRangePartitionCondition de WHERE-component aan. Zie de sectie Parallel kopiëren uit SQL database voor een voorbeeld.
No
partitionUpperBound De maximumwaarde van de partitiekolom voor het splitsen van het partitiebereik. Deze waarde wordt gebruikt om de partitie te bepalen, niet om de rijen in tabel te filteren. Alle rijen in de tabel of het queryresultaat worden gepartitiefd en gekopieerd. Als dit niet is opgegeven, detecteert de kopieeractiviteit automatisch de waarde.
Pas toe wanneer de partitieoptie DynamicRange is. Zie voor een voorbeeld de sectie Parallel kopiëren SQL database.
No
partitionLowerBound De minimumwaarde van de partitiekolom voor het splitsen van het partitiebereik. Deze waarde wordt gebruikt om de partitie te bepalen en niet om de rijen in tabel te filteren. Alle rijen in de tabel of het queryresultaat worden gepartitief en gekopieerd. Als dit niet wordt opgegeven, wordt de waarde automatisch gedetecteerd door de kopieeractiviteit.
Pas toe wanneer de partitieoptie DynamicRange is. Zie voor een voorbeeld de sectie Parallel kopiëren SQL database.
No

Houd rekening met de volgende punten:

  • Als sqlReaderQuery is opgegeven voor AzureSqlSource, voert de kopieeractiviteit deze query uit op de Azure SQL Database-bron om de gegevens op te halen. U kunt ook een opgeslagen procedure opgeven door sqlReaderStoredProcedureName en opgeslagenProcedureParameters op te geven als de opgeslagen procedure parameters gebruikt.
  • Wanneer u opgeslagen procedure in de bron gebruikt om gegevens op te halen, houd er rekening mee dat als uw opgeslagen procedure is ontworpen als het retourneren van een ander schema wanneer er een andere parameterwaarde wordt doorgegeven, er mogelijk een fout of onverwacht resultaat wordt weergegeven bij het importeren van een schema uit de gebruikersinterface of bij het kopiëren van gegevens naar een SQL-database met het automatisch maken van een tabel.

SQL queryvoorbeeld

"activities":[
    {
        "name": "CopyFromAzureSQLDatabase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<Azure SQL Database input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzureSqlSource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Voorbeeld van een opgeslagen procedure

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

Definitie van opgeslagen procedure

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 SQL Database als de sink

Tip

Meer informatie over het ondersteunde schrijfgedrag, configuraties en best practices van Best practice voor het ladenvan gegevens in Azure SQL Database .

Als u gegevens wilt kopiëren naar Azure SQL Database, worden de volgende eigenschappen ondersteund in de sectie sink voor kopieeractiviteit:

Eigenschap Beschrijving Vereist
type De eigenschap type van de sink voor kopieeractiviteit moet worden ingesteld op AzureSqlSink. Het type SqlSink wordt nog steeds ondersteund voor achterwaartse compatibiliteit. Yes
preCopyScript Geef een SQL op voor de kopieeractiviteit die moet worden uitgevoerd voordat u gegevens naar Azure SQL Database. Deze wordt slechts één keer per kopieerrun aangeroepen. Gebruik deze eigenschap om de vooraf geladen gegevens op te schonen. No
tableOption Hiermee geeft u op of de sinktabel automatisch moet worden gemaakt als deze niet bestaat op basis van het bronschema.
Het automatisch maken van een tabel wordt niet ondersteund wanneer sink opgeslagen procedure specificeert.
Toegestane waarden zijn: none (standaard), autoCreate .
No
sqlWriterStoredProcedureName De naam van de opgeslagen procedure die definieert hoe brongegevens moeten worden toegepast op een doeltabel.
Deze opgeslagen procedure wordt per batch aangeroepen. Gebruik de eigenschap voor bewerkingen die slechts één keer worden uitgevoerd en niets te maken hebben met brongegevens, bijvoorbeeld verwijderen of preCopyScript afkapen.
Zie voorbeeld van Een opgeslagen procedure aanroepen vanuit een SQL sink.
No
storedProcedureTableTypeParameterName De parameternaam van het tabeltype dat is opgegeven in de opgeslagen procedure. No
sqlWriterTableType De tabeltypenaam die moet worden gebruikt in de opgeslagen procedure. De kopieeractiviteit maakt de gegevens die worden verplaatst beschikbaar in een tijdelijke tabel met dit tabeltype. Opgeslagen procedurecode kan vervolgens de gegevens samenvoegen die worden gekopieerd met bestaande gegevens. No
storedProcedureParameters Parameters voor de opgeslagen procedure.
Toegestane waarden zijn naam- en waardeparen. Namen en casing van parameters moeten overeenkomen met de namen en het casing-gebruik van de opgeslagen procedureparameters.
No
writeBatchSize Het aantal rijen dat moet worden invoegen in de SQL tabel per batch.
De toegestane waarde is een geheel getal (aantal rijen). De service bepaalt standaard dynamisch de juiste batchgrootte op basis van de rijgrootte.
No
writeBatchTimeout De wachttijd voor de batch-invoegbewerking voordat er een time-out is.
De toegestane waarde is de periode. Een voorbeeld is '00:30:00' (30 minuten).
No
disableMetricsCollection De service verzamelt metrische gegevens zoals Azure SQL Database DTI's voor optimalisatie van kopieerprestaties en aanbevelingen, waardoor extra master DB-toegang wordt toegevoegd. Als u zich zorgen maakt over dit gedrag, geeft u true op om dit uit te schakelen. Nee (standaard is false )
maxConcurrentConnections De bovengrens van gelijktijdige verbindingen die tijdens de activiteitsrun tot stand zijn gebracht met het gegevensopslag. Geef alleen een waarde op als u gelijktijdige verbindingen wilt beperken. No

Voorbeeld 1: Gegevens append

"activities":[
    {
        "name": "CopyToAzureSQLDatabase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure SQL Database output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureSqlSink",
                "tableOption": "autoCreate",
                "writeBatchSize": 100000
            }
        }
    }
]

Voorbeeld 2: Een opgeslagen procedure aanroepen tijdens het kopiëren

Meer informatie kunt u vinden in Een opgeslagen procedure aanroepen vanuit een SQL sink.

"activities":[
    {
        "name": "CopyToAzureSQLDatabase",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure SQL Database output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureSqlSink",
                "sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
                "storedProcedureTableTypeParameterName": "MyTable",
                "sqlWriterTableType": "MyTableType",
                "storedProcedureParameters": {
                    "identifier": { "value": "1", "type": "Int" },
                    "stringData": { "value": "str1" }
                }
            }
        }
    }
]

Parallel kopiëren uit SQL database

De Azure SQL Database-connector in kopieeractiviteit biedt ingebouwde gegevenspartities om gegevens parallel te kopiëren. U vindt opties voor gegevenspartities op het tabblad Bron van de kopieeractiviteit.

Schermopname van partitieopties

Wanneer u gepartitief kopiëren inschakelen, kopieeractiviteit parallelle query's uitgevoerd op uw Azure SQL Database om gegevens te laden door partities. De parallelle graad wordt bepaald door de parallelCopies instelling van de kopieeractiviteit. Als u bijvoorbeeld in stelt op vier, genereert en voert de service gelijktijdig vier query's uit op basis van de opgegeven partitieoptie en -instellingen, en haalt elke query een deel van de gegevens op uit uw parallelCopies Azure SQL Database.

U wordt aangeraden om parallel kopiëren met gegevenspartities in te stellen, met name wanneer u grote hoeveelheden gegevens uit uw Azure SQL Database. Hier volgen voorgestelde configuraties voor verschillende scenario's. Wanneer u gegevens kopieert naar een gegevensopslag op basis van bestanden, is het raadzaam om als meerdere bestanden naar een map te schrijven (alleen mapnaam opgeven). In dat geval zijn de prestaties beter dan het schrijven naar één bestand.

Scenario Aanbevolen instellingen
Volledige belasting van grote tabel, met fysieke partities. Partitieoptie: fysieke partities van tabel.

Tijdens de uitvoering detecteert de service automatisch de fysieke partities en kopieert deze gegevens per partitie.

Als u wilt controleren of uw tabel al dan niet een fysieke partitie heeft, raadpleegt u deze query.
Volledige belasting van grote tabel, zonder fysieke partities, met een geheel getal of datum/tijd-kolom voor het partitioneren van gegevens. Partitieopties: dynamische bereikpartitie.
Partitiekolom (optioneel): geef de kolom op die wordt gebruikt om gegevens te partitioneren. Als dit niet wordt opgegeven, wordt de kolom met de index of primaire sleutel gebruikt.
Partitie bovengrens en partitie ondergrens (optioneel): geef op of u de partitie-stap wilt bepalen. Dit is niet voor het filteren van de rijen in tabel. Alle rijen in de tabel worden gepartitief en gekopieerd. Als dit niet is opgegeven, worden de waarden automatisch gedetecteerd door de kopieeractiviteit.

Als de partitiekolom 'ID' bijvoorbeeld waarden heeft van 1 tot 100 en u de ondergrens in stelt als 20 en de bovengrens als 80, met parallelle kopie als 4, haalt de service gegevens op met 4 partities - id's in bereik <= 20, [21, 50], [51, 80] en >=81.
Laad een grote hoeveelheid gegevens met behulp van een aangepaste query, zonder fysieke partities, en met een geheel getal of een datum/datum/tijd-kolom voor het partitioneren van gegevens. Partitieopties: dynamische bereikpartitie.
Query: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause> .
Partitiekolom: geef de kolom op die wordt gebruikt om gegevens te partitioneren.
Partitie bovengrens en partitie ondergrens (optioneel): geef op of u de partitie-stap wilt bepalen. Dit is niet voor het filteren van de rijen in tabel. Alle rijen in het queryresultaat worden gepartitief en gekopieerd. Als dit niet wordt opgegeven, wordt de waarde automatisch gedetecteerd door de kopieeractiviteit.

Tijdens de uitvoering vervangt de service door de werkelijke kolomnaam en waardebereiken voor elke partitie en verzendt ?AdfRangePartitionColumnName deze naar Azure SQL Database.
Als uw partitiekolom 'ID' bijvoorbeeld waarden heeft van 1 tot 100 en u de ondergrens in stelt als 20 en de bovengrens als 80, met parallelle kopie als 4, haalt de service gegevens op met 4 partities- id's in bereik <= 20, [21, 50], [51, 80] en >=81.

Hier zijn meer voorbeeldquery's voor verschillende scenario's:
1. Een query uitvoeren op de hele tabel:
SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition
2. Een query uitvoeren vanuit een tabel met kolomselectie en aanvullende where-componentfilters:
SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Query's uitvoeren met subquery's:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. Query uitvoeren met partitie in subquery:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T

Best practices voor het laden van gegevens met partitieoptie:

  1. Kies een kolom als partitiekolom (zoals primaire sleutel of unieke sleutel) om scheefheid van gegevens te voorkomen.
  2. Als de tabel een ingebouwde partitie heeft, gebruikt u partitieoptie Fysieke partities van tabel voor betere prestaties.
  3. Als u Azure Integration Runtime gegevens kopieert, kunt u grotere 'Data Integration Units (DIU)( >4) instellen om meer rekenresources te gebruiken. Controleer hier de toepasselijke scenario's.
  4. "Mate vanparallellisme kopiëren " controle over de partitienummers, het instellen van dit aantal te groot enige tijd de prestaties, raden aan dit aantal in te stellen als (DIU of het aantal zelf-hostende IR-knooppunten) * (2 tot 4).

Voorbeeld: volledige belasting van grote tabel met fysieke partities

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

Voorbeeld: query uitvoeren met dynamische bereikpartitie

"source": {
    "type": "AzureSqlSource",
    "query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition 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>"
    }
}

Voorbeeldquery om fysieke partitie te controleren

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') 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.partition_schemes ps ON i.data_space_id = ps.data_space_id 
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id 
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Als de tabel een fysieke partitie heeft, ziet u 'HasPartition' als 'ja' zoals hieronder.

Sql-queryresultaat

Best practice voor het laden van gegevens in Azure SQL Database

Wanneer u gegevens kopieert naar Azure SQL Database, hebt u mogelijk ander schrijfgedrag nodig:

  • Append:Mijn brongegevens hebben alleen nieuwe records.
  • Upsert:Mijn brongegevens bevatten zowel invoegingen als updates.
  • Overschrijven:ik wil elke keer een volledige dimensietabel opnieuw laden.
  • Schrijven met aangepaste logica:ik heb extra verwerking nodig vóór de laatste invoeging in de doeltabel.

Raadpleeg de desbetreffende secties over het configureren in de service en best practices.

Gegevens append

Het gebruik van gegevens is het standaardgedrag van Azure SQL Database sink-connector. De service voegt bulksgewijs gegevens in om efficiënt naar uw tabel te schrijven. U kunt de bron en sink dienovereenkomstig configureren in de kopieeractiviteit.

Upsert-gegevens

Optie 1: Wanneer u een grote hoeveelheid gegevens hebt om te kopiëren, kunt u alle records bulksgewijs laden in een faseringstabel met behulp van de kopieeractiviteit en vervolgens een opgeslagen procedureactiviteit uitvoeren om in één keer een MERGE- of INSERT/UPDATE-instructie toe te passen.

Copy-activiteit biedt momenteel geen systeemeigen ondersteuning voor het laden van gegevens in een tijdelijke tabel van een database. Er is een geavanceerde manier om deze in te stellen met een combinatie van meerdere activiteiten. Raadpleeg Optimize Azure SQL Database Bulk Upsert scenarios (Scenario's voor bulksgewijs upsert optimaliseren). Hieronder ziet u een voorbeeld van het gebruik van een permanente tabel als fasering.

U kunt bijvoorbeeld een pijplijn maken met een Copy-activiteit met een opgeslagen procedureactiviteit. De eerstgenoemde kopieert gegevens uit uw bronopslag naar een Azure SQL Database faseringstabel, bijvoorbeeld UpsertStagingTable, als de tabelnaam in de gegevensset. Vervolgens roept de laatste een opgeslagen procedure aan om brongegevens uit de faseringstabel samen te voegen in de doeltabel en de faseringstabel op te schonen.

Upsert

Definieer in uw database een opgeslagen procedure met MERGE-logica, zoals in het volgende voorbeeld, waar naar wordt gewezen vanuit de vorige opgeslagen procedureactiviteit. Stel dat het doel de tabel Marketing is met drie kolommen: ProfileID, State en Category. Doe de upsert op basis van de kolom ProfileID.

CREATE PROCEDURE [dbo].[spMergeData]
AS
BEGIN
   MERGE TargetTable AS target
   USING UpsertStagingTable AS source
   ON (target.[ProfileID] = source.[ProfileID])
   WHEN MATCHED THEN
      UPDATE SET State = source.State
    WHEN NOT matched THEN
       INSERT ([ProfileID], [State], [Category])
      VALUES (source.ProfileID, source.State, source.Category);
    TRUNCATE TABLE UpsertStagingTable
END

Optie 2: U kunt ervoor kiezen om een opgeslagen procedure aan te roepen binnen de kopieeractiviteit. Met deze methode wordt elke batch (zoals beheerd door de eigenschap) in de brontabel uitgevoerd in plaats van bulkinvoeging als de standaardbenadering in de writeBatchSize kopieeractiviteit te gebruiken.

Optie 3: U kunt Toewijzingsgegevens gebruiken Flow ingebouwde insert-/upsert-/updatemethoden biedt.

De hele tabel overschrijven

U kunt de eigenschap preCopyScript configureren in de sink voor kopieeractiviteiten. In dit geval voert de service voor elke kopieeractiviteit die wordt uitgevoerd het script eerst uit. Vervolgens wordt de kopie uitgevoerd om de gegevens in te voegen. Als u bijvoorbeeld de hele tabel wilt overschrijven met de meest recente gegevens, geeft u een script op om eerst alle records te verwijderen voordat u de nieuwe gegevens bulksgewijs uit de bron laadt.

Gegevens schrijven met aangepaste logica

De stappen voor het schrijven van gegevens met aangepaste logica zijn vergelijkbaar met de stappen die worden beschreven in de sectie Upsert-gegevens. Wanneer u extra verwerking moet toepassen vóór de laatste invoeging van brongegevens in de doeltabel, kunt u laden naar een faseringstabel en vervolgens opgeslagen procedureactiviteit aanroepen, of een opgeslagen procedure aanroepen in de sink voor kopieeractiviteit om gegevens toe te passen of Toewijzingsgegevens Flow.

Een opgeslagen procedure aanroepen vanuit een SQL sink

Wanneer u gegevens naar Azure SQL Database kopieert, kunt u ook een door de gebruiker opgegeven opgeslagen procedure configureren en aanroepen met aanvullende parameters voor elke batch van de brontabel. De opgeslagen procedurefunctie maakt gebruik van tabelwaardeparameters.

U kunt een opgeslagen procedure gebruiken wanneer ingebouwde kopieermechanismen niet het doel zijn. Een voorbeeld hiervan is wanneer u extra verwerking wilt toepassen vóór de laatste invoeging van brongegevens in de doeltabel. Enkele extra verwerkingsvoorbeelden zijn wanneer u kolommen wilt samenvoegen, extra waarden wilt zoeken en in meer dan één tabel wilt invoegen.

In het volgende voorbeeld ziet u hoe u een opgeslagen procedure gebruikt om een upsert uit te voeren in een tabel in Azure SQL Database. Stel dat de invoergegevens en de sinktabel Marketing elk drie kolommen hebben: ProfileID, State en Category. Doe de upsert op basis van de kolom ProfileID en pas deze alleen toe op een specifieke categorie met de naam 'ProductA'.

  1. Definieer in uw database het tabeltype met dezelfde naam als sqlWriterTableType. Het schema van het tabeltype is hetzelfde als het schema dat wordt geretourneerd door uw invoergegevens.

    CREATE TYPE [dbo].[MarketingType] AS TABLE(
        [ProfileID] [varchar](256) NOT NULL,
        [State] [varchar](256) NOT NULL,
        [Category] [varchar](256) NOT NULL
    )
    
  2. Definieer in uw database de opgeslagen procedure met dezelfde naam als sqlWriterStoredProcedureName. Hiermee worden invoergegevens van de opgegeven bron verwerkt en samengevoegd in de uitvoertabel. De parameternaam van het tabeltype in de opgeslagen procedure is hetzelfde als tableName die in de gegevensset is gedefinieerd.

    CREATE PROCEDURE spOverwriteMarketing @Marketing [dbo].[MarketingType] READONLY, @category varchar(256)
    AS
    BEGIN
    MERGE [dbo].[Marketing] AS target
    USING @Marketing AS source
    ON (target.ProfileID = source.ProfileID and target.Category = @category)
    WHEN MATCHED THEN
        UPDATE SET State = source.State
    WHEN NOT MATCHED THEN
        INSERT (ProfileID, State, Category)
        VALUES (source.ProfileID, source.State, source.Category);
    END
    
  3. Definieer in Azure Data Factory of Synapse-pijplijn de sectie SQL sink in de kopieeractiviteit als volgt:

    "sink": {
        "type": "AzureSqlSink",
        "sqlWriterStoredProcedureName": "spOverwriteMarketing",
        "storedProcedureTableTypeParameterName": "Marketing",
        "sqlWriterTableType": "MarketingType",
        "storedProcedureParameters": {
            "category": {
                "value": "ProductA"
            }
        }
    }
    

Eigenschappen van toewijzingsgegevensstromen

Bij het transformeren van gegevens in de toewijzingsgegevensstroom kunt u vanuit een tabel lezen en Azure SQL Database. Zie de brontransformatie en sinktransformatie in toewijzingsgegevensstromen voor meer informatie.

Brontransformatie

Instellingen specifiek voor Azure SQL Database zijn beschikbaar op het tabblad Bronopties van de brontransformatie.

Invoer: Selecteer of u uw bron naar een tabel (equivalent van ) of een Select * from <table-name> aangepaste query SQL voeren.

Query: als u Query selecteert in het invoerveld, voert u een SQL query voor uw bron in. Deze instelling overschrijven alle tabel die u hebt gekozen in de gegevensset. Order by-components worden hier niet ondersteund, maar u kunt een volledige SELECT FROM-instructie instellen. U kunt ook door de gebruiker gedefinieerde tabelfuncties gebruiken. select * in udfGetData() is een UDF in SQL die een tabel retourneert. Met deze query wordt een brontabel geproduceerd die u in uw gegevensstroom kunt gebruiken. Het gebruik van query's is ook een uitstekende manier om het aantal rijen voor testen of op zoekups te verminderen.

Opgeslagen procedure: kies deze optie als u een projectie en brongegevens wilt genereren op basis van een opgeslagen procedure die wordt uitgevoerd vanuit uw brondatabase. U kunt het schema, de procedurenaam en parameters typen of op Vernieuwen klikken om de service te vragen de schema's en procedurenamen te ontdekken. Vervolgens kunt u op Importeren klikken om alle procedureparameters te importeren met behulp van het formulier @paraName .

Opgeslagen procedure

  • SQL Voorbeeld:Select * from MyTable where customerId > 1000 and customerId < 2000
  • Geparameteriseerde SQL voorbeeld:"select * from {$tablename} where orderyear > {$year}"

Batchgrootte: voer een batchgrootte in om grote gegevens in lees- en leesgegevens te segmenten.

Isolatieniveau: de standaardinstelling voor SQL in toewijzingsgegevensstroom is niet-opgenomen lezen. U kunt het isolatieniveau hier wijzigen in een van deze waarden:

  • Vastgelegd lezen
  • Niet-opgenomen lezen
  • Herhaalbaar lezen
  • Serializable
  • Geen (isolatieniveau negeren)

Isolatieniveau

Sinktransformatie

Instellingen specifiek voor Azure SQL Database zijn beschikbaar op het Instellingen tabblad van de sinktransformatie.

Methode bijwerken: Hiermee bepaalt u welke bewerkingen zijn toegestaan op uw databasebestemming. De standaardwaarde is om alleen invoegingen toe te staan. Om rijen bij te werken, bij te werken of te verwijderen, is een alter-row-transformatie vereist om rijen voor deze acties te taggen. Voor updates, upserts en verwijderen moet een sleutelkolom of -kolommen worden ingesteld om te bepalen welke rij moet worden gewijzigd.

Sleutelkolommen

De kolomnaam die u hier als sleutel kiest, wordt door de service gebruikt als onderdeel van de volgende update, upsert, delete. Daarom moet u een kolom kiezen die bestaat in de Sink-toewijzing. Als u de waarde niet naar deze sleutelkolom wilt schrijven, klikt u op 'Sleutelkolommen schrijven overslaan'.

U kunt parameters opgeven voor de sleutelkolom die hier wordt gebruikt voor het bijwerken van Azure SQL Database doeltabel. Als u meerdere kolommen voor een samengestelde sleutel hebt, klikt u op Aangepaste expressie en kunt u dynamische inhoud toevoegen met behulp van de expressietaal van de gegevensstroom, die een matrix met tekenreeksen met kolomnamen voor een samengestelde sleutel kan bevatten.

Tabelactie: Hiermee bepaalt u of alle rijen uit de doeltabel moeten worden gemaakt of verwijderd vóór het schrijven.

  • Geen: er wordt geen actie uitgevoerd op de tabel.
  • Opnieuw maken: de tabel wordt uitgevallen en opnieuw gemaakt. Vereist als u een nieuwe tabel dynamisch maakt.
  • Afkapen: alle rijen uit de doeltabel worden verwijderd.

Batchgrootte: hiermee bepaalt u hoeveel rijen er in elke bucket worden geschreven. Grotere batchgrootten verbeteren compressie en geheugenoptimalisatie, maar lopen het risico op geheugen-uitzonderingen bij het opslaan van gegevens in de caching.

TempDB gebruiken: De service gebruikt standaard een tijdelijke globale tabel om gegevens op te slaan als onderdeel van het laadproces. U kunt ook de optie TempDB gebruiken uitvinken en in plaats daarvan de service vragen om de tijdelijke opslagtabel op te slaan in een gebruikersdatabase die zich bevindt in de database die wordt gebruikt voor deze sink.

Temp DB gebruiken

Pre- en Post-SQL scripts: voer SQL-scripts met meerdere lijnen in die worden uitgevoerd vóór (voorverwerking) en nadat (naverwerking) gegevens naar uw Sink-database worden geschreven

scripts voor pre- en post SQL verwerking

Verwerking van foutrijen

Bij het schrijven naar Azure SQL DB kunnen bepaalde rijen met gegevens mislukken vanwege beperkingen die zijn ingesteld door de bestemming. Enkele veelvoorkomende fouten zijn:

  • Tekenreeks- of binaire gegevens worden afgekapt in tabel
  • Kan de waarde NULL niet invoegen in kolom
  • De INSERT-instructie conflicteerde met de CHECK-beperking

Standaard mislukt het uitvoeren van een gegevensstroom bij de eerste fout die wordt weergegeven. U kunt ervoor kiezen om door te gaan bij een fout waardoor uw gegevensstroom kan worden voltooid, zelfs als afzonderlijke rijen fouten bevatten. De service biedt verschillende opties voor het afhandelen van deze foutrijen.

Transactie commit: Kies of uw gegevens worden geschreven in één transactie of in batches. Eén transactie levert slechtere prestaties op, maar er zijn geen geschreven gegevens zichtbaar voor anderen totdat de transactie is voltooid.

Geweigerde uitvoergegevens: Als deze optie is ingeschakeld, kunt u de foutrijen uitvoeren naar een CSV-bestand in Azure Blob Storage of een Azure Data Lake Storage Gen2-account van uw keuze. Hiermee worden de foutrijen met drie extra kolommen geschreven: de SQL bewerking zoals INSERT of UPDATE, de foutcode van de gegevensstroom en het foutbericht in de rij.

Rapporteren dat de fout is geslaagd: Als deze functie is ingeschakeld, wordt de gegevensstroom gemarkeerd als geslaagd, zelfs als er foutrijen worden gevonden.

Verwerking van foutrijen

Toewijzing van gegevenstype voor Azure SQL Database

Wanneer gegevens worden gekopieerd van of naar Azure SQL Database, worden de volgende toewijzingen gebruikt van Azure SQL Database gegevenstypen tot Azure Data Factory tussentijdse gegevenstypen. Dezelfde toewijzingen worden gebruikt door de Synapse-pijplijnfunctie, die de toewijzingen Azure Data Factory implementeert. Zie Schema- en gegevenstypetoewijzingen voor meer informatie over hoe de kopieeractiviteit het bronschema en gegevenstype toewijzingenaan de sink.

Azure SQL Database gegevenstype Data Factory tussentijds gegevenstype
bigint Int64
binair Byte[]
bit Booleaans
char Tekenreeks, Char[]
date DateTime
Datum/tijd DateTime
datetime2 DateTime
Datetimeoffset DateTimeOffset
Decimaal Decimaal
FileSTREAM-kenmerk (varbinary(max)) Byte[]
Float Dubbel
image Byte[]
int Int32
money Decimaal
nchar Tekenreeks, Char[]
ntext Tekenreeks, Char[]
numeriek Decimaal
nvarchar Tekenreeks, Char[]
werkelijk Enkelvoudig
rowversion Byte[]
smalldatetime DateTime
smallint Int16
smallmoney Decimaal
sql_variant Object
tekst Tekenreeks, Char[]
tijd TimeSpan
tijdstempel Byte[]
tinyint Byte
uniqueidentifier Guid
varbinary Byte[]
varchar Tekenreeks, Char[]
xml Tekenreeks

Notitie

Voor gegevenstypen die zijn toe te staan aan het tussentijdse decimale type, ondersteunt Copy-activiteit precisie tot 28. Als u gegevens hebt met een precisie die groter is dan 28, kunt u overwegen om te converteren naar een tekenreeks in SQL query.

Eigenschappen van opzoekactiviteit

Zie Opzoekactiviteit voor meer informatie over de eigenschappen.

Eigenschappen van GetMetadata-activiteit

Zie GetMetadata-activiteit voor meer informatie over de eigenschappen

Met Always Encrypted

Wanneer u gegevens kopieert van/naar SQL Server met Always Encrypted, volgt u de onderstaande stappen:

  1. Sla de Kolommastersleutel (CMK) op in Azure Key Vault. Meer informatie over het configureren van Always Encrypted met behulp van Azure Key Vault

  2. Zorg ervoor dat u goede toegang hebt tot de sleutelkluis waarin de kolommastersleutel (CMK) is opgeslagen. Raadpleeg dit artikel voor de vereiste machtigingen.

  3. Maak een gekoppelde service om verbinding te maken met SQL database en schakel de functie 'Always Encrypted' in met behulp van een beheerde identiteit of service-principal.

Notitie

SQL Server Always Encrypted biedt ondersteuning voor onderstaande scenario's:

  1. Bron- of sinkgegevensopslag gebruikt beheerde identiteit of service-principal als verificatietype van sleutelprovider.
  2. Zowel bron- als sinkgegevensopslag gebruikt een beheerde identiteit als verificatietype van de sleutelprovider.
  3. Zowel bron- als sinkgegevensopslag maakt gebruik van dezelfde service-principal als het verificatietype van de sleutelprovider.

Volgende stappen

Zie Ondersteunde gegevensopslagexemplaars en -indelingen voor een lijst met gegevensopslagexemplaars die worden ondersteund als bronnen en sinks door de kopieeractiviteit.