Gegevens kopiëren van en naar Azure SQL Database met behulp van Azure Data Factory

Notitie

Dit artikel is van toepassing op versie 1 van Data Factory. Als u de huidige versie van de Data Factory-service gebruikt, raadpleegt u Azure SQL Database connector in V2.

In dit artikel wordt uitgelegd hoe u de kopieeractiviteit in Azure Data Factory kunt gebruiken om gegevens naar en van Azure SQL Database te verplaatsen. Het bouwt voort op het artikel Gegevensverplaatsingsactiviteiten , waarin een algemeen overzicht van gegevensverplaatsing met de kopieeractiviteit wordt gepresenteerd.

Ondersteunde scenario's

U kunt gegevens kopiëren van Azure SQL Database naar de volgende gegevensarchieven:

Categorie Gegevensarchief
Azure Azure Blob Storage
Azure Data Lake Storage Gen1
Azure Cosmos DB (SQL API)
Azure SQL Database
Azure Synapse Analytics
Azure Cognitive Search-index
Azure Table storage
Databases SQL Server
Oracle
File Bestandssysteem

U kunt gegevens uit de volgende gegevensarchieven kopiëren naar Azure SQL Database:

Categorie Gegevensarchief
Azure Azure Blob Storage
Azure Cosmos DB (SQL API)
Azure Data Lake Storage Gen1
Azure SQL Database
Azure Synapse Analytics
Azure Table storage
Databases Amazon Redshift
DB2
MySQL
Oracle
PostgreSQL
SAP Business Warehouse
SAP HANA
SQL Server
Sybase
Teradata
NoSQL Cassandra
MongoDB
Bestand Amazon S3
Bestandssysteem
FTP
HDFS
SFTP
Andere Algemene HTTP
Algemene OData
Algemene ODBC
Salesforce
Webtabel (tabel van HTML)

Ondersteund verificatietype

Azure SQL Database connector ondersteunt basisverificatie.

Aan de slag

U kunt een pijplijn maken met een kopieeractiviteit die gegevens verplaatst naar/van een Azure SQL Database met behulp van verschillende hulpprogramma's/API's.

De eenvoudigste manier om een pijplijn te maken, is door de wizard Kopiëren te gebruiken. Zie Zelfstudie: Een pijplijn maken met de wizard Kopiëren voor een beknopt overzicht van het maken van een pijplijn met behulp van de wizard Gegevens kopiëren.

U kunt ook de volgende hulpprogramma's gebruiken om een pijplijn te maken: Visual Studio, Azure PowerShell, Azure Resource Manager-sjabloon, .NET API en REST API. Zie Copy-activiteit zelfstudie voor stapsgewijze instructies voor het maken van een pijplijn met een kopieeractiviteit.

Of u nu de hulpprogramma's of API's gebruikt, u voert de volgende stappen uit om een pijplijn te maken waarmee gegevens uit een brongegevensarchief worden verplaatst naar een sinkgegevensarchief:

  1. Een data factory maken. Een data factory kan een of meer pijplijnen bevatten.
  2. Maak gekoppelde services om invoer- en uitvoergegevensarchieven te koppelen aan uw data factory. Als u bijvoorbeeld gegevens kopieert van een Azure Blob-opslag naar Azure SQL Database, maakt u twee gekoppelde services om uw Azure-opslagaccount te koppelen en Azure SQL Database aan uw gegevensfactory. Zie de sectie Gekoppelde service-eigenschappen voor gekoppelde service-eigenschappen die specifiek zijn voor Azure SQL Database.
  3. Gegevenssets maken om invoer- en uitvoergegevens voor de kopieerbewerking weer te geven. In het voorbeeld dat in de laatste stap wordt vermeld, maakt u een gegevensset om de blobcontainer en -map op te geven die de invoergegevens bevat. En u maakt een andere gegevensset om de SQL tabel op te geven in Azure SQL Database waarin de gegevens zijn opgeslagen die zijn gekopieerd uit de blobopslag. Zie de sectie met eigenschappen van gegevenssets die specifiek zijn voor Azure Data Lake Store.
  4. Maak een pijplijn met een kopieeractiviteit die een gegevensset als invoer en een gegevensset als uitvoer gebruikt. In het eerder genoemde voorbeeld gebruikt u BlobSource als bron en SqlSink als sink voor de kopieeractiviteit. Op dezelfde manier gebruikt u SqlSource en BlobSink in de kopieeractiviteit als u van Azure SQL Database naar Azure Blob Storage kopieert. Zie de sectie Eigenschappen van kopieeractiviteit voor eigenschappen die specifiek zijn voor Azure SQL Database. Klik op de koppeling in de vorige sectie voor uw gegevensarchief voor meer informatie over het gebruik van een gegevensarchief als bron of sink.

