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

Vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Data Factory a Microsoft Fabric a Azure Data Factory következő generációja, egyszerűbb architektúrával, beépített AI-vel és új funkciókkal. Ha még nem ismerkedik az adatintegrációval, kezdje a Fabric Data Factoryvel. A meglévő ADF-számítási feladatok frissíthetők Fabric használatával, hogy elérjék az adatkutatás, a valós idejű elemzés és a jelentéskészítés új képességeit.

Ez a cikk bemutatja, hogyan másolhat adatokat a másolási tevékenység segítségével az Azure SQL Managed Instance-ba és az onnan, valamint hogyan alakíthat át adatokat az Azure SQL Managed Instance-ban a Data Flow használatával. További információért olvassa el a Azure Data Factory és Synapse Analytics bevezető cikkeit.

Támogatott képességek

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

Támogatott képességek integrációs modul Felügyelt privát végpont
Copy activity (forrás/fogadó) (1) (2) ✓ Nyilvános előzetes verzió
Adatfolyam leképezése (forrás/fogadó) ✓ Nyilvános előzetes verzió
Keresési tevékenység (1) (2) ✓ Nyilvános előzetes verzió
GetMetadata-tevékenység (1) (2) ✓ Nyilvános előzetes verzió
Szkripttevékenység (1) (2) ✓ Nyilvános előzetes verzió
Tárolt eljárástevékenység (1) (2) ✓ Nyilvános előzetes verzió

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

A Copy activity esetében ez a Azure SQL Database-összekötő az alábbi függvényeket támogatja:

  • Adata másolása SQL-hitelesítéssel és Microsoft Entra alkalmazás token hitelesítéssel szolgáltatásnévvel vagy felügyelt identitással Azure erőforrásokhoz.
  • Forrásként az adatok lekérése SQL-lekérdezéssel vagy tárolt eljárással. Az SQL MI-forrásból történő párhuzamos másolást is választhatja, a részletekért tekintse meg az SQL MI párhuzamos példányát ismertető szakaszt.
  • Fogadóként, ha a céltábla nem létezik, automatikusan hozzon létre egyet a forrásséma alapján; adjon hozzá adatokat egy táblához, vagy hívjon meg egy tárolt eljárást egyéni logikával a másolás során.

Előfeltételek

A SQL Managed Instance public végpont eléréséhez használhat felügyelt Azure integrációs modult. Ügyeljen arra, hogy a nyilvános végpontot és a nyilvános végpont forgalmát is engedélyezze a hálózati biztonsági csoporton, hogy a szolgáltatás csatlakozni tudjon az adatbázisához. További információkért tekintse meg ezt az útmutatót.

A SQL Managed Instance privát végpont eléréséhez állítson be egy önállóan üzemeltetett integrációs modult, amely hozzáfér az adatbázishoz. Ha a saját üzemeltetésű integrációs modult ugyanazon a virtuális hálózaton helyezi üzembe, ahol a felügyelt példány van, akkor ügyeljen arra, hogy az integrációs modul gépe ne ugyanazon az alhálózaton legyen, mint a felügyelt példány. Ha a saját üzemeltetésű integrációs modult egy másik virtuális hálózaton helyezi üzembe, mint ahol a felügyelt példány van, akkor virtuális hálózati társviszony-létesítést vagy virtuális hálózatok közötti kapcsolatot is használhat. További információkért lásd: Csatlakoztassa alkalmazását az SQL Managed Instance-hez.

Első lépések

A másolási tevékenység végrehajtásához egy folyamattal használhatja az alábbi eszközök vagy SDK-k egyikét:

Csatolt szolgáltatás létrehozása egy Azure SQL Felügyelt Példányhoz a felhasználói felületen

Az alábbi lépésekkel egy felügyelt SQL-példányhoz társított szolgáltatást hozhat létre a Azure portál felhasználói felületén.

  1. Keresse meg a Azure Data Factory vagy Synapse-munkaterület Kezelés lapját, é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 az Azure SQL Server Managed Instance-összekötőt.

    Képernyőkép az Azure SQL Server Managed Instance csatlakozóról.

  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 egy felügyelt SQL-példány társított szolgáltatáskonfigurációjáról.

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

A következő szakaszok az SQL Managed Instance-összekötőre jellemző Azure Data Factory entitások meghatározásához használt tulajdonságok részleteit ismertetik.

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

A Azure SQL Managed Instance összekötő Recommended verziója támogatja a TLS 1.3-at. Tekintse meg ezt a szakaszt az Azure SQL Managed Instance összekötő verziójának frissítéséhez a Legacy változatról. A tulajdonság részleteiért tekintse meg a megfelelő szakaszokat.

Ezek az általános tulajdonságok Azure SQL Managed Instance társított szolgáltatás esetében támogatottak a Recommended verzió alkalmazásakor:

