Adatok másolása és átalakítása Azure SQL database-ben Azure Data Factory vagy Azure Synapse Analytics használatával

A KÖVETKEZŐKRE VONATKOZIK: Azure Data Factory Azure Synapse Analytics

Ez a cikk bemutatja, hogyan használhatja a másolási tevékenységet Azure Data Factory vagy Azure Synapse folyamatokban az adatok Azure SQL adatbázisból és az adatbázisba való másolásához, és hogyan alakíthatja át az adatokat Azure SQL adatbázisában a Adatfolyam használatával. További információért olvassa el a Azure Data Factory vagy Azure Synapse Analytics bevezető cikkét.

Támogatott képességek

Ez a Azure SQL adatbázis-összekötő a következő képességeket támogatja:

Támogatott képességek IR Felügyelt privát végpont
Copy tevékenység (forrás/fogadó) ① ②
Adatfolyam leképezése (forrás/fogadó)
Keresési tevékenység ① ②
GetMetadata-tevékenység ① ②
Parancsprogram-tevékenység ① ②
Tárolt eljárástevékenység ① ②

(1) Azure-integrációs modul (2) Saját üzemeltetésű integrációs modul

A Copy tevékenység esetében ez a Azure SQL Database-összekötő a következő függvényeket támogatja:

  • Adatok másolása AZ SQL-hitelesítés és az Azure Active Directory (Azure AD) alkalmazásjogkivonat-hitelesítés használatával az Azure-erőforrások szolgáltatásnévvel vagy felügyelt identitásaival.
  • Forrásként sql-lekérdezéssel vagy tárolt eljárással lekért adatokat. A párhuzamos másolást Azure SQL adatbázis-forrásból is választhatja, a részletekért tekintse meg az SQL Database párhuzamos másolása című szakaszt.
  • Fogadóként automatikusan hozza létre a céltáblát, ha nem létezik a forrásséma alapján; adatok hozzáfűzése egy táblához, vagy tárolt eljárás meghívása egyéni logikával a másolás során.

Ha kiszolgáló nélküli Azure SQL adatbázisszintet használ, vegye figyelembe, hogy a kiszolgáló szüneteltetésekor a tevékenységfuttatás meghiúsul ahelyett, hogy az automatikus folytatásra várna. Hozzáadhat tevékenység-újrapróbálkozási vagy láncolási további tevékenységeket, hogy meggyőződjön arról, hogy a kiszolgáló a tényleges végrehajtáskor működik.

Fontos

Ha az Azure integrációs modul használatával másol adatokat, konfiguráljon egy kiszolgálószintű tűzfalszabályt, hogy az Azure-szolgáltatások hozzáférhessenek a kiszolgálóhoz. Ha egy saját üzemeltetésű integrációs modul használatával másol adatokat, konfigurálja a tűzfalat a megfelelő IP-címtartomány engedélyezéséhez. Ez a tartomány magában foglalja a gép IP-címét, amely a Azure SQL-adatbázishoz való csatlakozáshoz használható.

Bevezetés

A Copy tevékenység folyamattal való végrehajtásához használja az alábbi eszközök vagy SDK-k egyikét:

Azure SQL-adatbázishoz társított szolgáltatás létrehozása felhasználói felülettel

Az alábbi lépésekkel hozzon létre egy Azure SQL adatbázishoz társított szolgáltatást a Azure Portal felhasználói felületén.

  1. Keresse meg a kezelés lapot a Azure Data Factory vagy a Synapse-munkaterületen, és válassza a Társított szolgáltatások lehetőséget, majd kattintson az Új gombra:

  2. Keresse meg az SQL-t, és válassza ki a Azure SQL Adatbázis-összekötőt.

    Válassza Azure SQL Adatbázis-összekötő lehetőséget.

  3. Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.

    Képernyőkép a Azure SQL adatbázishoz társított szolgáltatás konfigurációjáról.

Összekötő konfigurációjának részletei

Az alábbi szakaszok az Azure SQL-adatbázis-összekötőre jellemző Azure Data Factory vagy Synapse-folyamatentitások meghatározására használt tulajdonságokat ismertetik.

Társított szolgáltatás tulajdonságai

Ezek az általános tulajdonságok támogatottak egy Azure SQL adatbázishoz társított szolgáltatáshoz:

Tulajdonság Leírás Kötelező
típus A type tulajdonságot AzureSqlDatabase értékre kell állítani. Yes
connectionString Adja meg a connectionString tulajdonság Azure SQL adatbázispéldányához való csatlakozáshoz szükséges információkat. Jelszót vagy szolgáltatásnévkulcsot is elhelyezhet az Azure Key Vault. Sql-hitelesítés esetén húzza ki a konfigurációt a password kapcsolati sztring. További információ: JSON-példa az Azure Key Vault-ban található tábla és a Hitelesítő adatok tárolása című témakörben. Yes
azureCloudType A szolgáltatásnév hitelesítéséhez adja meg, hogy milyen típusú Azure-felhőkörnyezetben regisztrálja Azure AD alkalmazást. Az engedélyezett értékek az AzurePublic, az AzureChina, az AzureUsGovernment és az AzureGermany. Alapértelmezés szerint az adat-előállítót vagy a Synapse-folyamat felhőkörnyezetét használja a rendszer. Nem
alwaysEncryptedSettings Adja meg az alwaysencryptedsettings adatokat, amelyek szükségesek ahhoz, hogy Always Encrypted felügyelt identitással vagy szolgáltatásnévvel védhesse az SQL Serveren tárolt bizalmas adatokat. További információt a táblázatot és az Always Encrypted használata szakaszt követő JSON-példában talál. Ha nincs megadva, az alapértelmezett mindig titkosított beállítás le van tiltva. Nem
connectVia Ez az integrációs modul az adattárhoz való csatlakozáshoz használható. Használhatja az Azure integrációs modult vagy egy saját üzemeltetésű integrációs modult, ha az adattár magánhálózaton található. Ha nincs megadva, a rendszer az alapértelmezett Azure-integrációs modult használja. Nem

Különböző hitelesítési típusok esetén tekintse meg a következő szakaszokat az egyes tulajdonságokról, előfeltételekről és JSON-mintákról:

Tipp

Ha a "UserErrorFailedToConnectToSqlServer" hibakóddal és egy "Az adatbázis munkamenetkorlátja XXX, és elérte" hibaüzenetet kapott, adja hozzá Pooling=false a kapcsolati sztring, és próbálkozzon újra. Pooling=falseaz SHIR(saját üzemeltetésű Integration Runtime) típusú társított szolgáltatás beállításához is ajánlott. A készletezés és más kapcsolati paraméterek új paraméternevekként és értékekként vehetők fel a csatolt szolgáltatáslétrehozási űrlap További kapcsolattulajdonságok szakaszában.