Wanneer u de wizard gebruikt, worden JSON-definities voor deze Data Factory-entiteiten (gekoppelde services, gegevenssets en de pijplijn) automatisch voor u gemaakt. Wanneer u hulpprogramma's/API's (met uitzondering van .NET API) gebruikt, definieert u deze Data Factory-entiteiten met behulp van de JSON-indeling. Zie de sectie JSON-voorbeelden van dit artikel voor voorbeelden met JSON-definities voor Data Factory-entiteiten die worden gebruikt voor het kopiëren van gegevens naar/van een Azure SQL Database.

De volgende secties bevatten details over JSON-eigenschappen die worden gebruikt om Data Factory-entiteiten te definiëren die specifiek zijn voor Azure SQL Database:

Eigenschappen van gekoppelde service

Een Azure SQL gekoppelde service koppelt Azure SQL Database aan uw data factory. De volgende tabel bevat een beschrijving voor JSON-elementen die specifiek zijn voor Azure SQL gekoppelde service.

Eigenschap Beschrijving Vereist
type De typeeigenschap moet worden ingesteld op: AzureSqlDatabase Ja
connectionString Geef informatie op die nodig is om verbinding te maken met het Azure SQL Database exemplaar voor de eigenschap connectionString. Alleen basisverificatie wordt ondersteund. Yes

Belangrijk

Configureer Azure SQL Database Firewall de databaseserver om Azure-services toegang te geven tot de server. Als u gegevens kopieert naar Azure SQL Database van buiten Azure, inclusief on-premises gegevensbronnen met een data factory-gateway, configureert u bovendien het juiste IP-adresbereik voor de machine die gegevens naar Azure SQL Database verzendt.

Eigenschappen van gegevensset

Als u een gegevensset wilt opgeven die invoer- of uitvoergegevens in Azure SQL Database vertegenwoordigt, stelt u de typeeigenschap van de gegevensset in op: AzureSqlTable. Stel de eigenschap linkedServiceName van de gegevensset in op de naam van de Azure SQL gekoppelde service.

Zie het artikel Gegevenssets maken voor een volledige lijst met sectie-eigenschappen & die beschikbaar zijn voor het definiëren van gegevenssets. Secties zoals structuur, beschikbaarheid en beleid van een JSON-gegevensset zijn vergelijkbaar voor alle typen gegevenssets (Azure SQL, Azure Blob, Azure Table, enzovoort).

De sectie typeProperties verschilt voor elk type gegevensset en bevat informatie over de locatie van de gegevens in het gegevensarchief. De sectie typeProperties voor de gegevensset van het type AzureSqlTable heeft de volgende eigenschappen:

Eigenschap Beschrijving Vereist
tableName Naam van de tabel of weergave in het Azure SQL Database exemplaar waarnaar de gekoppelde service verwijst. Yes

Eigenschappen van de kopieeractiviteit

Zie het artikel Pijplijnen maken voor een volledige lijst met sectie-eigenschappen & die beschikbaar zijn voor het definiëren van activiteiten. Eigenschappen zoals naam, beschrijving, invoer- en uitvoertabellen en beleid zijn beschikbaar voor alle typen activiteiten.

Notitie

De kopieeractiviteit heeft slechts één invoer en produceert slechts één uitvoer.

Eigenschappen die beschikbaar zijn in de sectie typeProperties van de activiteit variëren per activiteitstype. Voor Copy-activiteit variëren ze afhankelijk van de typen bronnen en sinks.