Tulajdonság Leírás Kötelező
típus A típustulajdonságnak AzureSqlMI-nek kell lennie. Igen
kiszolgáló Annak az SQL Server-példánynak a neve vagy hálózati címe, amelyhez csatlakozni szeretne. Igen
adatbázis Az adatbázis neve. Igen
hitelesítésTípus A hitelesítéshez használt típus. Az engedélyezett értékek: SQL (alapértelmezett), ServicePrincipal, SystemAssignedManagedIdentity, UserAssignedManagedIdentity. Lépjen az adott tulajdonságokra és előfeltételekre vonatkozó hitelesítési szakaszra. Igen
alwaysEncryptedBeállítások Adja meg az Always Encrypted engedélyezéséhez szükséges Alwaysencryptedsettings-adatokat , amelyek felügyelt identitással vagy szolgáltatásnévvel védik az SQL Serveren tárolt bizalmas adatokat. További információ: A táblázatot és az Always Encrypted használata szakaszt követő JSON-példa. Ha nincs megadva, az alapértelmezett mindig titkosított beállítás le van tiltva. Nem
titkosít Adja meg, hogy szükség van-e TLS-titkosításra az ügyfél és a kiszolgáló között küldött összes adathoz. Beállítások: kötelező (igaz, alapértelmezett)/nem kötelező (hamis esetén)/szigorú. Nem
trustServerCertificate Adja meg, hogy a csatorna titkosítva lesz-e a tanúsítványlánc megkerülése közben a megbízhatóság ellenőrzéséhez. Nem
hostNameInCertificate (hosztnév a tanúsítványban) A kapcsolat kiszolgálótanúsítványának ellenőrzésekor használandó állomásnév. Ha nincs megadva, a rendszer a kiszolgáló nevét használja a tanúsítvány érvényesítéséhez. Nem
connectVia Ez az integrációs modul az adattárhoz való csatlakozásra szolgál. Használhat saját üzemeltetésű integrációs futtatókörnyezetet vagy Azure integrációs modult, ha a felügyelt példány nyilvános végponttal rendelkezik, és lehetővé teszi a szolgáltatás számára annak elérését. Ha nincs megadva, a rendszer az alapértelmezett Azure integrációs modult használja. Igen

További kapcsolati tulajdonságokért tekintse meg az alábbi táblázatot:

Tulajdonság Leírás Kötelező
applicationIntent Az alkalmazás számítási feladatainak típusa kiszolgálóhoz való csatlakozáskor. Az engedélyezett értékek a ReadOnly és a ReadWrite. Nem
connectTimeout A kiszolgálóval való kapcsolat várakozási ideje (másodpercben), mielőtt megszakítja a kísérletet, és hibát okozna. Nem
kapcsolódásiKísérletekSzáma Az inaktív kapcsolati hiba azonosítása után megkísérelt újracsatlakozások száma. Az értéknek 0 és 255 közötti egész számnak kell lennie. Nem
connectRetryInterval Az inaktív kapcsolati hiba azonosítása után az egyes újracsatlakozási kísérletek között eltelt idő (másodpercben). Az értéknek 1 és 60 közötti egész számnak kell lennie. Nem
loadBalanceTimeout A kapcsolat minimális időtartama (másodpercben) ahhoz, hogy a kapcsolat a kapcsolat megszakadása előtt a kapcsolatkészletben éljen. Nem
parancshatáridő Az alapértelmezett várakozási idő (másodpercben), mielőtt befejezi a parancs végrehajtására tett kísérletet, és hibát okozna. Nem
integrált biztonság Az engedélyezett értékek a következők: true vagy false. Amikor beállítja a false-t, jelezze, hogy a felhasználónév és a jelszó meg van-e adva a kapcsolatban. A true megadásakor azt jelzi, hogy a rendszer az aktuális Windows fiók hitelesítő adatait használja-e a hitelesítéshez. Nem
feladatátvételi partner Annak a partnerkiszolgálónak a neve vagy címe, amelyhez csatlakozni szeretne, ha az elsődleges kiszolgáló nem működik. Nem
maxPoolSize Az adott kapcsolat kapcsolatkészletében engedélyezett kapcsolatok maximális száma. Nem
minimális fürdő méret Az adott kapcsolat kapcsolatkészletében engedélyezett kapcsolatok minimális száma. Nem
multipleActiveResultSets Az engedélyezett értékek a következők: true vagy false. Ha megadja true, egy alkalmazás több aktív eredményhalmazt (MARS) is képes fenntartani. Ha megadja false, az alkalmazásnak egy kötegből kell feldolgoznia vagy megszakítania az összes eredményhalmazt, mielőtt bármilyen más köteget végrehajthat az adott kapcsolaton. Nem
multiSubnetFailover Az engedélyezett értékek a következők: true vagy false. Ha az alkalmazás egy AlwaysOn rendelkezésre állási csoporthoz (AG) csatlakozik különböző alhálózatokon, a tulajdonság true beállítása gyorsabb észlelést és kapcsolatot biztosít az aktuálisan aktív kiszolgálóval. Nem
csomagméret A kiszolgálópéldányokkal való kommunikációhoz használt hálózati csomagok bájtban megadott mérete. Nem
Erőforrás-konszolidáció Az engedélyezett értékek a következők: true vagy false. Amikor megadja true, a kapcsolat csoportosítva lesz. Amikor megadja a false paramétert, a kapcsolat minden kérésnél explicit módon kerül megnyitásra. Nem

SQL-hitelesítés

Az SQL-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ő
Felhasználónév A kiszolgálóhoz való csatlakozáshoz használt felhasználónév. Igen
jelszó A felhasználónév jelszava. Jelölje meg ezt a mezőt SecureStringként a biztonságos tároláshoz. Vagy az Azure Key Vaultban tárolt titkot is használhatja. Igen

1. példa: SQL-hitelesítés használata

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

Example 2: SQL-hitelesítés használata jelszóval a Azure Key Vault

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

3. példa: SQL-hitelesítés használata Always Encrypted használatával