SQL-hitelesítés

Az SQL-hitelesítés típusának használatához adja meg az előző szakaszban ismertetett általános tulajdonságokat.

Példa: SQL-hitelesítés használata

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

Példa: jelszó az 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"
        }
    }
}

Példa: Always Encrypted használata

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

Egyszerű szolgáltatásnév hitelesítése

A szolgáltatásnév-hitelesítés használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:

Tulajdonság Leírás Kötelező
servicePrincipalId Adja meg az alkalmazás ügyfél-azonosítóját. Yes
servicePrincipalKey Adja meg az alkalmazás kulcsát. Jelölje meg ezt a mezőt SecureStringként, hogy biztonságosan tárolja, vagy hivatkozzon egy Azure-Key Vault tárolt titkos kódra. Yes
Bérlő Adja meg a bérlő adatait, például azt a tartománynevet vagy bérlőazonosítót, amely alatt az alkalmazás található. A lekéréshez vigye az egérmutatót a Azure Portal jobb felső sarkában. Yes

Az alábbi lépéseket is követnie kell:

  1. Hozzon létre egy Azure Active Directory-alkalmazást a Azure Portal. Jegyezze fel az alkalmazás nevét és a társított szolgáltatást meghatározó alábbi értékeket:

    • Alkalmazásazonosító
    • Alkalmazáskulcs
    • Bérlőazonosító
  2. Azure Active Directory-rendszergazda kiépítése a kiszolgálóhoz a Azure Portal, ha még nem tette meg. A Azure AD rendszergazdának Azure AD felhasználónak vagy Azure AD csoportnak kell lennie, de nem lehet szolgáltatásnév. Ez a lépés úgy történik, hogy a következő lépésben egy Azure AD identitással hozzon létre egy tartalmazott adatbázis-felhasználót a szolgáltatásnévhez.

  3. Tartalmazott adatbázis-felhasználók létrehozása a szolgáltatásnévhez. Csatlakozzon ahhoz az adatbázishoz, amelyből vagy amelybe adatokat szeretne másolni az olyan eszközökkel, mint a SQL Server Management Studio, és olyan Azure AD identitással, amely legalább MÓDOSÍTJA a FELHASZNÁLÓI jogosultságokat. Futtassa a következő T-SQL-t:

    CREATE USER [your application name] FROM EXTERNAL PROVIDER;
    
  4. Adja meg a szolgáltatásnévnek a szükséges engedélyeket, ahogy általában az SQL-felhasználók vagy mások esetében. Futtassa az alábbi kódot. További lehetőségekért tekintse meg ezt a dokumentumot.

    ALTER ROLE [role name] ADD MEMBER [your application name];
    
  5. Konfiguráljon egy Azure SQL adatbázishoz társított szolgáltatást egy Azure Data Factory vagy Synapse-munkaterületen.

Szolgáltatásnév-hitelesítést használó társított szolgáltatás

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

Rendszer által hozzárendelt felügyelt identitás hitelesítése

Az adat-előállítók vagy Synapse-munkaterületek társíthatók olyan Azure-erőforrásokhoz rendelt, rendszer által hozzárendelt felügyelt identitással , amely a szolgáltatást képviseli az Azure más erőforrásaihoz való hitelesítéskor. Ezt a felügyelt identitást használhatja Azure SQL adatbázis-hitelesítéshez. A kijelölt gyár vagy Synapse-munkaterület ezzel az identitással érheti el és másolhatja az adatokat az adatbázisból vagy az adatbázisba.

A rendszer által hozzárendelt felügyelt identitás hitelesítésének használatához adja meg az előző szakaszban ismertetett általános tulajdonságokat, és kövesse az alábbi lépéseket.

  1. Azure Active Directory-rendszergazda kiépítése a kiszolgálóhoz a Azure Portal, ha még nem tette meg. A Azure AD rendszergazda lehet Azure AD felhasználó vagy Azure AD csoport. Ha rendszergazdai szerepkört ad a felügyelt identitással rendelkező csoportnak, hagyja ki a 3. és a 4. lépést. A rendszergazda teljes hozzáféréssel rendelkezik az adatbázishoz.

  2. Tartalmazott adatbázis-felhasználók létrehozása a felügyelt identitáshoz. Csatlakozzon ahhoz az adatbázishoz, amelyből vagy amelybe adatokat szeretne másolni az olyan eszközökkel, mint a SQL Server Management Studio, és olyan Azure AD identitással, amely legalább MÓDOSÍTJA a FELHASZNÁLÓI jogosultságokat. Futtassa a következő T-SQL-t:

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Adja meg a felügyelt identitáshoz szükséges engedélyeket, ahogyan az SQL-felhasználók és mások esetében általában. Futtassa az alábbi kódot. További lehetőségekért tekintse meg ezt a dokumentumot.

    ALTER ROLE [role name] ADD MEMBER [your_resource_name];
    
  4. Konfiguráljon egy Azure SQL adatbázishoz társított szolgáltatást.

Példa

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

Felhasználó által hozzárendelt felügyelt identitás hitelesítése

Egy adat-előállító vagy Synapse-munkaterület társítható felhasználó által hozzárendelt felügyelt identitásokkal , amelyek a szolgáltatást képviselik az Azure más erőforrásaihoz való hitelesítéskor. Ezt a felügyelt identitást használhatja Azure SQL adatbázis-hitelesítéshez. A kijelölt gyár vagy Synapse-munkaterület ezzel az identitással érheti el és másolhatja az adatokat az adatbázisból vagy az adatbázisba.

A felhasználó által hozzárendelt felügyelt identitás hitelesítésének használatához az előző szakaszban ismertetett általános tulajdonságok mellett adja meg a következő tulajdonságokat:

Tulajdonság Leírás Kötelező
hitelesítő adatok Adja meg a felhasználó által hozzárendelt felügyelt identitást hitelesítőadat-objektumként. Yes