Als u gegevens verplaatst van Azure SQL Database, stelt u het brontype in de kopieeractiviteit in op SqlSource. Als u gegevens naar Azure SQL Database verplaatst, stelt u het sinktype in de kopieeractiviteit in op SqlSink. Deze sectie bevat een lijst met eigenschappen die worden ondersteund door SqlSource en SqlSink.

SqlSource

Wanneer de bron van het type SqlSource is in kopieeractiviteit, zijn de volgende eigenschappen beschikbaar in de sectie typeProperties :

Eigenschap Beschrijving Toegestane waarden Vereist
sqlReaderQuery Gebruik de aangepaste query om gegevens te lezen. SQL queryreeks. Bijvoorbeeld: select * from MyTable. No
sqlReaderStoredProcedureName Naam van de opgeslagen procedure waarmee gegevens uit de brontabel worden gelezen. Naam van de opgeslagen procedure. De laatste SQL instructie moet een SELECT-instructie zijn in de opgeslagen procedure. No
storedProcedureParameters Parameters voor de opgeslagen procedure. Naam-/waardeparen. Namen en hoofdletters van parameters moeten overeenkomen met de namen en hoofdletters van de opgeslagen procedureparameters. No

Als de sqlReaderQuery is opgegeven voor sqlSource, 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 de sqlReaderStoredProcedureName en storedProcedureParameters op te geven (als de opgeslagen procedure parameters gebruikt).

Als u niet sqlReaderQuery of sqlReaderStoredProcedureName opgeeft, worden de kolommen die zijn gedefinieerd in de structuursectie van de JSON-gegevensset gebruikt om een query te maken (select column1, column2 from mytable) om uit te voeren op de Azure SQL Database. Als de definitie van de gegevensset niet de structuur heeft, worden alle kolommen uit de tabel geselecteerd.

Notitie

Wanneer u sqlReaderStoredProcedureName gebruikt, moet u nog steeds een waarde opgeven voor de eigenschap tableName in de JSON van de gegevensset. Er zijn echter geen validaties uitgevoerd voor deze tabel.

SqlSource-voorbeeld

"source": {
    "type": "SqlSource",
    "sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
    "storedProcedureParameters": {
        "stringData": { "value": "str3" },
        "identifier": { "value": "$$Text.Format('{0:yyyy}', SliceStart)", "type": "Int"}
    }
}

De definitie van de 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

SqlSink

SqlSink ondersteunt de volgende eigenschappen:

Eigenschap Beschrijving Toegestane waarden Vereist
writeBatchTimeout Wachttijd voordat de batch-invoegbewerking is voltooid voordat er een time-out optreedt. tijdsbestek

Voorbeeld: "00:30:00" (30 minuten).
No
writeBatchSize Hiermee worden gegevens in de SQL tabel ingevoegd wanneer de buffergrootte writeBatchSize bereikt. Geheel getal (aantal rijen) Nee (standaard: 10000)
sqlWriterCleanupScript Geef een query op voor kopieeractiviteit die moet worden uitgevoerd, zodat de gegevens van een specifiek segment worden opgeschoond. Zie herhaalbare kopie voor meer informatie. Een query-instructie. No
sliceIdentifierColumnName Geef een kolomnaam op voor kopieeractiviteit om de automatisch gegenereerde slice-id op te vullen. Deze wordt gebruikt om gegevens van een specifiek segment op te schonen wanneer deze opnieuw worden uitgevoerd. Zie herhaalbare kopie voor meer informatie. Kolomnaam van een kolom met gegevenstype binair(32). No
sqlWriterStoredProcedureName Naam van de opgeslagen procedure waarmee wordt gedefinieerd hoe brongegevens in de doeltabel moeten worden toegepast, bijvoorbeeld om upserts uit te voeren of te transformeren met behulp van uw eigen bedrijfslogica.