{
    "name": "AzureSqlMILinkedService",
    "properties": {
        "type": "AzureSqlMI",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "authenticationType": "SQL",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "alwaysEncryptedSettings": {
            "alwaysEncryptedAkvAuthType": "ServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Szolgáltatási főazonosító 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. Igen
servicePrincipalCredential A szolgáltatási főszereplő hitelesítő adatai. Adja meg az alkalmazás kulcsát. Jelölje meg ezt a mezőt SecureStringként, hogy biztonságosan tárolja, vagy referensként a Azure Key Vault-ben tárolt titkos kulcsokat. Igen
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 portál jobb felső sarkában. Igen
Azure felhőtípus A szolgáltatásnév-hitelesítéshez adja meg az Azure felhőkörnyezet típusát, amelyre a Microsoft Entra alkalmazás regisztrálva van.
Az engedélyezett értékek: AzurePublic, AzureChina, AzureUsGovernment és AzureGermany. Alapértelmezés szerint a szolgáltatás felhőkörnyezetét használja a rendszer.
Nem

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

  1. Kövesse a lépéseket a Microsoft Entra rendszergazda telepítéséhez az Ön Managed Instance-jára.

  2. A Microsoft Entra alkalmazás létrehozása a Azure portálról. Jegyezze fel az alkalmazás nevét és a társított szolgáltatást meghatározó alábbi értékeket:

    • Pályázat azonosítója
    • Alkalmazáskulcs
    • Bérlőazonosító
  3. Hozzon létre bejelentkezéseket a platformfő számára. SQL Server Management Studio (SSMS) alkalmazásban csatlakozzon a felügyelt példányhoz egy sysadmin SQL Server Management Studio-fiókkal. A főadatbázisban futtassa a következő T-SQL-t:

    CREATE LOGIN [your application name] FROM EXTERNAL PROVIDER
    
  4. Adatbázis-felhasználók létrehozása egy elkülönített adatbázisban a szolgáltatási főfiókhoz. Csatlakozzon ahhoz az adatbázishoz, amelyből adatokat szeretne másolni, és futtassa a következő T-SQL-t:

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

    ALTER ROLE [role name e.g. db_owner] ADD MEMBER [your application name]
    
  6. SQL Managed Instance társított szolgáltatás konfigurálása.

Példa: szolgáltatásfő hitelesítés használata

{
    "name": "AzureSqlDbLinkedService",
    "properties": {
        "type": "AzureSqlMI",
        "typeProperties": {
            "server": "<name or network address of the SQL server instance>",
            "database": "<database name>",
            "encrypt": "<encrypt>",
            "trustServerCertificate": false,
            "hostNameInCertificate": "<host name>",
            "authenticationType": "ServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalCredential": {
                "type": "SecureString",
                "value": "<application key>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

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

Az adat-előállító vagy a Synapse-munkaterület társítható egy rendszer által hozzárendelt, Azure erőforrásokhoz tartozó felügyelt identitással, amelyet a szolgáltatás más Azure szolgáltatásokhoz való hitelesítésére használ. Ezt a felügyelt identitást SQL Managed Instance hitelesítéshez használhatja. A kijelölt szolgáltatás ezzel az identitással férhet hozzá és másolhat adatokat az adatbázisból vagy az adatbázisba.

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

  1. Kövesse a lépéseket a Microsoft Entra rendszergazda telepítéséhez az Ön Managed Instance-jára.

  2. Bejelentkezések létrehozása a rendszer által hozzárendelt felügyelt identitáshoz. SQL Server Management Studio (SSMS) alkalmazásban csatlakozzon a felügyelt példányhoz egy sysadmin SQL Server Management Studio-fiókkal. A főadatbázisban futtassa a következő T-SQL-t:

    CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDER
    
  3. Tartalmazott adatbázis-felhasználók létrehozása a rendszer által hozzárendelt felügyelt identitáshoz. Csatlakozzon ahhoz az adatbázishoz, amelyből adatokat szeretne másolni, és futtassa a következő T-SQL-t:

    CREATE USER [your_factory_or_workspace_name] FROM EXTERNAL PROVIDER
    
  4. Adja meg a rendszer által hozzárendelt felügyelt identitásnak a szükséges engedélyeket, ahogyan azt az SQL-felhasználók és mások esetében általában teszi. Futtassa a következő kódot. További lehetőségekért tekintse meg ezt a dokumentumot.

    ALTER ROLE [role name e.g. db_owner] ADD MEMBER [your_factory_or_workspace_name]
    
  5. SQL Managed Instance társított szolgáltatás konfigurálása.

Példa: rendszer által hozzárendelt felügyelt identitás hitelesítése

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

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

Az adat-előállító vagy a Synapse-munkaterület társítható egy user által hozzárendelt felügyelt identitással amely a szolgáltatást más Azure szolgáltatásokhoz való hitelesítéshez jelöli. Ezt a felügyelt identitást SQL Managed Instance hitelesítéshez használhatja. A kijelölt szolgáltatás ezzel az identitással férhet hozzá és másolhat adatokat az adatbázisból vagy az adatbázisba.

A felhasználó által hozzárendelt felügyelt identitáshitelesí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ő
azonosító adatok Adja meg a felhasználó által hozzárendelt felügyelt identitást hitelesítő objektumként. Igen

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

  1. Kövesse a lépéseket a Microsoft Entra rendszergazda telepítéséhez az Ön Managed Instance-jára.

  2. Bejelentkezések létrehozása a felhasználó által hozzárendelt felügyelt identitáshoz. SQL Server Management Studio (SSMS) alkalmazásban csatlakozzon a felügyelt példányhoz egy sysadmin SQL Server Management Studio-fiókkal. A főadatbázisban futtassa a következő T-SQL-t:

    CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDER
    
  3. 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 adatokat szeretne másolni, és futtassa a következő T-SQL-t:

    CREATE USER [your_factory_or_workspace_name] FROM EXTERNAL PROVIDER
    
  4. 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ásnak a szükséges engedélyeket, ahogyan azt az SQL-felhasználók és mások esetében általában teszi. Futtassa a következő kódot. További lehetőségekért tekintse meg ezt a dokumentumot.

    ALTER ROLE [role name e.g. db_owner] ADD MEMBER [your_factory_or_workspace_name]
    
  5. 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.

  6. SQL Managed Instance társított szolgáltatás konfigurálása.

Példa: felhasználó által hozzárendelt felügyelt identitáshitelesítést használ

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

Régi verzió

Ezek az általános tulajdonságok Azure SQL Managed Instance társított szolgáltatások esetében támogatottak a Legacy verzió alkalmazásakor:

Tulajdonság Leírás Kötelező
típus A típustulajdonságnak AzureSqlMI-nek kell lennie. Igen
connectionString Ez a tulajdonság megadja a connectionString adatokat, amelyek az SQL-hitelesítéssel való csatlakozáshoz szükségesek a SQL Managed Instance. További információkért tekintse meg az alábbi példákat.
Az alapértelmezett port az 1433. Ha SQL Managed Instance használ nyilvános végponttal, explicit módon adja meg a 3342-s portot.
Egy jelszót is tárolhat az Azure Key Vaultban. Ha SQL-hitelesítésről van szó, vegye ki a password konfigurációt a kapcsolati karakterláncból. További információért lásd: Hitelesítő adatok tárolása az Azure Key Vaultban.
Igen
alwaysEncryptedBeállítások Adja meg az Always Encrypted engedélyezéséhez szükséges Alwaysencryptedsettings-adatokat , amelyek felügyelt identitással vagy szolgáltatásnévvel védik az SQL Serveren tárolt bizalmas adatokat. További információ: Az Always Encrypted használata szakasz. 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ásra szolgál. Használhat saját üzemeltetésű integrációs futtatókörnyezetet vagy Azure integrációs modult, ha a felügyelt példány nyilvános végponttal rendelkezik, és lehetővé teszi a szolgáltatás számára annak elérését. Ha nincs megadva, a rendszer az alapértelmezett Azure integrációs modult használja. Igen

A különböző hitelesítési típusok esetében tekintse meg az egyes tulajdonságokra és előfeltételekre vonatkozó alábbi szakaszokat:

SQL-hitelesítés az örökölt verzióhoz

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

Szolgáltatásfelelős hitelesítése az örökölt verzióhoz

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. Igen
szolgáltatásFőKulcs Adja meg az alkalmazás kulcsát. Jelölje meg ezt a mezőt SecureStringként, hogy biztonságosan tárolja, vagy referensként egy Azure Key Vault-ben tárolt titkos kulcsot. Igen
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 portál jobb felső sarkában. Igen
Azure felhőtípus A szolgáltatásnév-hitelesítéshez adja meg az Azure felhőkörnyezet típusát, amelyre a Microsoft Entra alkalmazás regisztrálva van.
Az engedélyezett értékek: AzurePublic, AzureChina, AzureUsGovernment és AzureGermany. Alapértelmezés szerint a rendszer az adat-előállítót vagy a Synapse-folyamat felhőkörnyezetét használja.
Nem

A szolgáltatásnév-hitelesítés lépéseit is követnie kell a megfelelő engedély megadásához.

Rendszer által hozzárendelt felügyelt identitás hitelesítése az örökölt verzióhoz

A rendszer által hozzárendelt felügyelt identitás hitelesítésének használatához kövesse ugyanazt a lépést a rendszer által hozzárendelt felügyelt identitáshitelesítés ajánlott verziójához.

Felhasználó által hozzárendelt felügyelt identitás hitelesítése az öröklött verzióhoz

A felhasználó által hozzárendelt felügyelt identitáshitelesítés használatához kövesse ugyanazt a lépést a felhasználó által hozzárendelt felügyelt identitáshitelesítés ajánlott verziójához.

Adathalmaz tulajdonságai

Az adathalmazok definiálásához használható szakaszok és tulajdonságok teljes listáját az adathalmazokról szóló cikkben találja. Ez a szakasz a SQL Managed Instance adatkészlet által támogatott tulajdonságok listáját tartalmazza.

Adatok másolásához SQL Managed Instance-be és onnan, a következő tulajdonságok támogatottak:

Tulajdonság Leírás Kötelező
típus Az adathalmaz típustulajdonságának AzureSqlMITable értékre kell állítania. Igen
séma A séma neve. Nem a forrásra, igen a bemenetre
tábla A tábla/nézet neve. Nem a forrásra, igen a bemenetre
tableName A táblázat/nézet neve sémával. Ez a tulajdonság támogatja a visszamenőleges kompatibilitást. Új számítási feladatokhoz használja schema és table. Nem a forrásra, igen a bemenetre

Példa

{
    "name": "AzureSqlMIDataset",
    "properties":
    {
        "type": "AzureSqlMITable",
        "linkedServiceName": {
            "referenceName": "<SQL Managed Instance linked service name>",
            "type": "LinkedServiceReference"
        },
        "schema": [ < physical schema, optional, retrievable during authoring > ],
        "typeProperties": {
            "schema": "<schema_name>",
            "table": "<table_name>"
        }
    }
}

Copy activity tulajdonságok

A tevékenységek definiálásához használható szakaszok és tulajdonságok teljes listáját a Folyamatok című cikkben találja. Ez a szakasz a SQL Managed Instance forrás és fogadó által támogatott tulajdonságok listáját tartalmazza.

SQL Managed Instance forrásként

Tipp.

Ha hatékonyan szeretne adatokat betölteni az SQL MI-ből adatparticionálással, további információt az SQL MI párhuzamos másolásáról tudhat meg.

Adatok másolása az SQL Managed Instance-ból során az alábbi tulajdonságok támogatottak a másolási tevékenység forrás szakaszában.

Tulajdonság Leírás Kötelező
típus A másolási tevékenység forrásának típustulajdonságát sqlMISource-ra kell állítani. Igen
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 Ez a tulajdonság 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
tárolt eljárás paraméterei Ezek a paraméterek a tárolt eljáráshoz tartoznak.
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ásparaméterek nevével és burkolatával.
Nem
izolációs szint Az SQL-forrás tranzakciózárolási viselkedését adja meg. 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
partícióopciók Megadja az SQL MI-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ós beállítás engedélyezve van (vagyis nem None), az SQL MI-ből egyidejűleg betöltendő adatok párhuzamossági fokát a parallelCopies másolási tevékenység beállítása szabályozza.
Nem
partíciós beállítások Adja meg az adatparticionálás beállításainak csoportját.
Akkor alkalmazható, ha a partíciós beállítás nem None.
Nem
A következő 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, bigint, datesmalldatetime, datetime, , datetime2) , datetimeoffsetamelyet a tartomány particionálása használ a párhuzamos másoláshoz. 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 alkalmazható, ha a partíció beállítása DynamicRange. Ha lekérdezést használ a forrásadatok lekéréséhez, a WHERE záradékban kapcsoljon ?DfDynamicRangePartitionCondition be. Példaként tekintse meg a párhuzamos másolat készítése az SQL-adatbázisból című részt.
Nem
partitionUpperBound A partíciótartomány felosztásához használt partícióoszlop maximális értéke. Ez az érték a partíciós léptetés meghatározására szolgál, nem a tábla sorai szűrésére. A tábla vagy 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.
Akkor alkalmazható, ha a partíció beállítása DynamicRange. Példaként tekintse meg a párhuzamos másolat készítése az SQL-adatbázisból című részt.
Nem
partitionLowerBound A partíciótartományok felosztásához használt partícióoszlop minimális értéke. Ez az érték a partíciós léptetés meghatározására szolgál, nem a tábla sorai szűrésére. A tábla vagy 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.
Akkor alkalmazható, ha a partíció beállítása DynamicRange. Példaként tekintse meg a párhuzamos másolat készítése az SQL-adatbázisból című részt.
Nem

Vegye figyelembe a következő szempontokat:

  • Ha sqlReaderQuery van megadva a SqlMISource esetében, a másolási tevékenység a SQL Managed Instance forráson futtatja ezt a lekérdezést 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 más sémát ad 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 hiba vagy váratlan eredmény jelenik meg.

Példa: SQL-lekérdezés használata

"activities":[
    {
        "name": "CopyFromAzureSqlMI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SQL Managed Instance input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SqlMISource",
                "sqlReaderQuery": "SELECT * FROM MyTable"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Példa: Tárolt eljárás használata

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

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

SQL Managed Instance fogadóként

Tipp.

További információ a támogatott írási viselkedésekről, konfigurációkról és ajánlott gyakorlatokról az Ajánlott gyakorlatok az adatok SQL Managed Instance betöltésére című dokumentumban.

Az adatok SQL Managed Instance-ra való másolásához a másolási tevékenység fogadó részében az alábbi tulajdonságokat támogatja:

Tulajdonság Leírás Kötelező
típus A másolási tevékenység fogadójának típus tulajdonságát SqlMISink értékre kell állítani. Igen
preCopyScript Ez a tulajdonság meghatároz egy SQL-lekérdezést a másolási művelethez, amelyet az adatok SQL Kezelt Példányba való írása előtt kell végrehajtani. Másolat készítésekor csak egyszer lesz meghívva. Ezzel a tulajdonságkal törölheti az előre betöltött adatokat. Nem
táblázatOpció Meghatározza, hogy automatikusan létrehozza-e a fogadótáblát, ha még 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 határozza 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űveletek esetén, 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 tulajdonságot preCopyScript .
Tekintse meg az SQL-fogadó tárolt eljárásának meghívására vonatkozó példát.
Nem
tároltEljárásTáblatípusParaméternév 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
tárolt eljárás paraméterei 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ásparaméterek nevével és burkolatával.
Nem
writeBatchSize Az SQL-táblába kötegenként beszúrandó sorok száma.
Az engedélyezett értékek a sorok számához egész számok lehetnek. Alapértelmezés szerint a szolgáltatás dinamikusan határozza meg a megfelelő kötegméretet a sorméret alapján.
Nem
writeBatchTimeout Az időkorlát elérése előtti beszúrási, upsert és tárolt eljárás művelet befejezésének várakozási ideje.
Az engedélyezett értékek az időtartamra vonatkoznak. Ilyen például a "00:30:00" 30 percig. Ha nincs megadva érték, az időtúllépés alapértelmezett értéke "00:30:00".
Nem
 maximális egyidejű kapcsolatok Az adattárhoz a tevékenység futtatása során létrehozott 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 MI-be való betöltéséhez.
Az engedélyezett értékek: Beszúrás és 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.
Alkalmazza, ha a WriteBehavior beállítás a következő Upsert: .
Nem
A következő alatt upsertSettings:
useTempDB Adja meg, hogy a globális ideiglenes táblát vagy a fizikai táblát használja-e köztes táblaként az upserthez.
Alapértelmezés szerint a szolgáltatás globális ideiglenes táblát használ köztes táblaként. Az érték true.
Nem
interimSchemaName Adja meg a köztes sémát a köztes tábla létrehozásához fizikai tábla használata esetén. 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 fogja megosztani, mint a fogadó táblát.
Akkor alkalmazandó, ha a useTempDB opció False.
Nem
kulcsok Adja meg az egyedi sorazonosításhoz szükséges 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": "CopyToAzureSqlMI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<SQL Managed Instance output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SqlMISink",
                "tableOption": "autoCreate",
                "writeBatchSize": 100000
            }
        }
    }
]

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

További információ az SQL MI-fogadó tárolt eljárásának meghívásáról.

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

3. példa: Adatok beszúrása vagy frissítése

"activities":[
    {
        "name": "CopyToAzureSqlMI",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<SQL Managed Instance output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "SqlMISink",
                "tableOption": "autoCreate",
                "writeBehavior": "upsert",
                "upsertSettings": {
                    "useTempDB": true,
                    "keys": [
                        "<column name>"
                    ]
                },            
            }
        }
    }
]

Párhuzamos másolás az SQL MI-ből

A másolási tevékenység Azure SQL Managed Instance ö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 az SQL MI-forráson az adatok partíciók szerinti betöltéséhez. A párhuzamossági fokot a másolási tevékenység parallelCopies beállítása vezérli. Ha például négyre van állítva parallelCopies , a szolgáltatás egyszerre generál és futtat négy lekérdezést a megadott partícióbeállítás és -beállítások alapján, és minden lekérdezés lekéri az adatok egy részét az SQL MI-bő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 az SQL MI-ből. A következő javasolt konfigurációk különböző forgatókönyvekhez. Ha fájlalapú adattárba másol adatokat, ajánlott több fájlként írni egy mappába (csak a mappa nevét kell megadni), ebben az esetben a teljesítmény jobb, mint egyetlen fájlba írni.

Szcenárió Javasolt beállítások
Teljes terhelés nagy 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 táblából fizikai partíciók nélkül, egész számmal vagy datetime oszlopmal az adatparticionáláshoz. 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ődleges kulcs oszlopot használja.
A partíció felső határa és a partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós lépést. Ez nem a táblázat sorainak szűrésére, hanem a tábla összes sorának particionálása és másolása történik. 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ó kötést 20-ra, a felső kötést pedig 80-ra állítja be, a párhuzamos másolás 4-zel történik, a szolgáltatás 4 partícióval kéri le az adatokat – azonosítók az =20, [21, 50], [51, 80] és <=81 tartományban>.
Nagy mennyiségű adat betöltése személyre szabott lekérdezéssel fizikai partíciók nélkül, az adat partícionáláshoz egész vagy dátum/dátum-idő oszloppal. Partícióbeállítások: Dinamikus tartomány partíciója.
Lekérdezés: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Partícióoszlop: Adja meg az adatok particionálásához használt oszlopot.
A partíció felső határa és a partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós lépést. 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.

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 be, a párhuzamos másolás 4-zel, 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 minta lekérdezéseket talál a különböző forgatókönyvekhez:
1. A teljes tábla lekérdezése:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
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 ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Lekérdezés allekérdezésekkel:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition 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 ?DfDynamicRangePartitionCondition) AS T

Ajánlott eljárások az adatok partíciós beállítással 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, a jobb teljesítmény érdekében használja a "Tábla fizikai partíciói" partícióbeállítást.
  3. Ha Azure Integration Runtime használ adatok másolásához, nagyobb "Data integration Units (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 foka" szabályozza a partíciószámokat, a túl nagy szám beállítása néha rontja a teljesítményt, javasoljuk, hogy állítsa be ezt a számot (DIU vagy a saját üzemeltetésű INTEGRÁCIÓs csomópontok száma) * (2–4).

Példa: teljes terhelés fizikai partíciókkal rendelkező nagy táblából

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

Példa: lekérdezés dinamikus tartománypartícióval

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

Minta leké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óan "igen" értékként jelenik meg.

Sql-lekérdezés eredménye

Az adatok betöltésének legjobb gyakorlata SQL Managed Instancekhez

Ha adatokat másol SQL Managed Instance, eltérő írási viselkedésre lehet szükség:

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

A konfiguráláshoz és az ajánlott eljárásokhoz tekintse meg a megfelelő szakaszokat.

Adatok hozzáfűzése

Az adatok hozzáfűzése az SQL Managed Instance fogadó-összekötő alapértelmezett viselkedése. A szolgáltatás tömeges beszúrással hatékonyan ír a táblába. 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)