Az alábbi lépéseket is követnie kell:

  1. Azure Active Directory-rendszergazda kiépítése a kiszolgálóhoz a Azure Portal, ha még nem tette meg. A Azure AD rendszergazda lehet Azure AD felhasználó vagy Azure AD csoport. Ha rendszergazdai szerepkört ad a felhasználó által hozzárendelt felügyelt identitással rendelkező csoportnak, hagyja ki a 3. lépést. A rendszergazda teljes hozzáféréssel rendelkezik az adatbázishoz.

  2. Tartalmazott adatbázis-felhasználók létrehozása a felhasználó által hozzárendelt felügyelt identitáshoz. Csatlakozzon ahhoz az adatbázishoz, amelyből vagy amelybe adatokat szeretne másolni az olyan eszközökkel, mint a SQL Server Management Studio, és olyan Azure AD identitással, amely legalább MÓDOSÍTJA a FELHASZNÁLÓI jogosultságokat. Futtassa a következő T-SQL-t:

    CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;
    
  3. Hozzon létre egy vagy több felhasználó által hozzárendelt felügyelt identitást , és adja meg a felhasználó által hozzárendelt felügyelt identitáshoz szükséges engedélyeket, ahogyan azt az SQL-felhasználók és mások esetében általában teszi. Futtassa az alábbi kódot. További lehetőségekért tekintse meg ezt a dokumentumot.

    ALTER ROLE [role name] ADD MEMBER [your_resource_name];
    
  4. Rendeljen hozzá egy vagy több felhasználó által hozzárendelt felügyelt identitást az adat-előállítóhoz, és hozzon létre hitelesítő adatokat minden felhasználó által hozzárendelt felügyelt identitáshoz.

  5. Konfiguráljon egy Azure SQL adatbázishoz társított szolgáltatást.

Példa

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

Adatkészlet tulajdonságai

Az adathalmazok meghatározásához elérhető szakaszok és tulajdonságok teljes listáját az Adathalmazok című témakörben találja.

A következő tulajdonságok támogatottak Azure SQL Adatbázis-adathalmaz esetében:

Tulajdonság Leírás Kötelező
típus Az adathalmaz típustulajdonságának az AzureSqlTable értékre kell állítania. Yes
schema A séma neve. Nem a forráshoz, igen a fogadóhoz
tábla A tábla/nézet neve. Nem a forráshoz, igen a fogadóhoz
tableName A tábla/nézet neve sémával. Ez a tulajdonság támogatja a visszamenőleges kompatibilitást. Az új számítási feladatokhoz használja a és tablea parancsotschema. Nem a forráshoz, igen a fogadóhoz

Példa adathalmaz tulajdonságaira

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

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

A tevékenységek meghatározásához elérhető szakaszok és tulajdonságok teljes listájáért lásd: Folyamatok. Ez a szakasz a Azure SQL adatbázis-forrás és fogadó által támogatott tulajdonságok listáját tartalmazza.

Azure SQL adatbázis forrásként

Tipp

Az adatok Azure SQL-adatbázisból történő hatékony adatparticionálással történő betöltéséhez további információt az SQL Database párhuzamos másolásáról olvashat.

Az adatok Azure SQL adatbázisból való másolásához a másolási tevékenység forrásának szakaszában a következő tulajdonságok támogatottak:

Tulajdonság Leírás Kötelező
típus A másolási tevékenység forrásának típustulajdonságát az AzureSqlSource értékre kell állítani. Az "SqlSource" típus továbbra is támogatott a visszamenőleges kompatibilitás érdekében. Yes
sqlReaderQuery Ez a tulajdonság az egyéni SQL-lekérdezést használja az adatok olvasásához. Például: select * from MyTable. Nem
sqlReaderStoredProcedureName Annak a tárolt eljárásnak a neve, amely adatokat olvas be a forrástáblából. 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. Az engedélyezett értékek név- vagy értékpárok. A paraméterek nevének és burkolatának meg kell egyeznie a tárolt eljárás paramétereinek nevével és burkolatával. Nem
isolationLevel Megadja az SQL-forrás tranzakciózárolási viselkedését. Az engedélyezett értékek a következők: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Ha nincs megadva, a rendszer az adatbázis alapértelmezett elkülönítési szintjét használja. További részletekért tekintse meg ezt a dokumentumot . Nem
partitionOptions Megadja a Azure SQL Database-ből való adatok betöltéséhez használt adatparticionálási beállításokat. Az engedélyezett értékek a következők: Nincs (alapértelmezett), PhysicalPartitionsOfTable és DynamicRange. Ha egy partícióbeállítás engedélyezve van (azaz nemNone), a másolási tevékenység beállítása szabályozza parallelCopies az adatok egyidejű betöltésének mértékét az Azure SQL-adatbázisból. Nem
partitionSettings Adja meg az adatparticionálás beállításainak csoportját. Akkor alkalmazza, ha a partíciós beállítás nem None. Nem
A alatt partitionSettings:
partitionColumnName Adja meg annak a forrásoszlopnak a nevét egész számban vagy dátum/dátum/idő típusban (int, , smallint, bigintdate, smalldatetime, datetime, , datetime2vagy datetimeoffset), amelyet a párhuzamos másolás tartományparticionálása használ. Ha nincs megadva, a rendszer automatikusan észleli és partícióoszlopként használja a tábla indexét vagy elsődleges kulcsát. Akkor alkalmazza, ha a partíció beállítása .DynamicRange Ha lekérdezéssel kéri le a forrásadatokat, a WHERE záradékban horoggal ?AdfDynamicRangePartitionCondition . Példaként tekintse meg az SQL Database párhuzamos másolása című szakaszt . Nem
partitionUpperBound A partíciótartomány-felosztás partícióoszlopának maximális értéke. Ez az érték határozza meg a partíciós léptetést, nem pedig a tábla sorainak szűrésére. A rendszer particionálja és másolja a tábla vagy a lekérdezés eredményének összes sorát. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. Akkor alkalmazza, ha a partíció beállítása .DynamicRange Példaként tekintse meg az SQL Database párhuzamos másolása című szakaszt . Nem
partitionLowerBound A partíciótartományok felosztásához használt partícióoszlop minimális értéke. Ez az érték határozza meg a partíciós léptetést, nem pedig a tábla sorainak szűrésére. A rendszer particionálja és másolja a tábla vagy a lekérdezés eredményének összes sorát. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. Akkor alkalmazza, ha a partíció beállítása .DynamicRange Példaként tekintse meg az SQL Database párhuzamos másolása című szakaszt . Nem

Vegye figyelembe a következő szempontokat:

  • Ha az sqlReaderQuery az AzureSqlSource-hoz van megadva, a másolási tevékenység ezt a lekérdezést a Azure SQL adatbázis-forráson futtatja az adatok lekéréséhez. Tárolt eljárást is megadhat az sqlReaderStoredProcedureName és a storedProcedureParameters megadásával, ha a tárolt eljárás paramétereket vesz fel.
  • Ha tárolt eljárást használ a forrásban az adatok lekéréséhez, vegye figyelembe, hogy a tárolt eljárás úgy van kialakítva, hogy eltérő sémát adjon vissza, amikor különböző paraméterértéket ad át, akkor előfordulhat, hogy a séma felhasználói felületről történő importálásakor vagy az adatok sql-adatbázisba való automatikus létrehozásakor nem várt eredményt tapasztal.