Houd er rekening mee dat deze opgeslagen procedure per batch wordt aangeroepen. Als u bewerkingen wilt uitvoeren die slechts eenmaal worden uitgevoerd en niets te maken heeft met brongegevens, bijvoorbeeld verwijderen/afkappen, gebruikt u sqlWriterCleanupScript de eigenschap.
Naam van de opgeslagen procedure. No
storedProcedureParameters Parameters voor de opgeslagen procedure. Naam-/waardeparen. Namen en hoofdletters van parameters moeten overeenkomen met de namen en hoofdletters van de opgeslagen procedureparameters. No
sqlWriterTableType Geef een tabeltypenaam op die moet worden gebruikt in de opgeslagen procedure. Copy-activiteit de gegevens die in een tijdelijke tabel met dit tabeltype worden verplaatst, beschikbaar maken. Opgeslagen procedurecode kan vervolgens de gegevens samenvoegen die worden gekopieerd met bestaande gegevens. Een tabeltypenaam. No

SqlSink-voorbeeld

"sink": {
    "type": "SqlSink",
    "writeBatchSize": 1000000,
    "writeBatchTimeout": "00:05:00",
    "sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
    "sqlWriterTableType": "CopyTestTableType",
    "storedProcedureParameters": {
        "identifier": { "value": "1", "type": "Int" },
        "stringData": { "value": "str1" },
        "decimalData": { "value": "1", "type": "Decimal" }
    }
}

JSON-voorbeelden voor het kopiëren van gegevens naar en van SQL Database

De volgende voorbeelden bevatten voorbeeld-JSON-definities die u kunt gebruiken om een pijplijn te maken met behulp van Visual Studio of Azure PowerShell. Ze laten zien hoe u gegevens kopieert naar en van Azure SQL Database en Azure Blob Storage. Gegevens kunnen echter rechtstreeks vanuit een van de bronnen naar een van de sinks worden gekopieerd die hier worden vermeld met behulp van de kopieeractiviteit in Azure Data Factory.

Voorbeeld: Gegevens kopiëren van Azure SQL Database naar Azure Blob

Hetzelfde definieert de volgende Data Factory-entiteiten:

  1. Een gekoppelde service van het type AzureSqlDatabase.
  2. Een gekoppelde service van het type AzureStorage.
  3. Een invoergegevensset van het type AzureSqlTable.
  4. Een uitvoergegevensset van het type Azure Blob.
  5. Een pijplijn met een Copy-activiteit die gebruikmaakt van SqlSource en BlobSink.

In het voorbeeld worden tijdreeksgegevens (elk uur, dagelijks, enzovoort) gekopieerd van een tabel in Azure SQL Database naar een blob per uur. De JSON-eigenschappen die in deze voorbeelden worden gebruikt, worden beschreven in secties na de voorbeelden.

Azure SQL Database gekoppelde service:

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

Zie de sectie Azure SQL Gekoppelde service voor de lijst met eigenschappen die worden ondersteund door deze gekoppelde service.

Gekoppelde Azure Blob Storage-service:

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Zie het Azure Blob-artikel voor de lijst met eigenschappen die worden ondersteund door deze gekoppelde service.

Azure SQL invoergegevensset:

In het voorbeeld wordt ervan uitgegaan dat u een tabel 'MyTable' hebt gemaakt in Azure SQL en dat deze een kolom bevat met de naam 'timestampcolumn' voor tijdreeksgegevens.

Het instellen van 'extern': 'true' informeert de Azure Data Factory-service dat de gegevensset extern is voor de data factory en niet wordt geproduceerd door een activiteit in de data factory.