A Copy tevékenység mostantól támogatja az adatok natív módon történő betöltését egy adatbázis ideiglenes táblájába, majd frissíti a fogadó táblában lévő adatokat, ha létezik a kulcs, ellenkező esetben új adatokat szúr be. További információt a másolási tevékenységek upsert beállításairól a SQL Managed Instance fogadóként talál.

A teljes táblázat felülírása

A preCopyScript tulajdonságot a másolási tevékenység célhelyén konfigurálhatja. Ebben az esetben minden futtatott másolási tevékenységnél 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 felül szeretné írni a teljes táblát a legújabb adatokkal, adjon meg egy szkriptet, amely először törli az összes rekordot, 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ő írásának lépései hasonlóak az Upsert adatszakaszban leírtakhoz. Ha további feldolgozást kell alkalmaznia a forrásadatok céltáblába történő végleges beszúrása előtt, 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.

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

Amikor adatokat másol a SQL Managed Instance-be, lehetősége van egy felhasználó által megadott tárolt eljárást konfigurálni és meghívni, további paraméterekkel a forrástábla minden egyes kötegére. 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 felelnek meg a célnak. Ilyen például, ha a forrásadatok végső beszúrása előtt további feldolgozást szeretne alkalmazni a céltáblába. További feldolgozási példák 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 azt mutatja be, hogyan használható tárolt eljárás a upsert végrehajtására a SQL Server adatbázis táblájában. 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ű adott kategóriára alkalmazza.

  1. Az adatbázisban adja meg az sqlWriterTableType nevével megegyező 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 adja meg a tárolt eljárást az sqlWriterStoredProcedureName névvel megegyező néven. 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 adathalmazban 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. Az adatcsatornában adja meg az SQL MI célállomás szakaszt a másolási tevékenységben az alábbi módon:

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