PÉLDA SQL-lekérdezésre

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

Példa tárolt eljárásra

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

Tárolt eljárásdefiníció

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 adatbázis fogadóként

Tipp

További információ a támogatott írási viselkedésekről, konfigurációkról és ajánlott eljárásokról az Adatok Azure SQL-adatbázisba való betöltésének ajánlott eljárásaiból.

Ha adatokat szeretne Azure SQL adatbázisba másolni, a másolási tevékenység fogadójában a következő tulajdonságok támogatottak:

Tulajdonság Leírás Kötelező
típus A másolási tevékenység fogadójának típustulajdonságát AzureSqlSink értékre kell állítani. Az "SqlSink" típus továbbra is támogatott a visszamenőleges kompatibilitás érdekében. Yes
preCopyScript Adjon meg egy SQL-lekérdezést a másolási tevékenység futtatásához, mielőtt adatokat írna Azure SQL adatbázisba. Másolási futtatásonként csak egyszer lesz meghívva. Ezzel a tulajdonságkal törölheti az előre betöltött adatokat. Nem
tableOption Meghatározza, hogy automatikusan létre kell-e hozni a fogadótáblát , ha nem létezik a forrásséma alapján. Az automatikus táblalétrehozás nem támogatott, ha a fogadó a tárolt eljárást adja meg. Az engedélyezett értékek a következők: none (alapértelmezett), autoCreate. Nem
sqlWriterStoredProcedureName A tárolt eljárás neve, amely meghatározza a forrásadatok céltáblába való alkalmazását. Ezt a tárolt eljárást kötegenként hívja meg a rendszer. Olyan műveleteknél, amelyek csak egyszer futnak, és nincs köze a forrásadatokhoz, például törléshez vagy csonkolási műveletekhez, használja a preCopyScript tulajdonságot. Lásd: Tárolt eljárás meghívása SQL-fogadóból. Nem
storedProcedureTableTypeParameterName A tárolt eljárásban megadott táblatípus paraméterneve. Nem
sqlWriterTableType A tárolt eljárásban használandó táblatípus neve. A másolási tevékenység elérhetővé teszi az áthelyezett adatokat egy ilyen típusú ideiglenes táblában. A tárolt eljáráskód ezután egyesítheti a másolt adatokat a meglévő adatokkal. Nem
storedProcedureParameters A tárolt eljárás paraméterei. Az engedélyezett értékek név- és értékpárok. A paraméterek nevének és burkolatának meg kell egyeznie a tárolt eljárás paramétereinek nevével és burkolatával. Nem
writeBatchSize Az SQL-táblába kötegenként beszúrandó sorok száma. Az engedélyezett érték egész szám (sorok száma). Alapértelmezés szerint a szolgáltatás dinamikusan határozza meg a megfelelő kötegméretet a sorméret alapján. Nem
writeBatchTimeout A kötegbeszúrási művelet befejezésének várakozási ideje, mielőtt túllépi az időkorlátot. Az engedélyezett érték az időtartomány. Ilyen például a "00:30:00" (30 perc). Nem
disableMetricsCollection A szolgáltatás metrikákat gyűjt, például Azure SQL adatbázis-DTU-kat a másolási teljesítmény optimalizálásához és a javaslatokhoz, amelyek további főadatbázis-hozzáférést vezetnek be. Ha ezzel a viselkedéssel foglalkozik, adja meg true , hogy ki szeretné-e kapcsolni. Nem (az alapértelmezett érték )false
 maxConcurrentConnections Az adattárhoz a tevékenységfuttatás során létesített egyidejű kapcsolatok felső korlátja. Csak akkor adjon meg értéket, ha korlátozni szeretné az egyidejű kapcsolatokat.  Nem
WriteBehavior Adja meg a másolási tevékenység írási viselkedését az adatok Azure SQL Database-be való betöltéséhez. Az engedélyezett érték az Insert és a Upsert. Alapértelmezés szerint a szolgáltatás beszúrással tölti be az adatokat. Nem
upsertSettings Adja meg az írási viselkedés beállításainak csoportját. Akkor alkalmazza, ha a WriteBehavior beállítás a következő Upsert: . Nem
A alatt upsertSettings:
useTempDB Itt adhatja meg, hogy a globális ideiglenes vagy fizikai táblát szeretné-e használni az upsert ideiglenes táblájaként. Alapértelmezés szerint a szolgáltatás globális ideiglenes táblát használ köztes táblaként. értéke .true Nem
interimSchemaName Fizikai tábla használata esetén adja meg a köztes tábla létrehozásához szükséges köztes sémát. Megjegyzés: a felhasználónak rendelkeznie kell a tábla létrehozására és törlésére vonatkozó engedéllyel. Alapértelmezés szerint a köztes tábla ugyanazt a sémát használja, mint a fogadó tábla. Akkor alkalmazza, ha a useTempDB beállítás értéke False. Nem
keys Adja meg az egyedi sorazonosító oszlopneveket. Egy vagy több kulcs használható. Ha nincs megadva, a rendszer az elsődleges kulcsot használja. Nem

1. példa: Adatok hozzáfűzése

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

2. példa: Tárolt eljárás meghívása másolás közben

További információ: Tárolt eljárás meghívása SQL-fogadóból.

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

3. példa: Adatok beszúrása

"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",
                "writeBehavior": "upsert",
                "upsertSettings": {
                    "useTempDB": true,
                    "keys": [
                        "<column name>"
                    ]
                },
            }
        }
    }
]

Párhuzamos másolás SQL-adatbázisból

A másolási tevékenység Azure SQL adatbázis-összekötője beépített adatparticionálást biztosít az adatok párhuzamos másolásához. Az adatparticionálási beállításokat a másolási tevékenység Forrás lapján találja.

Képernyőkép a partícióbeállításokról

Ha engedélyezi a particionált másolást, a másolási tevékenység párhuzamos lekérdezéseket futtat a Azure SQL adatbázis-forráson az adatok partíciók szerinti betöltéséhez. A párhuzamos fokot a parallelCopies másolási tevékenység beállítása szabályozza. Ha például négyre van állítvaparallelCopies, a szolgáltatás egyszerre négy lekérdezést hoz létre és futtat a megadott partícióbeállítás és beállítások alapján, és mindegyik lekérdezés lekéri az adatok egy részét a Azure SQL-adatbázisból.

Javasoljuk, hogy engedélyezze a párhuzamos másolást adatparticionálással, különösen akkor, ha nagy mennyiségű adatot tölt be a Azure SQL Database-ből. A következő javasolt konfigurációk különböző forgatókönyvekhez. Ha fájlalapú adattárba másol adatokat, javasoljuk, hogy több fájlként írjon egy mappába (csak a mappa nevét adja meg), ebben az esetben a teljesítmény jobb, mint egyetlen fájlba írni.

