Adatok másolása a Azure SQL Database és Azure Data Factory

Megjegyzés

Ez a cikk a Data Factory 1-es verziójára vonatkozik. Ha a Data Factory aktuális verzióját használja, tekintse meg a Azure SQL Database 2-es verziójában.

Ez a cikk azt ismerteti, hogyan használható a másolási tevékenység Azure Data Factory adatok áthelyezéséhez a Azure SQL Database. Az adatátmozgatási tevékenységeket ismertető cikkre épül, amely általános áttekintést nyújt a másolási tevékenységgel végzett adatátmozgatásról.

Támogatott esetek

Adatokat másolhat a Azure SQL Database az alábbi adattárakba:

Kategória Adattár
Azure Azure Blob Storage
1. generációs Azure Data Lake Storage
Azure Cosmos DB (SQL API)
Azure SQL Database
Azure Synapse Analytics
Azure Cognitive Search Index
Azure Table storage
Adatbázisok SQL Server
Oracle
Fájl Fájlrendszer

A következő adattárakból másolhat adatokat a Azure SQL Database:

Kategória Adattár
Azure Azure Blob Storage
Azure Cosmos DB (SQL API)
1. generációs Azure Data Lake Storage
Azure SQL Database
Azure Synapse Analytics
Azure Table storage
Adatbázisok Amazon Redshift
DB2
MySQL
Oracle
PostgreSQL
SAP Business Warehouse
SAP HANA
SQL Server
Sybase
Teradata
NoSQL Cassandra
MongoDB
Fájl Amazon S3
Fájlrendszer
FTP
HDFS
SFTP
Egyéb Általános HTTP
Általános OData
Általános ODBC
Salesforce
Webtábla (táblázat HTML-ről)

Támogatott hitelesítési típus

Azure SQL Database összekötő támogatja az alapszintű hitelesítést.

Első lépések

A másolási tevékenységgel olyan folyamatot hozhat létre, amely különböző eszközök/API-k használatával áthelyezi az adatokat egy Azure SQL Database és onnan más tevékenységből.

Folyamat létrehozásának legegyszerűbb módja a Másolás varázsló használata. A folyamatnak az Adatok másolása varázslóval való létrehozását bemutató rövid útmutatóért lásd: Oktatóanyag: Folyamat létrehozása a Másolás varázslóval.

A következő eszközökkel is létrehozhat folyamatot: Visual Studio, Azure PowerShell, Azure Resource Manager .NETAPIés REST API. A Copy tevékenység folyamat másolási tevékenységgel való létrehozására vonatkozó részletes útmutatásért tekintse meg a Copy tevékenység oktatóanyagot.

Akár eszközöket, akár API-kat használ, a következő lépésekkel hozhat létre olyan folyamatot, amely adatokat mozgat egy forrásadattárból egy fogadó adattárba:

  1. Hozzon létre egy adat-előállítót. Egy adat-előállító egy vagy több folyamatot is tartalmazhat.
  2. Hozzon létre összekapcsolt szolgáltatásokat a bemeneti és kimeneti adattárak és az adat-előállító összekapcsolása érdekében. Ha például egy Azure Blob Storage-ból másol adatokat a Azure SQL Database-ba, két csatolt szolgáltatást hoz létre az Azure Storage-fiók és a Azure SQL Database az adat-előállítóhoz való csatolása érdekében. A szolgáltatásspecifikus csatolt szolgáltatástulajdonságokról Azure SQL Database a csatolt szolgáltatás tulajdonságai című szakaszban.
  3. Adatkészletek létrehozása a másolási művelet bemeneti és kimeneti adatainak ábrázolása érdekében. Az előző lépésben említett példában létrehoz egy adatkészletet, amely meghatározza a bemeneti adatokat tartalmazó blobtárolót és mappát. Egy másik adatkészletet is létrehoz, amely meghatározza a blobtárolóból SQL blobtárolóból Azure SQL Database táblatáblát. Az Azure-beli virtuális szolgáltatásokra jellemző Data Lake Store lásd az adatkészlet tulajdonságaival kapcsolatos szakaszt.
  4. Hozzon létre egy másolási tevékenységgel egy folyamatot, amely bemenetként egy adatkészletet, kimenetként pedig egy adatkészletet vesz fel. A korábban említett példában a BlobSource forrásként, az SqlSink pedig fogadóként használható a másolási tevékenységhez. Hasonlóképpen, ha az azure Azure SQL Database ból másol az Azure Blob Storage-ba, az SqlSource és a BlobSink függvényt használja a másolási tevékenységben. A másolási tevékenység adott tevékenységtulajdonságokkal kapcsolatos Azure SQL Database a másolási tevékenység tulajdonságai című szakaszban található. Az adattár forrásként vagy fogadóként való használatával kapcsolatos részletekért kattintson az adattár előző szakaszában található hivatkozásra.