Adatfolyam-tulajdonságok leképezése

Az adatok átalakításakor a leképezési adatfolyamban olvashat és írhat táblázatokat az Azure SQL Managed Instance alkalmazásával. További információkért tekintse meg a forrásátalakítást, és a fogadóátalakítást a leképezési adatfolyamokban.

Forrásátalakítás

Az alábbi táblázat felsorolja Azure SQL Managed Instance forrás által támogatott tulajdonságokat. Ezeket a tulajdonságokat a Forrás beállításai lapon szerkesztheti.

Név Leírás Kötelező Megengedett értékek Adatfolyam-szkript tulajdonság
Tábla Ha bemenetként a Táblázat lehetőséget választja, az adatfolyam lekéri az adathalmazban megadott táblából az összes adatot. Nem - -
Lekérdezés Ha bemenetként a Lekérdezés lehetőséget választja, adjon meg egy SQL-lekérdezést az adatok forrásból való lekéréséhez, amely felülírja az adathalmazban megadott táblázatokat. A lekérdezések használatával csökkenthetők a tesztelési és keresési sorok.

Az Order By záradék nem támogatott, de megadhat 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, amit használhat az adatfolyamban.
Példa lekérdezésre: Select * from MyTable where customerId > 1000 and customerId < 2000
Nem Sztring lekérdezés
Köteg mérete Adjon meg egy csomagméretet a nagy méretű adatok részekre bontásához és olvasásához. Nem Egész csomagmért
Elkülönítési szint Válasszon az alábbi elkülönítési szintek közül:
- Lekötött olvasás
– Nem véglegesített olvasás (alapértelmezett)
- Ismételhető olvasás
-Szerializálható
- Nincs (az elkülönítési szint figyelmen kívül hagyása)
Nem OLVASÁS_ELKÖTELEZETT
READ_UNCOMMITTED
ismételhető_olvasás
SZERIALIZÁLHATÓ
NINCS
izolációs szint
Növekményes kivonat engedélyezése Ezzel a beállítással az ADF-nek csak azokat a sorokat kell feldolgoznia, amelyek a folyamat legutóbbi végrehajtása óta megváltoztak. Nem - -
Növekményes oszlop A növekményes kinyerési funkció használatakor ki kell választania azt a dátum-/idő- vagy numerikus oszlopot, amelyet vízjelként szeretne használni a forrástáblában. Nem - -
Natív módosítási adatrögzítés engedélyezése (előzetes verzió) Ezzel a beállítással azt jelezheti az ADF-nek, hogy a folyamat legutóbbi 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 rendszer automatikusan betölti a deltaadatokat, beleértve a sor beszúrását, frissítését és törlését anélkül, hogy növekményes oszlopra lenne szükség. Kell engedélyezni a változtatási adatrögzítést az Azure SQL MI-n, mielőtt használja ezt az opciót az ADF-ben. Az ADF-ben elérhető beállítással kapcsolatos további információkért lásd a natív változásadatok rögzítését. Nem - -
Olvasás indítása az elejétől Ha ezt a beállítást az inkrementális kivonattal használja, az ADF az összes sort beolvassa a folyamat első végrehajtásakor, amikor az inkrementális kivonat be van kapcsolva. Nem - -

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, mivel 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 CT-eket a várt módon.