Eset Javasolt beállítások
Teljes terhelés nagy méretű táblából, fizikai partíciókkal. Partíciós beállítás: A tábla fizikai partíciói. A végrehajtás során a szolgáltatás automatikusan észleli a fizikai partíciókat, és partíciók alapján másolja az adatokat. Ha ellenőrizni szeretné, hogy a tábla rendelkezik-e fizikai partícióval, tekintse meg ezt a lekérdezést.
Teljes terhelés nagy méretű táblából fizikai partíciók nélkül, az adatparticionáláshoz pedig egész számmal vagy datetime oszloppal. Partícióbeállítások: Dinamikus tartomány partíciója. Partícióoszlop (nem kötelező): Adja meg az adatok particionálásához használt oszlopot. Ha nincs megadva, a rendszer az indexet vagy az elsődlegeskulcs-oszlopot használja. Partíció felső határa és partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós léptetés értékét. Ez nem a tábla sorainak szűrésére használható, a rendszer particionálja és másolja a tábla összes sorát. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értékeket. Ha például az "ID" partícióoszlop értéke 1 és 100 között van, és az alsó határt 20-ra, a felső kötést pedig 80-ra állítja, a párhuzamos másolás 4-es értékkel, a szolgáltatás 4 partícióval kéri le az adatokat – azonosítókat az =20, [21, 50], [51, 80] és >=81 tartományban<.
Nagy mennyiségű adatot tölthet be egyéni lekérdezéssel fizikai partíciók nélkül, míg az adatparticionáláshoz egy egész számmal vagy date/datetime oszloppal. Partícióbeállítások: Dinamikus tartomány partíciója. Lekérdezés: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>. Partícióoszlop: Adja meg az adatok particionálásához használt oszlopot. Partíció felső határa és partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós léptetés értékét. Ez nem a tábla sorainak szűrésére használható, a lekérdezés eredményének összes sora particionálásra és másolásra kerül. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. A végrehajtás során a szolgáltatás lecseréli ?AdfRangePartitionColumnName az oszlop tényleges nevét és értéktartományait az egyes partíciókra, és elküldi Azure SQL Database-nek. Ha például az "ID" partícióoszlop értéke 1 és 100 között van, és az alsó kötést 20-ra, a felső kötést pedig 80-ra állítja, a párhuzamos másolás értéke 4, akkor a szolgáltatás 4 partícióazonosítóval kéri le az adatokat az =20, [21, 50], [51, 80] és >=81 tartományban<. Az alábbiakban további mintalekérdezéseket talál a különböző forgatókönyvekhez: 1. A teljes tábla lekérdezése: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition 2. Lekérdezés oszlopkijelöléssel és további where-clause szűrőkkel rendelkező táblából: SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause> 3. Lekérdezés al lekérdezésekkel: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause> 4. Lekérdezés a partícióval az alkérdezésben: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T

Ajánlott eljárások az adatok partícióval való betöltéséhez:

  1. Válassza a megkülönböztető oszlopot partícióoszlopként (például elsődleges kulcs vagy egyedi kulcs) az adateltérés elkerülése érdekében.
  2. Ha a tábla beépített partícióval rendelkezik, használja a "Tábla fizikai partíciói" partícióbeállítást a jobb teljesítmény érdekében.
  3. Ha az Azure Integration Runtime-t használja az adatok másolására, nagyobb "Adatintegrációs egységek (DIU)" (>4) beállítással több számítási erőforrást használhat. Ellenőrizze a vonatkozó forgatókönyveket.
  4. A "másolási párhuzamosság mértéke" szabályozza a partíciószámokat, ha ezt a számot túl nagyra állítja, az rontja a teljesítményt. Javasoljuk, hogy állítsa ezt a számot (DIU vagy saját üzemeltetésű integrációs modul csomópontjainak száma) * (2–4) értékre.

Példa: teljes terhelés nagy méretű táblából fizikai partíciókkal

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

Példa: lekérdezés dinamikus tartomány partíciójával

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

Mintalekérdezés a fizikai partíció ellenőrzéséhez

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]'

Ha a tábla fizikai partícióval rendelkezik, a "HasPartition" az alábbihoz hasonló "igen" értékként jelenik meg.

SQL-lekérdezés eredménye

Ajánlott eljárás az adatok Azure SQL-adatbázisba való betöltéséhez

Ha adatokat másol Azure SQL adatbázisba, előfordulhat, hogy eltérő írási viselkedésre van szükség:

  • Hozzáfűzés: A forrásadatok csak új rekordokat tartalmazhatnak.
  • Upsert: A forrásadatok beszúrásokkal és frissítésekkel is rendelkeznek.
  • Felülírás: Minden alkalommal egy teljes dimenziótáblát szeretnék újra betölteni.
  • Írás egyéni logikával: További feldolgozásra van szükségem a céltáblába való utolsó beszúrás előtt.

Tekintse meg a megfelelő szakaszokat a szolgáltatásban való konfigurálásról és az ajánlott eljárásokról.

Adatok hozzáfűzése

Az adatok hozzáfűzése a Azure SQL adatbázis-fogadó összekötőjének alapértelmezett viselkedése. a szolgáltatás tömeges beszúrást végez a táblába való hatékony íráshoz. Ennek megfelelően konfigurálhatja a forrást és a fogadót a másolási tevékenységben.

Adatok beszúrása és frissítése (upsert)

Copy tevékenység mostantól támogatja az adatok natív betöltését egy adatbázis ideiglenes táblájába, majd frissíti az adatokat a fogadó táblában, ha van kulcs, és egyéb módon szúrjon be új adatokat. Ha többet szeretne megtudni a másolási tevékenységek upsert beállításairól, olvassa el Azure SQL adatbázist fogadóként.

A teljes tábla felülírása

A preCopyScript tulajdonságot a másolási tevékenység fogadójában konfigurálhatja. Ebben az esetben minden futtatott másolási tevékenységhez először a szolgáltatás futtatja a szkriptet. Ezután futtatja a másolatot az adatok beszúrásához. Ha például a teljes táblát felülírni szeretné a legújabb adatokkal, adjon meg egy szkriptet az összes rekord törléséhez, mielőtt tömegesen betöltené az új adatokat a forrásból.

Adatok írása egyéni logikával

Az adatok egyéni logikával történő megírásának lépései hasonlóak az Upsert-adatok szakaszban leírtakhoz. Ha a forrásadatok céltáblába történő végleges beszúrása előtt további feldolgozást kell alkalmaznia, betölthet egy átmeneti táblába, majd meghívhatja a tárolt eljárástevékenységet, vagy meghívhat egy tárolt eljárást a másolási tevékenység fogadójában az adatok alkalmazásához, vagy használhatja a Leképezési Adatfolyam.

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