A varázsló használata esetén ezeknek a Data Factory entitások (csatolt szolgáltatások, adatkészletek és a folyamat) JSON-definíciói automatikusan létrejönnek. Ha eszközöket/API-kat használ (kivéve a .NET API-t), ezeket Data Factory JSON formátumban kell definiálni. Az olyan JSON-definíciókat Data Factory entitásokhoz, amelyek adatok másolására szolgálnak egy Azure SQL Database-fájlba vagy entitásból, tekintse meg a cikk JSON-példák című szakaszát.

A következő szakaszok részletesen ismertetik azokat a JSON-tulajdonságokat, amelyek a Data Factory-specifikus entitások Azure SQL Database:

Csatolt szolgáltatás tulajdonságai

Az Azure SQL szolgáltatás a Azure SQL Database az adat-előállítóra mutató hivatkozásokat. Az alábbi táblázat az Azure-beli virtuális SQL JSON-elemek leírását tartalmazza.

Tulajdonság Leírás Kötelező
típus A típus tulajdonságot a következőre kell beállítani: AzureSqlDatabase Igen
connectionString (kapcsolati karakterlánc) Adja meg a connectionString tulajdonsághoz Azure SQL Database kapcsolatpéldányhoz való csatlakozáshoz szükséges adatokat. Csak az alapszintű hitelesítés támogatott. Igen

Fontos

Konfigurálja Azure SQL Database tűzfalat az adatbázis-kiszolgálón, hogy az Azure-szolgáltatások hozzáférjenek a kiszolgálóhoz. Továbbá, ha az Azure-on kívülről másol adatokat az Azure SQL Database-ba, beleértve a helyszíni adatforrásokat is data factory-átjáróval, konfigurálja a megfelelő IP-címtartományt ahhoz a géphez, amely adatokat küld a Azure SQL Database.

Adatkészlet tulajdonságai

A bemeneti vagy kimeneti adatokat a Azure SQL Database meg, ha az adatkészlet type (típus) tulajdonságát a következőre kell állítania: AzureSqlTable. Állítsa az adatkészlet linkedServiceName tulajdonságát az Azure SQL szolgáltatás nevére.

Az adatkészletek meghatározásához elérhető szakasztulajdonságok teljes listáját az Adatkészletek létrehozása cikkben && el. Az adatkészlet JSON-fájlja struktúrája, rendelkezésre állása és szabályzata hasonló minden adatkészlettípushoz (Azure SQL, Azure Blob, Azure-tábla stb.).

A typeProperties szakasz minden adatkészlettípusnál eltérő, és az adatok az adattárban való helyével kapcsolatos információkat tartalmaz. Az AzureSqlTable típusú adatkészlet typeProperties szakasza a következő tulajdonságokkal rendelkezik:

Tulajdonság Leírás Kötelező
tableName Annak a táblának vagy nézetnek a neve a Azure SQL Database, amelyre a csatolt szolgáltatás hivatkozik. Igen

Másolási tevékenység tulajdonságai

A tevékenységek meghatározásához elérhető szakasztulajdonságok teljes listáját a Folyamatok létrehozása && el. Az olyan tulajdonságok, mint a név, a leírás, a bemeneti és kimeneti táblák, valamint a szabályzat minden tevékenységtípushoz elérhetők.

Megjegyzés

A másolási tevékenység csak egy bemenetet vesz fel, és csak egy kimenetet állít elő.