példa Azure SQL Managed Instance forrásszkriptre

Ha Azure SQL Managed Instance használ forrástípusként, a társított adatfolyam-szkript a következő:

source(allowSchemaDrift: true,
    validateSchema: false,
    isolationLevel: 'READ_UNCOMMITTED',
    query: 'select * from MYTABLE',
    format: 'query') ~> SQLMISource

Fogadó átalakítása

Az alábbi táblázat felsorolja Azure SQL Managed Instance fogadó által támogatott tulajdonságokat. Ezeket a tulajdonságokat a Fogadó beállításai lapon szerkesztheti.

Név Leírás Kötelező Megengedett értékek Adatfolyam-szkript tulajdonság
Frissítési módszer Adja meg, hogy milyen műveletek engedélyezettek az adatbázis célhelyén. Az alapértelmezett beállítás csak a beszúrások engedélyezése.
A sorok frissítéséhez, módosításához vagy törléséhez szükséges a sorok címkézése egy Sorok módosítása átalakítás segítségével.
Igen true vagy false törölhető
beszúrható
frissíthető
módosítható és beszúrható
Kulcsoszlopok Frissítések, módosítások (upsert) és törlések esetén meg kell határozni a kulcsoszlop(ok) beállítását annak érdekében, hogy melyik sort kell módosítani.
A kulcsként megadott oszlopnevet a rendszer a következő frissítés, a frissítés, a törlés részeként fogja használni. Ezért ki kell választania egy olyan oszlopot, amely a fogadóleképezésben található.
Nem Tömb kulcsok
Kulcsoszlopok írásának kihagyása Ha nem szeretné az értéket a kulcsoszlopba írni, válassza a "Kulcsoszlopok írásának kihagyása" lehetőséget. Nem true vagy false skipKeyWrites
Táblázatművelet Meghatározza, hogy az írás előtt újra létre kell-e hozni vagy eltávolítani az összes sort a céltáblából.
- Nincs: A rendszer nem hajt végre műveletet a táblán.
- Újra létrehozás: A tábla el lesz vetve és újra lesz létrehozva. Új tábla dinamikus létrehozása esetén kötelező.
- Törlés: A céltábla összes sora el lesz távolítva.
Nem true vagy false újra előállít
csonkol
Köteg mérete Adja meg, hogy hány sor íródjon az egyes kötegekben. A nagyobb kötegméretek javítják a tömörítést és a memóriaoptimalizálást, de adatok gyorsítótárazása esetén fennáll a memóriakivétel kockázata. Nem Egész csomagmért
Elő- és utólagos SQL szkriptek Adja meg azokat a többsoros SQL-szkripteket és parancsokat, amelyek a Sink adatbázisba való adatírás előtti (előzetes feldolgozás) és utáni (utófeldolgozás) végrehajtásra kerülnek. Nem Sztring preSQLs
postSQLs