Amikor adatokat másol Azure SQL Adatbázisba, konfigurálhat és meghívhat egy felhasználó által megadott tárolt eljárást további paraméterekkel a forrástábla minden kötegén. A tárolt eljárás funkció kihasználja a táblaértékű paraméterek előnyeit.

Tárolt eljárást akkor használhat, ha a beépített másolási mechanizmusok nem szolgálják a célt. Ilyen például, ha további feldolgozást szeretne alkalmazni a forrásadatok végső beszúrása előtt a céltáblába. További feldolgozási példák például az oszlopok egyesítése, további értékek keresése és több táblába való beszúrás.

Az alábbi minta bemutatja, hogyan használható tárolt eljárás egy upsert egy táblába Azure SQL Database-ben. Tegyük fel, hogy a bemeneti adatok és a fogadó marketingtáblája három oszlopból áll: ProfileID, State és Category. Végezze el az upsertet a ProfileID oszlop alapján, és csak a "ProductA" nevű kategóriára alkalmazza.

  1. Az adatbázisban adja meg az sqlWriterTableType nevű táblatípust. A táblatípus sémája megegyezik a bemeneti adatok által visszaadott sémával.

    CREATE TYPE [dbo].[MarketingType] AS TABLE(
        [ProfileID] [varchar](256) NOT NULL,
        [State] [varchar](256) NOT NULL,
        [Category] [varchar](256) NOT NULL
    )
    
  2. Az adatbázisban definiálja az sqlWriterStoredProcedureName nevű tárolt eljárást. Kezeli a megadott forrásból származó bemeneti adatokat, és egyesül a kimeneti táblában. A tárolt eljárásban a táblatípus paraméterneve megegyezik az adatkészletben definiált tableName paraméternévvel .

    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. A Azure Data Factory vagy a Synapse-folyamatban adja meg a másolási tevékenység SQL-fogadó szakaszát az alábbiak szerint:

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

Adatfolyam tulajdonságainak leképezése

A leképezési adatfolyam adatainak átalakításakor az Azure SQL Database-ből olvashat és írhat táblákba. További információ: A forrásátalakítás és a fogadó transzformációja a leképezési adatfolyamokban.

Forrásátalakítás

A Azure SQL-adatbázisra vonatkozó beállítások a forrásátalakítás Forrásbeállítások lapján érhetők el.

Bemenet: Válassza ki, hogy a forrást egy táblára (egyenértékű) vagy egyéni SQL-lekérdezésre mutsa-e Select * from <table-name>.

Lekérdezés: Ha a bemeneti mezőben a Lekérdezés lehetőséget választja, adjon meg egy SQL-lekérdezést a forráshoz. Ez a beállítás felülbírálja az adathalmazban kiválasztott táblákat. Az Order By záradékok itt nem támogatottak, de beállíthat egy teljes SELECT FROM utasítást. Felhasználó által definiált táblafüggvényeket is használhat. select * from udfGetData() egy UDF az SQL-ben, amely egy táblát ad vissza. Ez a lekérdezés létrehoz egy forrástáblát, amelyet használhat az adatfolyamban. A lekérdezések használatával is csökkenthetők a tesztelési és keresési sorok.

Tipp

Az SQL-ben használt közös táblakifejezés (CTE) nem támogatott a leképezési adatfolyam lekérdezési módjában, mert ennek a módnak az előfeltétele, hogy a lekérdezések használhatók legyenek az SQL-lekérdezés FROM záradékában, de a CTE-k ezt nem tehetik meg. A CTE-k használatához létre kell hoznia egy tárolt eljárást a következő lekérdezéssel:

CREATE PROC CTESP @query nvarchar(max)
AS
BEGIN
EXECUTE sp_executesql @query;
END

Ezután használja a Tárolt eljárás módot a leképezési adatfolyam forrásátalakításában, és állítsa be a @query hasonló példát with CTE as (select 'test' as a) select * from CTE. Ezután használhatja a CTE-eket a várt módon.

Tárolt eljárás: Akkor válassza ezt a lehetőséget, ha a forrásadatbázisból végrehajtott tárolt eljárásból szeretne kivetítési és forrásadatokat létrehozni. Beírhatja a sémát, az eljárás nevét és a paramétereket, vagy a Frissítés gombra kattintva megkérheti a szolgáltatást, hogy felderítse a sémákat és az eljárásneveket. Ezután az Importálás gombra kattintva importálhatja az összes eljárásparamétert az űrlap használatával @paraName.

Tárolt eljárás

  • SQL-példa: Select * from MyTable where customerId > 1000 and customerId < 2000
  • Paraméteres SQL-példa: "select * from {$tablename} where orderyear > {$year}"

Kötegméret: Adjon meg egy kötegméretet, hogy nagy mennyiségű adatot olvasson be.

Elkülönítési szint: A leképezési adatfolyamban az SQL-források alapértelmezett értéke a nem véglegesített olvasás. Az elkülönítési szintet itt az alábbi értékek egyikére módosíthatja:

  • Véglegesített olvasás
  • Nem véglegesített olvasás
  • Ismételhető olvasás
  • Szerializálható
  • Nincs (az elkülönítési szint figyelmen kívül hagyása)

Elkülönítési szint

Növekményes kinyerés engedélyezése: Ezzel a beállítással tudathatja az ADF-sel, hogy csak azokat a sorokat dolgozza fel, amelyek a folyamat legutóbbi végrehajtása óta megváltoztak.

Növekményes dátumoszlop: A növekményes kinyerési funkció használatakor ki kell választania azt a dátum/idő oszlopot, amelyet vízjelként szeretne használni a forrástáblában.

Natív változásadatok rögzítésének engedélyezése (előzetes verzió): Ezzel a beállítással tudathatja az ADF-sel, hogy a folyamat utolsó végrehajtása óta csak az SQL-változási adatrögzítési technológia által rögzített változásadatokat dolgozza fel. Ezzel a beállítással a változásadatok , beleértve a sor beszúrását, frissítését és törlését, automatikusan betöltődik anélkül, hogy növekményes dátumoszlopra lenne szükség. Mielőtt ezt a beállítást az ADF-ben használnák, engedélyeznie kell a módosítási adatrögzítést Azure SQL adatbázison. Erről a beállításról az ADF-ben a natív változásadatok rögzítését ismertető cikkben talál további információt.

Kezdje el az olvasást az elejétől: Ha ezt a beállítást növekményes kinyeréssel állítja be, az ADF arra utasítja az ADF-t, hogy olvassa be az összes sort egy folyamat első végrehajtásakor, és be van kapcsolva a növekményes kivonat.