Míg a tevékenység typeProperties szakaszában elérhető tulajdonságok eltérőek lehetnek az egyes tevékenységtípusokkal. A Copy tevékenység a források és fogadók típusától függően változnak.

Ha adatokat mozgat a Azure SQL Database, a forrástípust a másolási tevékenységben az SqlSource-hoz kell beállítania. Hasonlóképpen, ha az adatokat a Azure SQL Database, a fogadó típusát a másolási tevékenységben sqlSink (SqlSink)típusúra kell állítania. Ez a szakasz az SqlSource és az SqlSink által támogatott tulajdonságok listáját tartalmazza.

SqlSource

A másolási tevékenységben, ha a forrás típusa SqlSource,a következő tulajdonságok érhetők el a typeProperties szakaszban:

Tulajdonság Leírás Megengedett értékek Kötelező
sqlReaderQuery Adatok olvasása az egyéni lekérdezéssel. SQL lekérdezési sztringet. Példa: select * from MyTable. Nem
sqlReaderStoredProcedureName A forrástáblából adatokat beolvasó tárolt eljárás neve. A tárolt eljárás neve. Az utolsó SQL utasításnak SELECT utasításnak kell lennie a tárolt eljárásban. Nem
storedProcedureParameters A tárolt eljárás paraméterei. Név/érték párok. A paraméterek nevének és kis-nevének egyeznie kell a tárolt eljárás paramétereinek nevével és kis- és kisajátítási értékével. Nem

Ha az sqlReaderQuery meg van adva az SqlSource-hoz, a másolási tevékenység ezt a lekérdezést Azure SQL Database forráson futtatja az adatok lekérdezése érdekében. Másik lehetőségként tárolt eljárást is megadhat az sqlReaderStoredProcedureName és a storedProcedureParameters megadásával (ha a tárolt eljáráshoz paraméterek is szükség van).

Ha nem adja meg az sqlReaderQuery vagy az sqlReaderStoredProcedureName értéket, akkor az adatkészlet JSON struktúra szakaszában meghatározott oszlopok használatával kell lekérdezést () összeépíteni a select column1, column2 from mytable Azure SQL Database. Ha az adatkészlet definíciója nem rendelkezik a struktúrával, a rendszer az összes oszlopot kiválasztja a táblából.

Megjegyzés

Az sqlReaderStoredProcedureNamehasználata esetén is meg kell adnia egy értéket az adatkészlet JSON-fájljában található tableName tulajdonsághoz. A táblán azonban nem végeznek ellenőrzést.

SqlSource-példa

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

A tárolt eljárás definíciója:

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)

Az SqlSink a következő tulajdonságokat támogatja:

Tulajdonság Leírás Megengedett értékek Kötelező
writeBatchTimeout Várjon, amíg a kötegelt beszúrási művelet befejeződik, mielőtt időkorrekciót ad. időtartomány

Például: "00:30:00" (30 perc).
Nem
writeBatchSize Adatokat szúr be a SQL táblába, amikor a puffer mérete eléri a writeBatchSize méretet. Egész szám (sorok száma) Nem (alapértelmezett érték: 10000)
sqlWriterCleanupScript Adjon meg egy lekérdezést, hogy a másolási tevékenység úgy legyen végrehajtva, hogy egy adott szelet adatait a rendszer megtisztítsa. További információ: Ismételhető másolat. Egy lekérdezési utasítás. Nem
sliceIdentifierColumnName Adjon meg egy oszlopnevet a Másolási tevékenység számára az automatikusan létrehozott szeletazonosítóval való kitöltéshez, amely egy adott szelet adatainak az újrafuttatáskor való tisztítására használható. További információ: Ismételhető másolat. Bináris adattípussal (32) tartalmazó oszlop neve. Nem
sqlWriterStoredProcedureName A tárolt eljárás neve, amely meghatározza, hogyan alkalmazza a forrásadatokat a céltáblára, például upserts vagy átalakításhoz a saját üzleti logikája használatával.