Tipp.

  1. Ajánlott több parancsot tartalmazó kötegszkripteket több kötegre bontani.
  2. Egy köteg részeként csak a Data Definition Language (DDL) és a Data Manipulation Language (DML) utasítások futtathatók, amelyek egyszerű frissítésszámot adnak vissza. További információ a kötegműveletek végrehajtásáról

Azure SQL Managed Instance fogadószkript példa

Ha Azure SQL Managed Instance használ fogadótípusként, a társított adatfolyam-szkript a következő:

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:false,
    insertable:true,
    updateable:true,
    upsertable:true,
    keys:['keyColumn'],
    format: 'table',
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> SQLMISink

Keresési tevékenység tulajdonságai

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

GetMetadata tevékenység tulajdonságai

A tulajdonságok részleteinek megismeréséhez ellenőrizze a GetMetadata-tevékenységet

Adattípus-leképezés SQL Managed Instance

Amikor adatokat másolnak SQL Managed Instance-re és onnan másolási tevékenység segítségével, a következő leképezéseket használják az SQL Managed Instance adattípusai és a szolgáltatáson belül használt köztes adattípusok között. Ha szeretné megtudni, hogyan képezi le a másolási tevékenység a forrássémát és adattípust a célállomásra, tekintse meg a séma- és adattípus-leképezéseket.