Fogadó átalakítása

A Azure SQL-adatbázisra vonatkozó beállítások a fogadóátalakítás Beállítások lapján érhetők el.

Frissítési módszer: Meghatározza, hogy milyen műveletek engedélyezettek az adatbázis célhelyén. Az alapértelmezett beállítás a beszúrások engedélyezése. A sorok frissítéséhez, frissítéséhez vagy törléséhez alter-row átalakításra van szükség az adott műveletek sorainak címkézéséhez. Frissítések, upserts és deletes esetén egy kulcsoszlopot vagy oszlopot kell beállítani annak meghatározásához, hogy melyik sort kell módosítani.

Kulcsoszlopok

Az itt kulcsként választott oszlopnevet a szolgáltatás a következő frissítés, a upsert és a törlés részeként fogja használni. Ezért olyan oszlopot kell választania, amely megtalálható a Fogadó leképezésében. Ha nem szeretné ebbe a kulcsoszlopba írni az értéket, kattintson a "Kulcsoszlopok írásának kihagyása" elemre.

Paraméterezheti az itt használt kulcsoszlopot a cél Azure SQL adatbázistábla frissítéséhez. Ha több oszlopa van egy összetett kulcshoz, kattintson az "Egyéni kifejezés" elemre, és dinamikus tartalmat adhat hozzá az adatfolyam-kifejezés nyelvével, amely tartalmazhatja az összetett kulcs oszlopneveit tartalmazó sztringeket tartalmazó tömböt.

Táblaművelet: Meghatározza, hogy az írás előtt újra létre kell-e hoznia vagy el kell-e távolítania az összes sort a céltáblából.

  • Nincs: A rendszer nem hajt végre műveletet a táblán.
  • Újra: A tábla elvetve és újra létrehozva lesz. Új tábla dinamikus létrehozása esetén kötelező.
  • Truncate: A céltábla összes sora el lesz távolítva.

Kötegméret: Azt szabályozza, hogy az egyes gyűjtőkben hány sor legyen megírva. A nagyobb kötegméretek javítják a tömörítést és a memóriaoptimalizálást, de az adatok gyorsítótárazásakor a memóriakivételek kiesnek.

A TempDB használata: Alapértelmezés szerint a szolgáltatás globális ideiglenes táblát használ az adatok tárolására a betöltési folyamat részeként. Másik lehetőségként törölje a "TempDB használata" jelölőnégyzet jelölését, és ehelyett kérje meg a szolgáltatást, hogy tárolja az ideiglenes tárolótáblát a fogadóhoz használt adatbázisban található felhasználói adatbázisban.

Temp DB használata

SQL-szkriptek elő- és postázása: Adja meg azokat a többsoros SQL-szkripteket, amelyeket a rendszer a fogadó adatbázisba ír az adatok (előzetes feldolgozás) előtt és után (utófeldolgozás után)

Képernyőkép az SQL-feldolgozási szkriptek előtti és utáni Fogadó beállításairól.

Tipp

  1. Javasoljuk, hogy több parancsot tartalmazó kötegszkripteket több kötegre bontson.
  2. Egy köteg részeként csak az adatdefiníciós nyelv (DDL) és az adatmanipulációs nyelv (DML) olyan utasításai futtathatók, amelyek egyszerű frissítésszámot adnak vissza. További információ a batch-műveletek végrehajtásáról

Hibát tartalmazó sorok kezelése

Amikor Azure SQL ADATBÁZISba ír, bizonyos adatsorok meghiúsulhatnak a cél által beállított korlátozások miatt. Néhány gyakori hiba:

  • A sztring- vagy bináris adatok csonkulnak a táblában
  • A NULL értéket nem lehet beszúrni az oszlopba
  • Az INSERT utasítás ütközött a CHECK kényszerrel

Alapértelmezés szerint az adatfolyam-futtatás az első hibával meghiúsul. Választhatja a Folytatás hibaüzenetet , amely lehetővé teszi, hogy az adatfolyam akkor is befejeződjön, ha az egyes sorok hibásak. A szolgáltatás különböző lehetőségeket kínál a hibasorok kezelésére.

Tranzakció véglegesítése: Adja meg, hogy az adatok egyetlen tranzakcióban vagy kötegekben lesznek-e megírva. Az egyetlen tranzakció rosszabb teljesítményt nyújt, de a megírt adatok nem lesznek láthatók mások számára, amíg a tranzakció be nem fejeződik.

Elutasított adatok kimenete: Ha engedélyezve van, a hibasorokat egy csv-fájlba is kiadhatja Azure Blob Storage vagy egy kiválasztott Azure Data Lake Storage Gen2-fiókba. Ez megírja a hibasorokat három további oszlopmal: az SQL-művelettel( például INSERT vagy UPDATE), az adatfolyam hibakódjával és a sor hibaüzenetével.

Hiba sikerességének jelentése: Ha engedélyezve van, az adatfolyam sikeresként lesz megjelölve, még akkor is, ha hibasorok találhatók.

Hibát tartalmazó sorok kezelése

Adattípus-leképezés az Azure SQL Database-hez

Az adatok Azure SQL adatbázisból vagy adatbázisba történő másolásakor a rendszer az alábbi leképezéseket használja Azure SQL adatbázis-adattípusoktól a köztes adattípusok Azure Data Factory. Ugyanezeket a leképezéseket használja a Synapse-folyamat funkció, amely közvetlenül implementálja Azure Data Factory. Ha meg szeretné tudni, hogy a másolási tevékenység hogyan képezi le a forrásséma és az adattípust a fogadóhoz, olvassa el a Séma- és adattípus-leképezések című témakört.

Azure SQL adatbázis adattípusa A Data Factory köztes adattípusa
bigint Int64
binary Bájt[]
bit Logikai
Char Sztring, Karakter[]
dátum DateTime
Datetime DateTime
datetime2 DateTime
Datetimeoffset DateTimeOffset
Tizedesjegy Tizedesjegy
FILESTREAM attribútum (varbinary(max)) Bájt[]
Float Dupla
image Bájt[]
int Int32
Pénzt Tizedesjegy
nchar Sztring, Karakter[]
ntext Sztring, Karakter[]
numerikus Tizedesjegy
nvarchar Sztring, Karakter[]
valós szám Egyirányú
rowversion 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 Sztring

Megjegyzés

A Decimális köztes típusra leképezhető adattípusok esetében jelenleg Copy tevékenység legfeljebb 28 pontosságot támogat. Ha 28-nál nagyobb pontosságú adatokkal rendelkezik, érdemes lehet sztringgé konvertálni az SQL-lekérdezésben.