Vegye figyelembe, hogy a tárolt eljárás kötegenként lesz meghívva. Ha olyan műveletet szeretne, amely csak egyszer fut, és nincs köze a forrásadatokhoz (például delete/truncate, használja a sqlWriterCleanupScript tulajdonságot).
A tárolt eljárás neve. Nem
storedProcedureParameters A tárolt eljárás paraméterei. Név/érték párok. A paraméterek nevének és kis-nevének egyeznie kell a tárolt eljárás paramétereinek nevével és kis- és kisajátítási értékével. Nem
sqlWriterTableType Adja meg a tárolt eljárásban használni kívánt táblatípus nevét. Copy tevékenység ideiglenes táblában áthelyezhetővé teszi az adatokat ezzel a táblatípussal. A tárolt eljáráskód ezután egyesítheti a másolt adatokat a meglévő adatokkal. Egy táblatípus neve. Nem

SqlSink-példa

"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-példák adatok másolására a SQL Database

Az alábbi példák JSON-definíciókat mutatnak be, amelyek segítségével folyamatokat hozhat létre a Visual Studio vagy a Azure PowerShell. Bemutatja, hogyan másolhatja az adatokat a Azure SQL Database és az Azure Blob Storage. Az adatok azonban közvetlenül másolhatók bármely forrásból az itt található fogadók bármelyikére a másolási tevékenység használatával a Azure Data Factory.

Példa: Adatok másolása Azure SQL Database Azure Blobba

Ugyanez a következő entitásokat Data Factory definiálja:

  1. Egy AzureSqlDatabasetípusú csatolt szolgáltatás.
  2. Egy AzureStoragetípusú csatolt szolgáltatás.
  3. Egy AzureSqlTabletípusú bemeneti adatkészlet.
  4. Egy Azure Blob típusú kimeneti adatkészlet.
  5. SqlSource-t és BlobSink-Copy tevékenységhasználó folyamat.

A minta idősorozat-adatokat másol (óránként, naponta stb.) egy táblából Azure SQL Database egy blobba óránként. Az ezekben a mintákban használt JSON-tulajdonságokat a mintákat követő szakaszok ismertetik.

Azure SQL Database szolgáltatás:

{
  "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"
    }
  }
}

A csatolt szolgáltatás által támogatott tulajdonságok listájáért tekintse meg az Azure SQL Linked Service (Azure-beli virtuális szolgáltatások összekapcsolt szolgáltatása) című szakaszt.

Azure Blob Storage-beli csatolt szolgáltatás:

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

A csatolt szolgáltatás által támogatott tulajdonságok listáját az Azure Blob cikkben olvashatja el.

Azure SQL bemeneti adatkészlet:

A minta feltételezi, hogy létrehozott egy "MyTable" táblát az Azure SQL, és tartalmaz egy timestampcolumn nevű oszlopot az idősorozat-adatokhoz.

Az "external" beállítás azt jelenti a Azure Data Factory-szolgáltatásnak, hogy az adatkészlet az adat-előállítón kívül van, és nem az adat-előállítóban végzett tevékenység váltja ki.

{
  "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
      }
    }
  }
}

Az adatkészlettípus által támogatott tulajdonságok listájáért tekintse meg az Azure SQL adatkészlettípus tulajdonságai című szakaszt.

Azure Blob kimeneti adatkészlet:

A rendszer óránként írja az adatokat egy új blobba (frequency: hour, interval: 1). A blob mappaútvonala a feldolgozás alatt lévő szelet kezdési ideje alapján dinamikusan kiértékelhető. A mappa elérési útja a kezdési időpont év, hónap, nap és óra részeit használja.

{
  "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
    }
  }
}

Az adatkészlettípus által támogatott tulajdonságok listájáért tekintse meg az Azure Blob-adatkészlettípus tulajdonságai című szakaszt.

Másolási tevékenység egy folyamatban SQL forrás- és blob fogadóval:

A folyamat tartalmaz egy másolási tevékenységet, amely a bemeneti és kimeneti adatkészletek használatára van konfigurálva, és óránkénti futásra van ütemezve. A folyamat JSON-definíciójában a forrás típusa SqlSource, a fogadó típusapedig BlobSink. Az SQL SqlReaderQuery tulajdonsághoz megadott lekérdezés kiválasztja a másolni kívánt adatokat az elmúlt órában.

{
  "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"
        }
      }
    ]
  }
}