SQL Managed Instance adattípus Köztes szolgáltatás adattípusa
bigint Int64
bináris Bájt[]
bit logikai
char Sztring, Karakter[]
dátum: Dátum/idő
Dátum és idő Dátum/idő
datetime2 Dátum/idő
Dátum és idő eltérés DateTimeOffset
Decimális Decimális
FILESTREAM attribútum (varbinary(max)) Bájt[]
Lebegőpontos típus Kétszeres
kép Bájt[]
int Int32
pénz Decimális
nchar Sztring, Karakter[]
ntext Sztring, Karakter[]
Numerikus Decimális
nvarchar Sztring, Karakter[]
valós Egyszeres
sor verzió Bájt[]
smalldatetime Dátum/idő
smallint Int16
smallmoney Decimális
sql_variant Objektum
SMS Sztring, Karakter[]
idő TimeSpan
timestamp Bájt[]
tinyint Int16
egyediazonosító GUID
varbinary Bájt[]
varchar Sztring, Karakter[]
xml Sztring

Feljegyzés

A decimális köztes típusra leképezhető adattípusok esetében jelenleg Copy activity legfeljebb 28 pontosságot támogat. Ha 28-nál nagyobb pontosságot igénylő adatokkal rendelkezik, fontolja meg az SQL-lekérdezések sztringgé alakítását.

Always Encrypted használata

Ha adatokat másol az SQL Managed Instance-ból/-ba az Always Encrypted használatával, kövesse az alábbi lépéseket:

  1. Tárolja az oszlop főkulcsot (CMK) egy Azure Key Vault-ban. További információ arról, hogyan konfigurálható az Always Encrypted az Azure Key Vault használatával.

  2. Győződjön meg arról, hogy megfelelő hozzáféréssel rendelkezik ahhoz a kulcstartóhoz, amelyben az oszlop főkulcsa (CMK) található. A szükséges engedélyekért tekintse meg ezt a cikket .

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

Feljegyzés

SQL Managed Instance Always Encrypted az alábbi forgatókönyveket támogatja:

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

Feljegyzés

A SQL Managed Instance Always Encrypted jelenleg csak a forrásátalakítás támogatott a leképezési adatfolyamokban.

Natív változásadat-rögzítés

Azure Data Factory támogathatja a natív változásadat-rö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. Ráadásul a felhasználók bármilyen adatátalakítási logikát is megírhatnak az SQL-tárolók növekményes ETL-forgatókönyvének elérése érdekében.

Győződjön meg arról, hogy a pipeline és a tevékenység neve változatlan marad, hogy az ADF rögzíthesse az ellenőrzőpontot, így automatikusan megkaphatja a legutóbbi futtatás óta megváltozott adatokat. Ha módosítja a feldolgozási sor nevét vagy a tevékenység nevét, az ellenőrzőpont alaphelyzetbe lesz állítva, ami azt eredményezi, hogy Ön elölről kezdi vagy mostantól kapja a változásokat a következő futtatásban. Ha módosítani szeretné a folyamat nevét vagy tevékenységnevét, de továbbra is megtartja az ellenőrzőpontot, hogy az utolsó futtatásból származó módosított adatokat automatikusan megkapja, használja a saját Ellenőrzőpont-kulcsát az adatfolyam-tevékenységben ennek eléréséhez.

A folyamat hibakeresésekor ez a funkció ugyanúgy működik. Vegye figyelembe, 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 folyamatának eredményével, közzéteheti és aktiválhatja a folyamatot. Abban a pillanatban, amikor először aktiválja a közzétett folyamatot, az automatikusan újraindul az elejétől, vagy mostantól módosításokat kap.

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

1. példa:

Ha közvetlenül összekapcsol egy forrásátalakítást, amely egy SQL CDC-kompatibilis adatkészletre hivatkozik, egy adatbázisra hivatkozó célelőállító átalakítással egy leképezési adatfolyamban, az SQL-forráson történt változtatásokat a rendszer automatikusan alkalmazza a céladatbázisra, amely megkönnyíti az adatbázisok közötti adatreplikációs forgatókönyv megvalósítását. A fogadóátalakítás frissítési metódusával kiválaszthatja, hogy engedélyezi-e a beszúrást, engedélyezi a frissítést vagy engedélyezi a törlést a céladatbázison. A leképezési adatfolyam példaszkriptje az alábbi módon érhető el.

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ében, beleértve az isInsert(1), az isUpdate(1) és az isDelete(1) függvényt a sorok különböző művelettípusokkal való megkülönböztetéséhez. Az alábbi példaszkriptek egyike az adatfolyamok leképezésére egy oszlopból származó érték alapján: 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:

  • Az ADF csak az SQL CDC nettó módosításait tölti be cdc.fn_cdc_get_net_changes_ keresztül.

A Azure SQL Managed Instance verzió frissítése

A Azure SQL Managed Instance verzió frissítéséhez a Szerkesztési társított szolgáltatás lapon válassza a Recommended lehetőséget a Version területen, és konfigurálja a társított szolgáltatást az ajánlott verzióhoz tartozó Linked szolgáltatás tulajdonságaira hivatkozva.

Az alábbi táblázat az ajánlott és az örökölt verziót használó Azure SQL Managed Instance közötti különbségeket mutatja be.

Ajánlott verzió Régi verzió
TLS 1.3 támogatása a következőképpenencrypt: strict . A TLS 1.3 nem támogatott.

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.