Keresési tevékenység tulajdonságai

A tulajdonságok részleteinek megismeréséhez tekintse meg a Keresési tevékenység című témakört.

GetMetadata tevékenység tulajdonságai

A tulajdonságok részleteinek megismeréséhez tekintse meg a GetMetadata tevékenységet

A Always Encrypted használata

Amikor adatokat másol Azure SQL adatbázisból vagy adatbázisba Always Encrypted, kövesse az alábbi lépéseket:

  1. Tárolja az oszlop főkulcsát (CMK) egy Azure-Key Vault. További információ a Always Encrypted Azure Key Vault használatával történő konfigurálásáról

  2. Győződjön meg arról, hogy hozzáfér ahhoz a kulcstartóhoz, amelyben az oszlop főkulcsa (CMK) található. A szükséges engedélyekről ebben a cikkben olvashat .

  3. Hozzon létre társított szolgáltatást az SQL-adatbázishoz való csatlakozáshoz, és engedélyezze a "Always Encrypted" függvényt felügyelt identitás vagy szolgáltatásnév használatával.

Megjegyzés

Azure SQL Database Always Encrypted az alábbi forgatókönyveket támogatja:

  1. A forrás- vagy fogadóadattárak felügyelt identitást vagy szolgáltatásnevet használnak kulcsszolgáltatói hitelesítési típusként.
  2. A forrás- és fogadóadattárak is felügyelt identitást használnak kulcsszolgáltatói hitelesítési típusként.
  3. A forrás- és fogadóadattárak is ugyanazt a szolgáltatásnevet használják, mint a kulcsszolgáltató hitelesítési típusát.

Megjegyzés

Jelenleg Azure SQL adatbázis-Always Encrypted csak a forrásátalakítást támogatja a leképezési adatfolyamokban.

Natív változásadatok rögzítése

Azure Data Factory támogatják a natív változási adatrögzítési képességeket SQL Server, Azure SQL adatbázishoz és Azure SQL MI-hez. Az ADF-leképezési adatfolyam automatikusan észlelheti és kinyerheti a módosított adatokat, beleértve a sor beszúrását, frissítését és törlését az SQL-tárolókban. Mivel nincs kódélmény az adatfolyam leképezésében, a felhasználók egyszerűen elérhetik az SQL-tárolókból származó adatreplikációs forgatókönyvet úgy, hogy céltárolóként hozzáfűznek egy adatbázist. Mi több, a felhasználók bármilyen adatátalakítási logikát megírhatnak a között, hogy növekményes ETL-forgatókönyvet érjenek el az SQL-tárolókból.

Győződjön meg arról, hogy a folyamat és a tevékenység neve változatlan marad, hogy az ADF rögzíthesse az ellenőrzőpontot, hogy a legutóbbi futtatás során a módosított adatok automatikusan lekérhetők legyenek. Ha módosítja a folyamat nevét vagy a tevékenység nevét, a rendszer alaphelyzetbe állítja az ellenőrzőpontot, ami azt eredményezi, hogy az elejétől indul, vagy a következő futtatáskor módosításokat fog kapni. Ha módosítani szeretné a folyamat nevét vagy a tevékenység nevét, de továbbra is megtartja az ellenőrzőpontot a módosított adatok automatikus lekéréséhez az utolsó futtatáskor, használja a saját Checkpoint-kulcsát az adatfolyam-tevékenységben.

A folyamat hibakeresésekor ez a funkció ugyanúgy működik. Ne feledje, hogy az ellenőrzőpont alaphelyzetbe áll, amikor frissíti a böngészőt a hibakeresési futtatás során. Miután elégedett a hibakeresési futtatás folyamateredményével, közzéteheti és elindíthatja a folyamatot. Abban a pillanatban, amikor először aktiválja a közzétett folyamatot, az automatikusan újraindul az elejétől kezdve, vagy mostantól módosításokat kap.

A figyelési szakaszban mindig lehetősége van egy folyamat újrafuttatására. Ha így tesz, a módosított adatok mindig a kijelölt folyamatfuttatás előző ellenőrzőpontjáról lesznek rögzítve.

1. példa:

Ha közvetlenül láncol egy SQL CDC-kompatibilis adatkészletre hivatkozó forrásátalakítást egy leképezési adatfolyam adatbázisára hivatkozva, a rendszer automatikusan alkalmazza az SQL-forráson végrehajtott módosításokat a céladatbázisra, így könnyen lekérheti az adatbázisok közötti adatreplikációs forgatókönyvet. A fogadóátalakítás frissítési metódusával kiválaszthatja, hogy engedélyezi-e a beszúrást, a frissítés engedélyezését vagy a törlést a céladatbázison. A leképezési adatfolyam példaszkriptje az alábbi.

source(output(
		id as integer,
		name as string
	),
	allowSchemaDrift: true,
	validateSchema: false,
	enableNativeCdc: true,
	netChanges: true,
	skipInitialLoad: false,
	isolationLevel: 'READ_UNCOMMITTED',
	format: 'table') ~> source1
source1 sink(allowSchemaDrift: true,
	validateSchema: false,
	deletable:true,
	insertable:true,
	updateable:true,
	upsertable:true,
	keys:['id'],
	format: 'table',
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true,
	errorHandlingOption: 'stopOnFirstError') ~> sink1

2. példa

Ha az SQL CDC-n keresztüli adatreplikáció helyett az ETL-forgatókönyvet szeretné engedélyezni az adatbázis között, kifejezéseket használhat az adatfolyam leképezéséhez, beleértve az isInsert(1), az isUpdate(1) és az isDelete(1) függvényt is, hogy különbséget tegyen a különböző művelettípusokkal rendelkező sorok között. Az alábbi példaszkriptek egyike az adatfolyamok leképezésére egy oszlop származtatásához a következő értékkel: 1 a beszúrt sorok jelzésére, 2 a frissített sorok jelzésére, 3 pedig a törölt sorok jelzésére az alsóbb rétegbeli átalakításokhoz a deltaadatok feldolgozásához.

source(output(
		id as integer,
		name as string
	),
	allowSchemaDrift: true,
	validateSchema: false,
	enableNativeCdc: true,
	netChanges: true,
	skipInitialLoad: false,
	isolationLevel: 'READ_UNCOMMITTED',
	format: 'table') ~> source1
source1 derive(operationType = iif(isInsert(1), 1, iif(isUpdate(1), 2, 3))) ~> derivedColumn1
derivedColumn1 sink(allowSchemaDrift: true,
	validateSchema: false,
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> sink1

Ismert korlátozás:

Következő lépések

A másolási tevékenység által forrásként és fogadóként támogatott adattárak listáját lásd: Támogatott adattárak és formátumok.