A példában az sqlReaderQuery van megadva az SqlSource-ban. A másolási tevékenység ezt a lekérdezést a Azure SQL Database futtatja az adatok lekérdezése érdekében. Másik lehetőségként tárolt eljárást is megadhat az sqlReaderStoredProcedureName és a storedProcedureParameters megadásával (ha a tárolt eljáráshoz paraméterek is szükség van).

Ha nem adja meg az sqlReaderQuery vagy az sqlReaderStoredProcedureName értéket, akkor az adatkészlet JSON struktúra szakaszában meghatározott oszlopok használatával hoz létre lekérdezést a Azure SQL Database. Példa: select column1, column2 from mytable. Ha az adatkészlet definíciója nem rendelkezik a struktúrával, a rendszer az összes oszlopot kiválasztja a táblából.

Az SqlSource és a BlobSink által támogatott tulajdonságok listájáért tekintse meg az Sql Source (Sql-forrás) és a BlobSink (BlobSink) szakaszt.

Példa: Adatok másolása az Azure Blobból Azure SQL Database

A minta a következő entitásokat Data Factory definiálja:

  1. Egy AzureSqlDatabasetípusú csatolt szolgáltatás.
  2. Egy AzureStoragetípusú csatolt szolgáltatás.
  3. Egy AzureBlobtípusú bemeneti adatkészlet.
  4. Egy AzureSqlTabletípusú kimeneti adatkészlet.
  5. BlobSource-t Copy tevékenység SqlSink-t használó folyamat.

A minta idősorozat-adatokat másol (óránként, naponta stb.) Azure-blobból óránként egy Azure SQL Database táblába. Az ezekben a mintákban használt JSON-tulajdonságokat a mintákat követő szakaszok ismertetik.

Azure SQL szolgáltatás:

{
  "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"
    }
  }
}

A csatolt szolgáltatás által támogatott tulajdonságok listájáért tekintse meg az Azure SQL Linked Service (Azure-beli virtuális szolgáltatások összekapcsolt szolgáltatása) című szakaszt.

Azure Blob Storage-beli csatolt szolgáltatás:

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

A csatolt szolgáltatás által támogatott tulajdonságok listáját az Azure Blob cikkben olvashatja el.

Azure Blob bemeneti adatkészlet:

A rendszer óránként új blobból (frequency: hour, interval: 1) származó adatokat fog felhozni. A blob mappaútvonala és fájlneve a feldolgozás alatt lévő szelet kezdési ideje alapján dinamikusan kiértékelhető. A mappa elérési útja a kezdő időpont év, hónap és nap részét, a fájlnév pedig a kezdési időpont óra részét használja. "external": a "true" (igaz) beállítás tájékoztatja a Data Factory-szolgáltatást arról, hogy ez a tábla az adat-előállítón kívül található, és nem az adat-előállítóban végzett tevékenységből áll.

{
  "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
      }
    }
  }
}

Az adatkészlettípus által támogatott tulajdonságok listájáért tekintse meg az Azure Blob-adatkészlettípus tulajdonságai című szakaszt.

Azure SQL Database adatkészlet:

A minta adatokat másol egy "MyTable" nevű táblába az Azure SQL. Hozza létre a táblát az Azure SQL annyi oszloppal, amennyit a Blob CSV-fájl várhatóan tartalmazni fog. A rendszer óránként új sorokat ad hozzá a táblához.

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

Az adatkészlettípus által támogatott tulajdonságok listájáért tekintse meg az Azure SQL adatkészlettípus tulajdonságai című szakaszt.

Másolási tevékenység egy folyamatban blobforrással és SQL fogadóval:

A folyamat tartalmaz egy másolási tevékenységet, amely a bemeneti és kimeneti adatkészletek használatára van konfigurálva, és óránkénti futásra van ütemezve. A folyamat JSON-definíciójában a forrás típusa BlobSource, a fogadó típusa pedig 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"
        }
      }
    ]
  }
}

Az SqlSink és a BlobSource által támogatott tulajdonságok listájáért tekintse meg az Sql Sink és a BlobSource szakaszt.

Identitásoszlopok a céladatbázisban