{
  "name": "AzureSqlInput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyTable"
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Zie de sectie eigenschappen van het Azure SQL gegevenssettype voor de lijst met eigenschappen die worden ondersteund door dit type gegevensset.

Azure Blob-uitvoergegevensset:

Gegevens worden elk uur naar een nieuwe blob geschreven (frequentie: uur, interval: 1). Het mappad voor de blob wordt dynamisch geëvalueerd op basis van de begintijd van het segment dat wordt verwerkt. Het mappad maakt gebruik van delen jaar, maand, dag en uren van de begintijd.

{
  "name": "AzureBlobOutput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}/",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": "\t",
        "rowDelimiter": "\n"
      }
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Zie de sectie Eigenschappen van het type Azure Blob-gegevensset voor de lijst met eigenschappen die worden ondersteund door dit type gegevensset.

Een kopieeractiviteit in een pijplijn met SQL bron en Blob-sink:

De pijplijn bevat een kopieeractiviteit die is geconfigureerd voor het gebruik van de invoer- en uitvoergegevenssets en die elk uur moet worden uitgevoerd. In de JSON-definitie van de pijplijn wordt het brontype ingesteld op SqlSource en is het sinktype ingesteld op BlobSink. De SQL query die is opgegeven voor de eigenschap SqlReaderQuery, selecteert de gegevens in het afgelopen uur om te kopiëren.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline for copy activity",
    "activities":[
      {
        "name": "AzureSQLtoBlob",
        "description": "copy activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureSQLInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureBlobOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "SqlSource",
            "SqlReaderQuery": "$$Text.Format('select * from MyTable where timestampcolumn >= \\'{0:yyyy-MM-dd HH:mm}\\' AND timestampcolumn < \\'{1:yyyy-MM-dd HH:mm}\\'', WindowStart, WindowEnd)"
          },
          "sink": {
            "type": "BlobSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

In het voorbeeld wordt sqlReaderQuery opgegeven voor sqlSource. Met de kopieeractiviteit wordt deze query uitgevoerd op de Azure SQL Database bron om de gegevens op te halen. U kunt ook een opgeslagen procedure opgeven door de sqlReaderStoredProcedureName en storedProcedureParameters op te geven (als de opgeslagen procedure parameters gebruikt).

Als u sqlReaderQuery of sqlReaderStoredProcedureName niet opgeeft, worden de kolommen die zijn gedefinieerd in de structuursectie van de JSON-gegevensset gebruikt om een query te maken die moet worden uitgevoerd op de Azure SQL Database. Bijvoorbeeld: select column1, column2 from mytable. Als de definitie van de gegevensset niet de structuur heeft, worden alle kolommen uit de tabel geselecteerd.

Zie de sectie Sql-bron en BlobSink voor de lijst met eigenschappen die worden ondersteund door SqlSource en BlobSink.

Voorbeeld: Gegevens kopiëren van Azure Blob naar Azure SQL Database

In het voorbeeld worden de volgende Data Factory-entiteiten gedefinieerd:

  1. Een gekoppelde service van het type AzureSqlDatabase.
  2. Een gekoppelde service van het type AzureStorage.
  3. Een invoergegevensset van het type AzureBlob.
  4. Een uitvoergegevensset van het type AzureSqlTable.
  5. Een pijplijn met Copy-activiteit die gebruikmaakt van BlobSource en SqlSink.

In het voorbeeld worden tijdreeksgegevens (elk uur, dagelijks, enzovoort) gekopieerd van Azure Blob naar een tabel in Azure SQL Database elk uur. De JSON-eigenschappen die in deze voorbeelden worden gebruikt, worden beschreven in secties na de voorbeelden.

Azure SQL gekoppelde service:

{
  "name": "AzureSqlLinkedService",
  "properties": {
    "type": "AzureSqlDatabase",
    "typeProperties": {
      "connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
    }
  }
}

Zie de sectie Azure SQL Gekoppelde service voor de lijst met eigenschappen die worden ondersteund door deze gekoppelde service.

Gekoppelde Azure Blob Storage-service:

{
  "name": "StorageLinkedService",
  "properties": {
    "type": "AzureStorage",
    "typeProperties": {
      "connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
    }
  }
}

Zie het Azure Blob-artikel voor de lijst met eigenschappen die worden ondersteund door deze gekoppelde service.

Azure Blob-invoergegevensset:

Gegevens worden elk uur opgehaald uit een nieuwe blob (frequentie: uur, interval: 1). Het mappad en de bestandsnaam voor de blob worden dynamisch geëvalueerd op basis van de begintijd van het segment dat wordt verwerkt. Het pad naar de map maakt gebruik van het gedeelte jaar, maand en dag van de begintijd en bestandsnaam gebruikt het uurgedeelte van de begintijd. 'extern': 'true'-instelling informeert de Data Factory-service dat deze tabel zich buiten de data factory bevindt en niet wordt geproduceerd door een activiteit in de data factory.

{
  "name": "AzureBlobInput",
  "properties": {
    "type": "AzureBlob",
    "linkedServiceName": "StorageLinkedService",
    "typeProperties": {
      "folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/",
      "fileName": "{Hour}.csv",
      "partitionedBy": [
        {
          "name": "Year",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "yyyy"
          }
        },
        {
          "name": "Month",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "MM"
          }
        },
        {
          "name": "Day",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "dd"
          }
        },
        {
          "name": "Hour",
          "value": {
            "type": "DateTime",
            "date": "SliceStart",
            "format": "HH"
          }
        }
      ],
      "format": {
        "type": "TextFormat",
        "columnDelimiter": ",",
        "rowDelimiter": "\n"
      }
    },
    "external": true,
    "availability": {
      "frequency": "Hour",
      "interval": 1
    },
    "policy": {
      "externalData": {
        "retryInterval": "00:01:00",
        "retryTimeout": "00:10:00",
        "maximumRetry": 3
      }
    }
  }
}

Zie de sectie Eigenschappen van het type Azure Blob-gegevensset voor de lijst met eigenschappen die worden ondersteund door dit type gegevensset.

Azure SQL Database uitvoergegevensset:

Het voorbeeld kopieert gegevens naar een tabel met de naam 'MyTable' in Azure SQL. Maak de tabel in Azure SQL met hetzelfde aantal kolommen als u verwacht dat het CSV-bestand blob bevat. Er worden elk uur nieuwe rijen aan de tabel toegevoegd.

{
  "name": "AzureSqlOutput",
  "properties": {
    "type": "AzureSqlTable",
    "linkedServiceName": "AzureSqlLinkedService",
    "typeProperties": {
      "tableName": "MyOutputTable"
    },
    "availability": {
      "frequency": "Hour",
      "interval": 1
    }
  }
}

Zie de sectie eigenschappen van het Azure SQL gegevenssettype voor de lijst met eigenschappen die worden ondersteund door dit type gegevensset.

Een kopieeractiviteit in een pijplijn met blobbron en SQL sink:

De pijplijn bevat een kopieeractiviteit die is geconfigureerd voor het gebruik van de invoer- en uitvoergegevenssets en die elk uur moet worden uitgevoerd. In de JSON-definitie van de pijplijn wordt het brontype ingesteld op BlobSource en het sinktype is ingesteld op SqlSink.

{
  "name":"SamplePipeline",
  "properties":{
    "start":"2014-06-01T18:00:00",
    "end":"2014-06-01T19:00:00",
    "description":"pipeline with copy activity",
    "activities":[
      {
        "name": "AzureBlobtoSQL",
        "description": "Copy Activity",
        "type": "Copy",
        "inputs": [
          {
            "name": "AzureBlobInput"
          }
        ],
        "outputs": [
          {
            "name": "AzureSqlOutput"
          }
        ],
        "typeProperties": {
          "source": {
            "type": "BlobSource",
            "blobColumnSeparators": ","
          },
          "sink": {
            "type": "SqlSink"
          }
        },
        "scheduler": {
          "frequency": "Hour",
          "interval": 1
        },
        "policy": {
          "concurrency": 1,
          "executionPriorityOrder": "OldestFirst",
          "retry": 0,
          "timeout": "01:00:00"
        }
      }
    ]
  }
}

Zie de sectie Sql Sink en BlobSource voor de lijst met eigenschappen die worden ondersteund door SqlSink en BlobSource.

Identiteitskolommen in de doeldatabase

Deze sectie bevat een voorbeeld voor het kopiëren van gegevens uit een brontabel zonder een identiteitskolom naar een doeltabel met een identiteitskolom.

Brontabel:

create table dbo.SourceTbl
(
    name varchar(100),
    age int
)

Doeltabel:

create table dbo.TargetTbl
(
    identifier int identity(1,1),
    name varchar(100),
    age int
)

U ziet dat de doeltabel een identiteitskolom heeft.

JSON-definitie van brongegevensset