Ez a szakasz egy példát mutat be arra, hogyan másolhat adatokat egy identitásoszlop nélküli forrástáblából egy identitásoszlopot tartalmazó céltáblába.

Forrástábla:

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

Céltábla:

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

Figyelje meg, hogy a céltábla rendelkezik egy identity (identitás) oszloppal.

Forrásadatkészlet JSON-definíciója

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

Céladatkészlet JSON-definíciója

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

Figyelje meg, hogy mivel a forrás- és a céltábla eltérő sémával rendelkezik (a cél egy további, identitást tartalmazó oszloppal rendelkezik). Ebben a forgatókönyvben struktúratulajdonságot kell megadnia a céladatkészlet definíciójában, amely nem tartalmazza az identitásoszlopot.

Tárolt eljárás meghívása SQL fogadóból

Ha egy folyamat másolási tevékenységében SQL fogadóból hív meg egy tárolt eljárást, tekintse meg a tárolt eljárás meghívása SQL fogadóhoz a másolási tevékenységben cikket.

Típusleképezés Azure SQL Database

Ahogy az adatátmozgatási tevékenységekről Copy tevékenység a forrástípusokról fogadótípusokra történő automatikus típuskonverziót hajt végre a következő kétlépéses megközelítéssel:

  1. Konvertálás natív forrástípusokról .NET-típusra
  2. Átalakítás .NET-típusról natív fogadótípusra

Amikor adatokat mozgat a Azure SQL Database, a rendszer a következő leképezéseket használja SQL .NET típusra és fordítva. A leképezés megegyezik a SQL Server adattípus-leképezés ADO.NET.

SQL Server adatbázismotor típusa .NET-keretrendszer típus
bigint Int64
binary Bájt[]
bit Logikai
Char Sztring, Karakter[]
dátum DateTime
Datetime DateTime
datetime2 DateTime
Datetimeoffset (Dátum és idő között) DateTimeOffset (Dátum és idő lefolyása)
Tizedesjegy Tizedesjegy
FILESTREAM attribútum (varbinary(max)) Bájt[]
Float Dupla
image Bájt[]
int Int32
Pénzt Tizedesjegy
nchar Sztring, Karakter[]
ntext (szöveg) Sztring, Karakter[]
numerikus Tizedesjegy
nvarchar Sztring, Karakter[]
valós szám Egyirányú
rowversion (sorverzió) Bájt[]
smalldatetime DateTime
smallint Int16
smallmoney Tizedesjegy
sql_variant Objektum *
szöveg Sztring, Karakter[]
time időtartam
időbélyeg Bájt[]
tinyint Bájt
uniqueidentifier Guid
varbinary Bájt[]
varchar Sztring, Karakter[]
xml Xml

Forrás leképezése fogadóoszlopra

A forrásadatkészlet oszlopainak a fogadó adatkészlet oszlopaira való leképezésével kapcsolatos további információkért lásd: A forrásadatkészlet oszlopainak leképezése a Azure Data Factory.

Megismételhető másolat

Amikor adatokat másol egy SQL Server adatbázisba, a másolási tevékenység alapértelmezés szerint hozzáfűzi az adatokat a fogadó táblához. Ha inkább UPSERT műveletet végez, tekintse meg az Ismételhető írás az SqlSinkbe című cikket.

Amikor relációs adattárból másol adatokat, tartsa szem előtt a megismételhetőséget, hogy elkerülje a nem szándékolt eredményeket. A Azure Data Factory manuálisan újrafuttathatja a szeleteket. Egy adatkészlet újrapróbálkozási szabályzatát is konfigurálhatja úgy, hogy hiba esetén a szelet újrafuttassa a szeletet. Ha a szeletet mindkét módon újrafuttatják, meg kell győződni arról, hogy a rendszer ugyanazt az adatot olvassa be, függetlenül attól, hogy hányszor futnak a szeletek. Lásd: Ismételhető olvasás relációs forrásokból.

Teljesítmény és finomhangolás

A Másolási tevékenység teljesítményének finomhangolása útmutatóban megismerhet olyan főbb tényezőket, amelyek hatással vannak az adatátmozgatás (másolási tevékenység) Azure Data Factory optimalizálás különböző módjaira.