{
    "name": "SampleSource",
    "properties": {
        "type": " SqlServerTable",
        "linkedServiceName": "TestIdentitySQL",
        "typeProperties": {
            "tableName": "SourceTbl"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": true,
        "policy": {}
    }
}

JSON-definitie van doelgegevensset

{
    "name": "SampleTarget",
    "properties": {
        "structure": [
            { "name": "name" },
            { "name": "age" }
        ],
        "type": "AzureSqlTable",
        "linkedServiceName": "TestIdentitySQLSource",
        "typeProperties": {
            "tableName": "TargetTbl"
        },
        "availability": {
            "frequency": "Hour",
            "interval": 1
        },
        "external": false,
        "policy": {}
    }
}

Zoals u ziet, heeft uw bron- en doeltabel een ander schema (doel heeft een extra kolom met identiteit). In dit scenario moet u de structuureigenschap opgeven in de definitie van de doelgegevensset, die niet de identiteitskolom bevat.

Opgeslagen procedure aanroepen vanuit SQL sink

Zie Voor een voorbeeld van het aanroepen van een opgeslagen procedure vanuit SQL sink in een kopieeractiviteit van een pijplijn, de opgeslagen procedure aanroepen voor SQL sink in het artikel over kopieeractiviteit.

Typetoewijzing voor Azure SQL Database

Zoals vermeld in het artikel over activiteiten voor gegevensverplaatsing Copy-activiteit automatische typeconversies van brontypen naar sinktypen uitvoert met de volgende tweestapsbenadering:

  1. Converteren van systeemeigen brontypen naar .NET-type
  2. Converteren van .NET-type naar systeemeigen sinktype

Wanneer u gegevens verplaatst naar en van Azure SQL Database, worden de volgende toewijzingen gebruikt van SQL type naar .NET-type en omgekeerd. De toewijzing is hetzelfde als de SQL Server gegevenstypetoewijzing voor ADO.NET.

type SQL Server database-engine .NET Framework type
bigint Int64
binair Byte[]
bit Booleaans
char Tekenreeks, Teken[]
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, Teken[]
ntext Tekenreeks, Teken[]
numeriek Decimaal
nvarchar Tekenreeks, Teken[]
werkelijk Enkelvoudig
rowversion Byte[]
smalldatetime DateTime
smallint Int16
smallmoney Decimaal
sql_variant Object *
tekst Tekenreeks, Teken[]
tijd TimeSpan
tijdstempel Byte[]
tinyint Byte
uniqueidentifier Guid
varbinary Byte[]
varchar Tekenreeks, Teken[]
xml Xml

Bron toewijzen aan sinkkolommen

Zie Kolommen voor toewijzingsgegevenssets in Azure Data Factory voor meer informatie over het toewijzen van kolommen in de brongegevensset aan kolommen in sinkgegevenssets.

Herhaalbare kopie

Wanneer u gegevens kopieert naar SQL Server Database, worden met de kopieeractiviteit standaard gegevens aan de sinktabel toegevoegd. Als u in plaats daarvan een UPSERT wilt uitvoeren, raadpleegt u het artikel Herhaalbare schrijfbewerking naar SqlSink .

Houd bij het kopiëren van gegevens uit relationele gegevensarchieven rekening met herhaalbaarheid om onbedoelde resultaten te voorkomen. In Azure Data Factory kunt u een segment handmatig opnieuw uitvoeren. U kunt ook beleid voor opnieuw proberen configureren voor een gegevensset, zodat een segment opnieuw wordt uitgevoerd wanneer er een fout optreedt. Wanneer een segment op beide manieren opnieuw wordt uitgevoerd, moet u ervoor zorgen dat dezelfde gegevens worden gelezen, ongeacht hoe vaak een segment wordt uitgevoerd. Zie Herhaalbaar lezen uit relationele bronnen.

Prestaties en afstemming

Zie de handleiding voor het afstemmen van de prestaties & van kopieeractiviteiten voor meer informatie over belangrijke factoren die van invloed zijn op de prestaties van gegevensverplaatsing (kopieeractiviteit) in Azure Data Factory en op verschillende manieren om deze te optimaliseren.