Kopírování a transformace dat v Azure SQL Managed Instance pomocí Azure Data Factory nebo Synapse Analytics

VZTAHUJE SE NA: Azure Data Factory Azure Synapse Analytics

Tip

Data Factory v Microsoft Fabric je nová generace Azure Data Factory s jednodušší architekturou, integrovanou AI a novými funkcemi. Pokud s integrací dat začínáte, začněte Fabric Data Factory. Stávající úlohy ADF lze upgradovat na Fabric pro přístup k novým funkcím v oblastech datové vědy, analýz v reálném čase a vytváření sestav.

Tento článek popisuje, jak pomocí aktivity kopírování kopírovat data jak z, tak i do Azure SQL Managed Instance, a jak použít Tok dat k transformaci dat v Azure SQL Managed Instance. Další informace najdete v úvodních článcích pro Azure Data Factory a Synapse Analytics.

Poznámka:

Tento konektor je také k dispozici ve službě Data Factory v Microsoft Fabric. Informace o konfiguraci a funkcích specifických pro Fabric najdete v dokumentaci ke konektoru Fabric Azure SQL Managed Instance.

Podporované funkce

Tento konektor Azure SQL Managed Instance je podporovaný pro následující funkce:

Podporované funkce IR Spravovaný privátní koncový bod
aktivita Copy (zdroj/jímka) (1) (2) ✓ Veřejná ukázka
Mapování toku dat (zdroj/jímka) (1) ✓ Veřejná ukázka
Vyhledávací aktivita (1) (2) ✓ Veřejná ukázka
Aktivita GetMetadata (1) (2) ✓ Veřejná ukázka
Aktivita skriptu (1) (2) ✓ Veřejná ukázka
Aktivita uložené procedury (1) (2) ✓ Veřejná ukázka

(1) Azure Integration Runtime (2) Lokálně hostované Integration Runtime

Pro aktivita Copy podporuje tento konektor Azure SQL Database tyto funkce:

  • Kopírování dat pomocí ověřování SQL a ověřování tokenu aplikace Microsoft Entra s instančním objektem nebo spravovanými identitami pro prostředky Azure
  • Jako zdroj načítá data pomocí dotazu SQL nebo uložené procedury. Můžete také zvolit paralelní kopírování ze zdroje SQL MI. Podrobnosti najdete v části Paralelní kopírování z SQL MI .
  • Jako jímka automaticky vytváří cílovou tabulku, pokud neexistuje na základě zdrojového schématu; připojení dat k tabulce nebo vyvolání uložené procedury s vlastní logikou během kopírování

Požadavky

Pokud chcete získat přístup ke koncovému bodu SQL Managed Instance public, můžete použít spravovaný modul Azure Integration Runtime. Ujistěte se, že je tento veřejný koncový bod povolený, a povolte také jeho provoz ve skupině zabezpečení sítě, aby se služba mohla připojit k vaší databázi. Další informace najdete v těchto doprovodných materiálech.

Pokud chcete získat přístup k privátnímu koncovému bodu SQL Managed Instance, nastavte samostatně hostované Integration Runtime, které má přístup k databázi. Pokud zřídíte místní prostředí Integration runtime ve stejné virtuální síti, kde se nachází vaše spravovaná instance, zajistěte, aby byl počítač Integration runtime v jiné podsíti než tato spravovaná instance. Pokud zřídíte místní prostředí Integration runtime v jiné virtuální síti, než kde se nachází vaše spravovaná instance, můžete pro připojení k virtuální síti použít buď partnerský vztah virtuální sítě, nebo virtuální síť. Další informace najdete v tématu Pojení aplikace k SQL Managed Instance.

Začínáme

K provedení aktivity kopírování pomocí datového kanálu můžete použít jeden z následujících nástrojů nebo sad SDK:

Vytvoření propojené služby do spravované instance Azure SQL pomocí uživatelského rozhraní

Pomocí následujícího postupu vytvořte propojenou službu s spravovanou instancí SQL v uživatelském rozhraní portálu Azure.

  1. Přejděte na kartu Spravovat v pracovním prostoru Azure Data Factory nebo Synapse a vyberte Propojené služby a potom klikněte na Nový:

  2. Vyhledejte SQL a vyberte konektor Azure SQL Server Managed Instance.

    Snímek obrazovky konektoru Managed Instance pro Azure SQL Server.

  3. Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.

    Snímek obrazovky s konfigurací propojené služby pro spravovanou instanci SQL

Podrobnosti konfigurace konektoru

Následující části obsahují podrobnosti o vlastnostech, které slouží k definování Azure Data Factory entit specifických pro konektor SQL Managed Instance.

Vlastnosti propojené služby

Konektor Azure SQL Managed Instance Recommended podporuje protokol TLS 1.3. Viz tuto sekci pro upgrade verze konektoru Azure SQL Managed Instance z "Legacy". Podrobnosti vlastností najdete v odpovídajících sekcích.

Tyto obecné vlastnosti jsou podporovány pro propojenou službu Azure SQL Managed Instance při použití verze Potvrzováno:

Vlastnost Popis Povinné
typ Vlastnost typu musí být nastavená na AzureSqlMI. Ano
server Název nebo síťová adresa instance SQL Serveru, ke které se chcete připojit. Ano
databáze Název databáze. Ano
typ autentizace Typ použitý k ověřování. Povolené hodnoty jsou SQL (výchozí), ServicePrincipal, SystemAssignedManagedIdentity, UserAssignedManagedIdentity. Přejděte do příslušné části ověřování týkající se konkrétních vlastností a požadavků. Ano
vždyŠifrovanáNastavení Zadejte informace o alwaysencryptedsettings , které jsou potřeba k povolení funkce Always Encrypted k ochraně citlivých dat uložených na SQL Serveru pomocí spravované identity nebo instančního objektu. Další informace najdete v příkladu JSON za tabulkou a v části Always Encrypted. Pokud není zadáno, výchozí nastavení "always encrypted" je zakázané. Ne
šifrovat Určete, jestli je vyžadováno šifrování TLS pro všechna data odesílaná mezi klientem a serverem. Možnosti: povinné (pro true, výchozí)/volitelné (pro false)/přísné. Ne
důvěřovatServerovémuCertifikátu Určete, jestli bude kanál při obejití řetězu certifikátů zašifrovaný, aby se ověřil vztah důvěryhodnosti. Ne
hostNameInCertificate Název hostitele, který se má použít při ověřování certifikátu serveru pro připojení. Pokud není zadaný, název serveru se použije k ověření certifikátu. Ne
connectVia Tento Integration Runtime slouží k připojení k úložišti dat. Pokud má vaše spravovaná instance veřejný koncový bod a umožňuje službě přístup, můžete použít místní prostředí Integration Runtime nebo prostředí Azure Integration Runtime. Pokud není zadaný, použije se výchozí Azure Integration Runtime. Ano

Další vlastnosti připojení najdete v následující tabulce:

Vlastnost Popis Povinné
účel aplikace Typ úlohy aplikace při připojování k serveru. Povolené hodnoty jsou ReadOnly a ReadWrite. Ne
Připojovací časový limit (connectTimeout) Doba (v sekundách) čekání na připojení k serveru před ukončením pokusu a vygenerováním chyby. Ne
početPokusuOPřipojení Počet pokusů o opětovné připojení po identifikaci selhání připojení při nečinnosti. Hodnota by měla být celé číslo mezi 0 a 255. Ne
connectRetryInterval (interval opakování připojení) Doba (v sekundách) mezi jednotlivými pokusy o opětovné připojení po identifikaci selhání nečinného připojení. Hodnota by měla být celé číslo mezi 1 a 60. Ne
loadBalanceTimeout Minimální doba (v sekundách), po kterou má připojení zůstat aktivní ve fondu připojení před jeho ukončením. Ne
časový limit příkazu Výchozí doba čekání (v sekundách) před ukončením pokusu o spuštění příkazu a vygenerováním chyby. Ne
integrované zabezpečení Povolené hodnoty jsou true nebo false. Při zadávání false uveďte, zda jsou v připojení zadány uživatelské jméno a heslo. Při zadávání true určuje, jestli se k ověřování používají aktuální přihlašovací údaje účtu Windows. Ne
failoverPartner Název nebo adresa partnerského serveru, ke kterému se má připojit, pokud je primární server v výpadku. Ne
maxPoolSize Maximální počet připojení povolených ve fondu připojení pro konkrétní připojení. Ne
minimálníVelikostPoolu Minimální počet připojení povolených ve fondu připojení pro konkrétní připojení. Ne
multipleActiveResultSets Povolené hodnoty jsou true nebo false. Při zadávání truemůže aplikace udržovat více aktivních sad výsledků (MARS). Když zadáte false, aplikace musí zpracovat nebo zrušit všechny sady výsledků z jedné dávky, aby bylo možné v daném připojení spustit jakékoli jiné dávky. Ne
multiSubnetFailover Povolené hodnoty jsou true nebo false. Pokud se vaše aplikace připojuje ke skupině dostupnosti AlwaysOn v různých podsítích, nastavením této vlastnosti true zajistíte rychlejší detekci a připojení k aktuálně aktivnímu serveru. Ne
velikost paketu Velikost v bajtech síťových paketů používaných ke komunikaci s instancí serveru. Ne
sdružování Povolené hodnoty jsou true nebo false. Po zadání true bude připojení zařazeno do fondu. Když zadáte false, připojení se explicitně otevře při každém vyžádání připojení. Ne

Ověřování SQL

Pokud chcete použít ověřování SQL, kromě obecných vlastností popsaných v předchozí části zadejte následující vlastnosti:

Vlastnost Popis Povinné
userName Uživatelské jméno použité pro připojení k serveru. Ano
heslo Heslo pro uživatelské jméno. Označte toto pole jako SecureString , abyste ho bezpečně uložili. Nebo můžete odložit tajný kód uložený v Azure Key Vault. Ano

Příklad 1: Použití ověřování SQL

{
    "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: Použití ověřování SQL s heslem v 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"
        }
    }
}

Příklad 3: Použití ověřování SQL s funkcí Always Encrypted

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

Ověřování service principal

Pokud chcete použít ověřování pomocí objektu služby, kromě obecných vlastností popsaných v předchozí části zadejte následující vlastnosti.

Vlastnost Popis Povinné
servicePrincipalId Zadejte ID klienta aplikace. Ano
servicePrincipalCredential Přihlašovací údaje aplikačního vlastníka. Zadejte klíč aplikace. Toto pole označte jako SecureString pro bezpečné uložení nebo reference tajného kódu uloženého v Azure Key Vault. Ano
klient Zadejte informace o tenantovi, například název domény nebo ID tenanta, pod kterým se vaše aplikace nachází. Načtěte ho umístěním kurzoru myši v pravém horním rohu portálu Azure. Ano
azureCloudType Pro ověřování pomocí služebního účtu zadejte typ Azure cloudového prostředí, v němž je registrována vaše aplikace Microsoft Entra.
Povolené hodnoty jsou AzurePublic, AzureChina, AzureUsGovernment a AzureGermany. Ve výchozím nastavení se používá cloudové prostředí služby.
Ne

Musíte také postupovat podle následujících kroků:

  1. Postupujte podle pokynů k poskytnutí správce Microsoft Entra pro vaši spravovanou instanci.

  2. Vytvoření aplikace Microsoft Entra z portálu Azure. Poznamenejte si název aplikace a následující hodnoty, které definují propojenou službu:

    • ID aplikace
    • Klíč aplikace
    • ID nájemce
  3. Vytvořte přihlášení pro instanční objekt. V SQL Server Management Studio (SSMS) se ke spravované instanci připojte pomocí účtu SQL Server, který je sysadmin. V hlavní databázi spusťte následující příkaz T-SQL:

    CREATE LOGIN [your application name] FROM EXTERNAL PROVIDER
    
  4. Vytvořte omezené databázové uživatele pro služební hlavní objekt. Připojte se k databázi nebo ke které chcete kopírovat data, spusťte následující příkaz T-SQL:

    CREATE USER [your application name] FROM EXTERNAL PROVIDER
    
  5. Udělte aplikačnímu objektu potřebná oprávnění, stejně jako to běžně děláte pro uživatele SQL a další uživatele. Spusťte následující kód. Další možnosti najdete v tomto dokumentu.

    ALTER ROLE [role name e.g. db_owner] ADD MEMBER [your application name]
    
  6. Nakonfigurujte propojenou službu SQL Managed Instance.

Příklad: Použití ověřování služebního principála

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

Ověřování systémově přiřazené spravované identity

Datovou továrnu nebo pracovní prostor Synapse lze přidružit ke spravované identitě přiřazené systémem pro prostředky Azure, která reprezentuje službu pro ověřování vůči ostatním službám Azure. Tuto spravovanou identitu můžete použít k ověřování SQL Managed Instance. Určená služba může přistupovat k datům z databáze nebo do databáze a kopírovat je pomocí této identity.

Pokud chcete použít ověřování spravované identity přiřazené systémem, zadejte obecné vlastnosti popsané v předchozí části a postupujte podle těchto kroků.

  1. Postupujte podle pokynů k poskytnutí správce Microsoft Entra pro vaši spravovanou instanci.

  2. Vytvořte přihlášení pro spravovanou identitu přiřazenou systémem. V SQL Server Management Studio (SSMS) se ke spravované instanci připojte pomocí účtu SQL Server, který je sysadmin. V hlavní databázi spusťte následující příkaz T-SQL:

    CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDER
    
  3. Vytvořte uživatele izolované databáze pro spravovanou identitu přiřazenou systémem. Připojte se k databázi nebo ke které chcete kopírovat data, spusťte následující příkaz T-SQL:

    CREATE USER [your_factory_or_workspace_name] FROM EXTERNAL PROVIDER
    
  4. Udělte spravované identitě přiřazené systémem potřebná oprávnění jako obvykle pro uživatele SQL a další uživatele. Spusťte následující kód. Další možnosti najdete v tomto dokumentu.

    ALTER ROLE [role name e.g. db_owner] ADD MEMBER [your_factory_or_workspace_name]
    
  5. Nakonfigurujte propojenou službu SQL Managed Instance.

Příklad: Používá ověřování spravované identity přiřazené systémem

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

Ověřování spravované identity přiřazené uživatelem

Pracovní prostor datové továrny nebo Synapse je možné přidružit ke spravovaným identitám přiřazeným uživatelem , které představují službu pro ověřování v jiných službách Azure. Tuto spravovanou identitu můžete použít k ověřování SQL Managed Instance. Určená služba může přistupovat k datům z databáze nebo do databáze a kopírovat je pomocí této identity.

Pokud chcete použít ověřování spravované identity přiřazené uživatelem, kromě obecných vlastností popsaných v předchozí části zadejte následující vlastnosti:

Vlastnost Popis Povinné
přihlašovací údaje Jako objekt přihlašovacích údajů zadejte spravovanou identitu přiřazenou uživatelem. Ano

Musíte také postupovat podle následujících kroků:

  1. Postupujte podle pokynů k poskytnutí správce Microsoft Entra pro vaši spravovanou instanci.

  2. Vytvořte přihlášení pro spravovanou identitu přiřazenou uživatelem. V SQL Server Management Studio (SSMS) se ke spravované instanci připojte pomocí účtu SQL Server, který je sysadmin. V hlavní databázi spusťte následující příkaz T-SQL:

    CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDER
    
  3. Vytvořte uživatele omezené databáze pro spravovanou identitu přiřazenou uživatelem. Připojte se k databázi nebo ke které chcete kopírovat data, spusťte následující příkaz T-SQL:

    CREATE USER [your_factory_or_workspace_name] FROM EXTERNAL PROVIDER
    
  4. Vytvořte jednu nebo více spravovaných identit přiřazených uživatelem a udělte spravované identitě přiřazené uživatelem potřebná oprávnění jako obvykle pro uživatele SQL a další. Spusťte následující kód. Další možnosti najdete v tomto dokumentu.

    ALTER ROLE [role name e.g. db_owner] ADD MEMBER [your_factory_or_workspace_name]
    
  5. Přiřaďte k datové továrně jednu nebo více spravovaných identit přiřazených uživatelem a vytvořte přihlašovací údaje pro každou spravovanou identitu přiřazenou uživatelem.

  6. Nakonfigurujte propojenou službu SQL Managed Instance.

Příklad: Používá ověřování spravované identity přiřazené uživatelem.

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

Starší verze

Tyto obecné vlastnosti jsou podporovány pro propojenou službu Azure SQL Managed Instance při použití Legacy verze:

Vlastnost Popis Povinné
typ Vlastnost typu musí být nastavená na AzureSqlMI. Ano
připojovací řetězec Tato vlastnost určuje informace connectionString potřebné pro připojení k SQL Managed Instance pomocí ověřování SQL. Další informace najdete v následujících příkladech.
Výchozí port je 1433. Pokud používáte SQL Managed Instance s veřejným koncovým bodem, explicitně zadejte port 3342.
Heslo můžete také vložit do Azure Key Vault. Pokud se jedná o ověřování SQL, stáhněte konfiguraci password z připojovací řetězec. Další informace najdete v tématu Storové přihlašovací údaje v Azure Key Vault.
Ano
vždyŠifrovanáNastavení Zadejte informace o alwaysencryptedsettings , které jsou potřeba k povolení funkce Always Encrypted k ochraně citlivých dat uložených na SQL Serveru pomocí spravované identity nebo instančního objektu. Další informace najdete v části Použití funkce Always Encrypted . Pokud není zadáno, výchozí nastavení "always encrypted" je zakázané. Ne
connectVia Tento Integration Runtime slouží k připojení k úložišti dat. Pokud má vaše spravovaná instance veřejný koncový bod a umožňuje službě přístup, můžete použít místní prostředí Integration Runtime nebo prostředí Azure Integration Runtime. Pokud není zadaný, použije se výchozí Azure Integration Runtime. Ano

Informace o různých typech ověřování najdete v následujících částech o konkrétních vlastnostech a požadavcích:

Ověřování SQL pro starší verzi

Pokud chcete použít ověřování SQL, zadejte obecné vlastnosti popsané v předchozí části.

Ověřování aplikační identity pro starší verzi

Pokud chcete použít ověřování pomocí služebního principálu, zadejte kromě obecných vlastností popsaných v předchozí části následující vlastnosti:

Vlastnost Popis Povinné
servicePrincipalId Zadejte ID klienta aplikace. Ano
servicePrincipalKey Zadejte klíč aplikace. Označte toto pole jako SecureString a uložte ho bezpečně nebo reference tajného kódu uloženého v Azure Key Vault. Ano
klient Zadejte informace o tenantovi, například název domény nebo ID tenanta, pod kterým se vaše aplikace nachází. Načtěte ho umístěním kurzoru myši v pravém horním rohu portálu Azure. Ano
azureCloudType Pro ověřování pomocí služebního účtu zadejte typ Azure cloudového prostředí, v němž je registrována vaše aplikace Microsoft Entra.
Povolené hodnoty jsou AzurePublic, AzureChina, AzureUsGovernment a AzureGermany. Ve výchozím nastavení se používá cloudové prostředí služby Data Factory nebo datového kanálu Synapse.
Ne

Musíte také postupovat podle kroků v Ověřování pomocí definičního objektu služby, abyste udělili odpovídající oprávnění.

Ověřování spravované identity přiřazené systémem pro předchozí verzi

Pokud chcete použít ověřování spravované identity přiřazené systémem, postupujte podle stejného kroku pro doporučenou verzi ověřování spravované identity přiřazené systémem.

Ověřování spravované identity přiřazené uživatelem pro starší verzi

Pokud chcete použít ověřování spravované identity přiřazené uživatelem, postupujte podle stejného kroku pro doporučenou verzi ověřování spravované identity přiřazené uživatelem.

Vlastnosti datové sady

Úplný seznam oddílů a vlastností, které můžete použít k definování datových sad, najdete v článku o datových sadách. Tato část obsahuje seznam vlastností podporovaných datovou sadou SQL Managed Instance.

Pokud chcete kopírovat data do a z SQL Managed Instance, podporují se následující vlastnosti:

Vlastnost Popis Povinné
typ Vlastnost typu datové sady musí být nastavená na AzureSqlMITable. Ano
schéma Název schématu Ne pro zdroj, Ano pro jímku
tabulka Název tabulky nebo zobrazení Ne pro zdroj, Ano pro jímku
tableName Název tabulky nebo zobrazení se schématem Tato vlastnost je podporována pro zpětnou kompatibilitu. Pro nové úlohy použijte schema a table. Ne pro zdroj, Ano pro jímku

Příklad

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

Vlastnosti kopírovací aktivity

Úplný seznam oddílů a vlastností dostupných k definování aktivit najdete v článku Pipelines . Tato část obsahuje seznam vlastností podporovaných zdrojem SQL Managed Instance a jímkou.

SQL Managed Instance jako zdroj

Tip

Pokud chcete efektivně načítat data z SQL MI pomocí dělení dat, přečtěte si další informace z paralelní kopie z SQL MI.

Pokud chcete kopírovat data z SQL Managed Instance, podporují se v části zdroje aktivity kopírování následující vlastnosti:

Vlastnost Popis Povinné
typ Vlastnost typu zdroje aktivity kopírování musí být nastavena na SqlMISource. Ano
sqlReaderQuery Tato vlastnost používá vlastní dotaz SQL ke čtení dat. Příklad: select * from MyTable. Ne
sqlReaderStoredProcedureName Tato vlastnost je název uložené procedury, která čte data ze zdrojové tabulky. Poslední příkaz SQL musí být příkaz SELECT v uložené proceduře. Ne
parametry uložené procedury Tyto parametry jsou určené pro uloženou proceduru.
Povolené hodnoty jsou dvojice názvů nebo hodnot. Názvy a velikost písmen parametrů musí odpovídat názvům a velikostem písmen parametrů uložené procedury.
Ne
úroveň izolace Určuje chování uzamčení transakce pro zdroj SQL. Povolené hodnoty jsou: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Pokud není zadáno, použije se výchozí úroveň izolace databáze. Další podrobnosti najdete v tomto dokumentu . Ne
možnosti oddílu Určuje možnosti dělení dat, které se používají k načtení dat z SQL MI.
Povolené hodnoty jsou: None (výchozí), PhysicalPartitionsOfTable a DynamicRange.
Pokud je povolená možnost oddílu (tj. ne None), stupeň paralelismu pro souběžné načtení dat z SQL MI se řídí parallelCopies nastavením aktivity kopírování.
Ne
nastavení oddílu Zadejte skupinu nastavení pro dělení dat.
Použít, pokud možnost oddílu není None.
Ne
V části partitionSettings:
název sloupce pro dělení (partitionColumnName) Zadejte název zdrojového sloupce v typu celé číslo nebo date/datetime (int, smallint, bigint, date, smalldatetime, datetime, datetime2 nebo datetimeoffset), který bude použit dělením rozsahu pro paralelní kopírování. Pokud není zadán, index nebo primární klíč tabulky se automaticky rozpozná a použije jako partiční sloupec.
Použít, pokud je možnost oddílu DynamicRange. Pokud k načtení zdrojových dat použijete dotaz, začněte s ?DfDynamicRangePartitionCondition v klauzuli WHERE. Příklad najdete v části Paralelní kopírování z databáze SQL.
Ne
partitionUpperBound Maximální hodnota sloupce oddílu pro rozdělení rozsahu oddílu. Tato hodnota se používá k určení kroku oddílu, nikoli k filtrování řádků v tabulce. Všechny řádky v tabulce nebo výsledku dotazu se rozdělí a zkopírují. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu.
Použít, pokud je možnost oddílu DynamicRange. Příklad najdete v části Paralelní kopírování z databáze SQL.
Ne
partitionLowerBound Minimální hodnota sloupce oddílu pro rozdělení rozsahů. Tato hodnota se používá k určení kroku oddílu, nikoli k filtrování řádků v tabulce. Všechny řádky v tabulce nebo výsledku dotazu se rozdělí a zkopírují. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu.
Použít, pokud je možnost oddílu DynamicRange. Příklad najdete v části Paralelní kopírování z databáze SQL.
Ne

Je třeba počítat s následujícím:

  • Pokud je sqlReaderQuery určen pro SqlMISource, pak aktivita kopírování spustí tento dotaz proti zdroji SQL Managed Instance, aby získala data. Uloženou proceduru můžete také zadat zadáním sqlReaderStoredProcedureName a storedProcedureParameters , pokud uložená procedura přebírá parametry.
  • Při použití uložené procedury ve zdroji k načtení dat si všimněte, že uložená procedura je navržena jako vrácení jiného schématu, pokud je předána jiná hodnota parametru, může dojít k selhání nebo může dojít k neočekávanému výsledku při importu schématu z uživatelského rozhraní nebo při kopírování dat do databáze SQL s automatickým vytvořením tabulky.

Příklad: Použití dotazu SQL

"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říklad: Použití uložené procedury

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

Definice uložené procedury

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 jako jímka

Tip

Další informace o podporovaných chováních při zapisování, konfiguracích a osvědčených postupech najdete v dokumentu Nejlepší postupy pro načítání dat do SQL Managed Instance.

Pokud chcete kopírovat data do SQL Managed Instance, jsou v části jímky aktivity kopírování podporovány následující vlastnosti:

Vlastnost Popis Povinné
typ Vlastnost typu jímky aktivity kopírování musí být nastavena na SqlMISink. Ano
preCopyScript Tato vlastnost určuje dotaz SQL pro aktivitu kopírování, která se má spustit před zápisem dat do SQL Managed Instance. Vyvolá se pouze jednou za každé spuštění kopírování. Tuto vlastnost můžete použít k vyčištění předem načtených dat. Ne
možnostTabulky Určuje, zda se má automaticky vytvořit tabulka jímky, pokud na základě zdrojového schématu neexistuje. Automatické vytváření tabulek není podporováno, pokud jímka určuje uloženou proceduru. Povolené hodnoty jsou: none (výchozí), autoCreate. Ne
sqlWriterStoredProcedureName Název uložené procedury, která definuje, jak použít zdrojová data do cílové tabulky.
Tato uložená procedura se vyvolá pro každou dávku. Pro operace, které běží pouze jednou a nemají nic společného se zdrojovými daty, například odstranit nebo zkrátit, použijte preCopyScript vlastnost.
Viz příklad vyvolání uložené procedury ze SQL sinku.
Ne
názevParametruTypuTabulkyProUloženouProceduru Název parametru typu tabulky zadaného v uložené proceduře. Ne
sqlWriterTableType Název typu tabulky, který se má použít v uložené proceduře. Aktivita kopírování zpřístupní data přesunutá v dočasné tabulce s tímto typem tabulky. Kód uložené procedury pak může sloučit data, která se kopírují s existujícími daty. Ne
parametry uložené procedury Parametry pro uloženou proceduru.
Povolené hodnoty jsou dvojice názvů a hodnot. Názvy a velikost písmen parametrů musí odpovídat názvům a velikostem písmen parametrů uložené procedury.
Ne
writeBatchSize Počet řádků, které se mají vložit do SQL tabulky na dávku .
Povolené hodnoty jsou celá čísla pro počet řádků. Ve výchozím nastavení služba dynamicky určuje odpovídající velikost dávky na základě velikosti řádku.
Ne
writeBatchTimeout Doba čekání na dokončení operace vložení, upsertu a uložené procedury před vypršením časového limitu.
Povolené hodnoty jsou pro časový rozsah. Příkladem je 00:30:00 po dobu 30 minut. Pokud není zadána žádná hodnota, časový limit je výchozí hodnota 00:30:00.
Ne
 maximálníPočetSoučasnýchPřipojení Horní limit souběžných připojení vytvořených k úložišti dat během spuštění aktivity. Zadejte hodnotu pouze v případech, kdy chcete omezit souběžná připojení.  Ne
WriteBehavior Zadejte chování zápisu aktivity kopírování pro načtení dat do Azure SQL MI.
Povolená hodnota je Insert a Upsert. Ve výchozím nastavení služba používá k načtení dat operaci insert.
Ne
upsertSettings Zadejte skupinu nastavení pro chování zápisu.
Použít, pokud je možnost Upsert WriteBehavior.
Ne
V části upsertSettings:
useTempDB Určete, zda se má jako dočasná tabulka pro upsert použít globální dočasná tabulka nebo fyzická tabulka.
Ve výchozím nastavení služba používá jako globální dočasnou tabulku. hodnota je true.
Ne
interimSchemaName Zadejte dočasné schéma pro vytvoření dočasné tabulky, pokud se použije fyzická tabulka. Poznámka: Uživatel musí mít oprávnění k vytváření a odstraňování tabulek. Ve výchozím nastavení bude dočasná tabulka sdílet stejné schéma jako tabulka jímky.
Použít, pokud je Falseparametr useTempDB .
Ne
klíče Zadejte názvy sloupců pro jedinečnou identifikaci řádků. Můžete použít jeden klíč nebo řadu klíčů. Pokud není zadaný, použije se primární klíč. Ne

Příklad 1: Připojení dat

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

Příklad 2: Vyvolání uložené procedury během kopírování

Další podrobnosti najdete v části Volání uložené procedury ze zdroje SQL MI.

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

Příklad 3: Upsert data

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

Paralelní kopírování z SQL MI

Konektor Azure SQL Managed Instance v aktivitě kopírování poskytuje integrované dělení dat pro paralelní kopírování dat. Možnosti dělení dat najdete na kartě Zdroj kopírovací aktivity.

Snímek obrazovky s možnostmi oddílu

Když povolíte dělené kopírování, aktivita kopírování spouští paralelní dotazy na zdroj SQL MI, aby načetla data podle oddílů. Paralelní stupeň se řídí nastavením aktivity kopírování parallelCopies. Pokud například nastavíte parallelCopies hodnotu čtyři, služba souběžně vygeneruje a spouští čtyři dotazy na základě zadané možnosti a nastavení oddílu a každý dotaz načte část dat z vašeho SQL MI.

Doporučujeme povolit paralelní kopírování s dělením dat, zejména pokud načítáte velké množství dat z SQL MI. Následující konfigurace jsou navržené pro různé scénáře. Při kopírování dat do souborového úložiště dat se doporučuje zapisovat do složky jako více souborů (zadat pouze název složky), v takovém případě je výkon lepší než zápis do jednoho souboru.

Scénář Navrhovaná nastavení
Načtení všech dat z velké tabulky s fyzickými partícemi Možnost oddílu: Fyzické oddíly tabulky.

Během provádění služba automaticky rozpozná fyzické oddíly a kopíruje data podle oddílů.

Pokud chcete zkontrolovat, jestli má vaše tabulka fyzický oddíl, můžete použít tento dotaz.
Úplné načtení z velké tabulky bez fyzického dělení, ale s využitím celočíselného nebo datetime sloupce pro dělení dat. Možnosti oddílu: Dynamický rozsah oddílu
Sloupec pro oddílování (volitelné): Zadejte sloupec použitý pro oddílování dat. Pokud není zadáno, použije se sloupec indexu nebo primárního klíče.
Horní mez oddílu a dolní mez oddílu (volitelné): Určete, jestli chcete určit krok oddílu. To není pro filtrování řádků v tabulce, všechny řádky v tabulce budou rozděleny a zkopírovány. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnoty.

Pokud má například sloupec oddílu ID hodnoty od 1 do 100 a dolní mez nastavíte jako 20 a horní mez jako 80, přičemž paralelní kopírování je 4, služba načte data o 4 oddílech – ID v rozsahu <=20, [21, 50], [51, 80] a >=81.
Načtěte velké množství dat pomocí vlastního dotazu bez fyzického dělení, s použitím celočíselného sloupce nebo sloupce s datem či datem a časem pro rozdělení dat. Možnosti oddílu: Dynamický rozsah oddílu
Dotaz: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Sloupec pro rozdělení: Zadejte sloupec použitý k rozdělení dat.
Horní mez oddílu a dolní mez oddílu (volitelné): Určete, jestli chcete určit krok oddílu. To není pro filtrování řádků v tabulce, všechny řádky ve výsledku dotazu budou rozděleny a zkopírovány. Pokud není zadáno, aktivita kopírování automaticky rozpozná hodnotu.

Pokud má například sloupec oddílu 'ID' hodnoty od 1 do 100 a dolní mez nastavíte jako 20 a horní mez 80, s paralelním kopírováním nastaveným na 4, služba načte data pomocí 4 oddílů s ID v rozsahu <=20, [21, 50], [51, 80] a >=81.

Tady jsou další ukázkové dotazy pro různé scénáře:
1. Dotaz na celou tabulku:
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
2. Dotaz z tabulky s výběrem sloupce a dalšími filtry klauzule where:
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
3. Dotaz s poddotazy:
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
4. Dotaz s partiční v poddotazu:
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Osvědčené postupy pro načtení dat s možností dělení:

  1. Zvolte výrazný sloupec jako sloupec oddílu (například primární klíč nebo jedinečný klíč), abyste se vyhnuli nerovnoměrné distribuci dat.
  2. Pokud má tabulka vestavěný oddíl, použijte možnost "Fyzické oddíly tabulky" ke zlepšení výkonu.
  3. Pokud ke kopírování dat používáte Azure Integration Runtime, můžete nastavit větší jednotky integrace dat Data Integration Units (DIU)" (>4) tak, aby využívaly více výpočetních prostředků. Zkontrolujte tam příslušné scénáře.
  4. "Stupeň paralelismu kopírování" určuje počet oddílů; pokud je tato hodnota nastavena příliš vysoko, může někdy snížit výkon. Doporučujeme nastavit tuto hodnotu na (DIU nebo počet uzlů místního prostředí IR) krát (2 až 4)."

Příklad: Úplné načtení z velké tabulky s fyzickými oddíly

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

Příklad: Dotaz s particí dynamického rozsahu

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

Ukázkový dotaz pro kontrolu fyzického oddílu

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

Pokud má tabulka fyzické rozdělení, zobrazí se "HasPartition" jako "ano", jak je vidět níže.

Výsledek dotazu SQL

Osvědčený postup při načítání dat do SQL Managed Instance

Při kopírování dat do SQL Managed Instance můžete vyžadovat jiné chování při zápisu:

  • Připojit: Zdrojová data mají pouze nové záznamy.
  • Upsert: Zdrojová data obsahují vložení i aktualizace.
  • Přepsat: Pokaždé chci znovu načíst celou tabulku dimenzí.
  • Psaní s vlastní logikou: Potřebuji další zpracování před posledním vložením do cílové tabulky.

Informace o konfiguraci a osvědčených postupech najdete v příslušných částech.

Připojení dat

Přidávání dat je výchozím chováním konektoru typu sink pro SQL Managed Instance. Služba uskuteční hromadné vložení pro efektivní zápis do vaší tabulky. Zdroj a jímku můžete odpovídajícím způsobem nakonfigurovat v aktivitě kopírování.

Upsert dat

aktivita Copy teď podporuje nativní načítání dat do dočasné databázové tabulky a následně aktualizujte data v cílové tabulce, pokud existuje klíč, nebo jinak vložte nová data. Další informace o nastavení upsertu v aktivitách kopírování najdete v tématu SQL Managed Instance jako jímka.

Přepsat celou tabulku

Vlastnost preCopyScript můžete nakonfigurovat v jímce aktivity kopírování. V tomto případě pro každou aktivitu kopírování, která se spouští, služba nejprve spustí skript. Potom spustí kopii pro vložení dat. Pokud chcete například přepsat celou tabulku nejnovějšími daty, zadejte skript, který nejprve odstraní všechny záznamy před hromadným načtením nových dat ze zdroje.

Zápis dat pomocí vlastní logiky

Postup zápisu dat s vlastní logikou je podobný krokům popsaným v části Upsert data . Pokud potřebujete použít dodatečné zpracování před konečným vložením zdrojových dat do cílové tabulky, můžete načíst pracovní tabulku a pak vyvolat aktivitu uložené procedury nebo vyvolat uloženou proceduru v jímce aktivity kopírování, která použije data.

Vyvolání uložené procedury z jímky SQL

Při kopírování dat do SQL Managed Instance můžete také nakonfigurovat a vyvolat uživatelem zadanou uloženou proceduru s dalšími parametry v každé dávce zdrojové tabulky. Funkce uložených procedur využívá parametry s typem tabulky.

Uloženou proceduru můžete použít, když předdefinované mechanismy kopírování neslouží k účelu. Příkladem je, když chcete použít dodatečné zpracování před posledním vložením zdrojových dat do cílové tabulky. Některé další příklady zpracování jsou, když chcete sloučit sloupce, vyhledat další hodnoty a vložit do více než jedné tabulky.

Následující ukázka ukazuje, jak pomocí uložené procedury provést upsert do tabulky v SQL Server databázi. Předpokládejme, že vstupní data a tabulka Marketing jako cílové místo mají tři sloupce: ProfileID, State a Category. Proveďte upsert založený na sloupci ProfileID a použijte ho pouze pro konkrétní kategorii s názvem ProductA.

  1. V databázi definujte typ tabulky se stejným názvem jako sqlWriterTableType. Schéma typu tabulky je stejné jako schéma vrácené vstupními daty.

    CREATE TYPE [dbo].[MarketingType] AS TABLE(
        [ProfileID] [varchar](256) NOT NULL,
        [State] [varchar](256) NOT NULL,
        [Category] [varchar](256) NOT NULL
    )
    
  2. V databázi definujte uloženou proceduru se stejným názvem jako sqlWriterStoredProcedureName. Zpracovává vstupní data ze zadaného zdroje a slučuje se do výstupní tabulky. Název parametru typu tabulky v uložené proceduře je stejný jako tableName definovaný v datové sadě.

    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. V kanálu definujte sekci SQL MI sink v rámci aktivity kopírování následujícím způsobem:

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

Mapování vlastností toku dat

Při transformaci dat při mapování toku dat můžete číst a zapisovat do tabulek z Azure SQL Managed Instance. Další informace najdete v tématu transformace zdroje a transformace jímky v mapování toků dat.

Transformace zdroje

Následující tabulka uvádí vlastnosti podporované Azure SQL Managed Instance zdrojem. Tyto vlastnosti můžete upravit na kartě Možnosti zdroje.

Název Popis Povinné Povolené hodnoty Vlastnost skriptu toku dat
Tabulka Pokud jako vstup vyberete tabulku, tok dat načte všechna data z tabulky zadané v datové sadě. Ne - -
Dotaz Pokud jako vstup vyberete Dotaz, zadejte dotaz SQL pro načtení dat ze zdroje, který přepíše jakoukoli tabulku, kterou zadáte v datové sadě. Použití dotazů je skvělý způsob, jak snížit počet řádků pro testování nebo vyhledávání.

Klauzule Order By není podporovaná, ale můžete nastavit úplný příkaz SELECT FROM. Můžete také použít uživatelem definované funkce tabulek. select * from udfGetData() je UDF v SQL, která vrací tabulku, kterou můžete použít v toku dat.
Příklad dotazu: Select * from MyTable where customerId > 1000 and customerId < 2000
Ne String dotaz
Velikost dávky Zadejte velikost dávky pro rozdělení velkých dat do úseků. Ne Celé číslo batchSize (velikost dávky)
Úroveň izolace Zvolte jednu z následujících úrovní izolace:
- Přečteno potvrzeno
– Read Uncommitted (nepotvrzené čtení, výchozí)
- Opakovatelné čtení
-Serializovatelný
– Žádné (ignorovat úroveň izolace)
Ne READ_COMMITTED (čtení potvrzené)
READ_UNCOMMITTED
Opakovatelná čtení
SERIALIZOVATELNÝ
ŽÁDNÝ
úroveň izolace
Povolení přírůstkové extrakce Pomocí této možnosti můžete informovat službu ADF, aby zpracovávala pouze řádky, které se změnily od posledního spuštění tohoto datového kanálu. Ne - -
Přírůstkový sloupec Při použití funkce přírůstkového extrakce musíte zvolit datum a čas nebo číselný sloupec, který chcete použít jako vodoznak ve zdrojové tabulce. Ne - -
Povolení nativního zachytávání dat změn (Preview) Pomocí této možnosti můžete službě ADF sdělit, aby zpracovávala pouze data přírůstkových změn zachycená pomocí SQL Change Data Capture od posledního spuštění kanálu. S touto možností se delta data včetně vložení, aktualizace a odstranění načtou automaticky, aniž by byl vyžadován přírůstkový sloupec. Před použitím této možnosti v ADF je potřeba zachytit data změn na Azure SQL MI. Další informace o této možnosti v ADF najdete v nativním zachytávání dat změn. Ne - -
Začít číst od začátku Nastavení této možnosti s přírůstkovým extrahováním dá ADF pokyn ke čtení všech řádků při prvním spuštění kanálu se zapnutým přírůstkovým extrahováním. Ne - -

Tip

Běžný výraz tabulky (CTE) v SQL není podporován v režimu dotazu mapování toku dat, protože předpokladem použití tohoto režimu je, že dotazy lze použít v klauzuli FROM dotazu SQL, ale CTE toto nedokáže. Pokud chcete používat CTE, musíte vytvořit uloženou proceduru pomocí následujícího dotazu:

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

Pak použijte režim Uložená procedura ve zdrojové transformaci mapování toku dat a nastavte @query jako v příkladu with CTE as (select 'test' as a) select * from CTE. Pak můžete použít CTE podle očekávání.

Příklad zdrojového skriptu Azure SQL Managed Instance

Pokud jako typ zdroje použijete Azure SQL Managed Instance, přidružený skript toku dat:

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

Transformace jímky

V následující tabulce jsou uvedeny vlastnosti podporované Azure SQL Managed Instance jímkou. Tyto vlastnosti můžete upravit na kartě Možnosti jímky.

Název Popis Povinné Povolené hodnoty Vlastnost skriptu toku dat
Metoda aktualizace Určete, jaké operace jsou povolené v cíli databáze. Výchozí hodnota je povolit pouze vkládání.
Pokud chcete aktualizovat, upsertovat nebo odstranit řádky, je potřeba použít transformaci upravit řádek k označení řádků pro tyto akce.
Ano true nebo false smazatelný
vložitelné
aktualizovatelné
upsertable
Klíčové sloupce U aktualizací, upsertů a odstranění je nutné nastavit klíčové sloupce, aby bylo možné určit, který řádek se má změnit.
Název sloupce, který vyberete jako klíč, se použije jako součást následných aktualizací, upsertů a odstranění. Proto je nutné vybrat sloupec, který existuje v mapování jímky.
Ne Pole klíče
Přeskočte zadávání klíčových sloupců Pokud chcete hodnotu nezapsat do klíčového sloupce, vyberte Přeskočit psaní klíčových sloupců. Ne true nebo false skipKeyWrites
Akce pro tabulku Určuje, zda se mají před zápisem znovu vytvořit nebo odebrat všechny řádky z cílové tabulky.
- Žádná akce: Na tabulce nebude provedena žádná akce.
- Znovu vytvořte: Tabulka bude odstraněna a znovu vytvořena. Vyžaduje se při dynamickém vytváření nové tabulky.
- Truncovat: Všechny řádky z cílové tabulky budou odstraněny.
Ne true nebo false znovu vytvořit
zkrátit
Velikost dávky Určete, kolik řádků se zapisuje v každé dávce. Větší velikosti dávek zlepšují kompresi a optimalizaci paměti, ale při ukládání dat do mezipaměti může dojít k chybám kvůli vyčerpání paměti. Ne Celé číslo batchSize (velikost dávky)
Skripty před-SQL a po-SQL Zadejte víceřádkové skripty SQL, které se spustí před (předzpracováním) a po (případném zpracování), než se data zapíší do vaší cílové databáze. Ne String předSQL dotazy
postSQLs

Tip

  1. Doporučujeme rozdělit jednotlivé skripty s více příkazy do několika samostatných dávek.
  2. Pouze příkazy DDL (Data Definition Language) a DML (Data Manipulation Language), které vracejí jednoduchý počet aktualizací, mohou být spuštěny jako součást dávky. Další informace o provádění dávkových operací

Příklad skriptu jímky Azure SQL Managed Instance

Pokud jako úložiště použijete Azure SQL Managed Instance, přidružený skript toku dat je následující:

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

Vlastnosti aktivity vyhledávání

Zjistit podrobnosti o vlastnostech můžete v aktivitě Vyhledávání.

Vlastnosti aktivity GetMetadata

Podrobnosti o vlastnostech najdete v aktivitě GetMetadata.

Mapování datových typů pro SQL Managed Instance

Při kopírování dat do a z SQL Managed Instance pomocí aktivity kopírování se následující mapování používají z datových typů SQL Managed Instance na interně používané dočasné datové typy služby. Informace o mapování aktivit kopírování ze zdrojového schématu a datového typu do jímky najdete v tématu Mapování schématu a datového typu.

datový typ SQL Managed Instance Dočasný datový typ služby
bigint Int64
binární Bajt[]
bitové logický
char Řetězec, Znak[]
datum Datum a čas
Datum a čas Datum a čas
datetime2 Datum a čas
Datetimeoffset DateTimeOffset
Desetinné číslo Desetinné číslo
Atribut FILESTREAM (varbinary(max)) Bajt[]
Float Hodnota s dvojitou přesností
bitová kopie Bajt[]
int Int32
peníze Desetinné číslo
nchar Řetězec, Znak[]
ntext Řetězec, Znak[]
numerické Desetinné číslo
nvarchar Řetězec, Znak[]
skutečný Jednotlivý
rowversion Bajt[]
smalldatetime Datum a čas
smallint Int16
drobné peníze Desetinné číslo
sql_variant Objekt
poslat SMS Řetězec, Znak[]
čas TimeSpan
časové razítko Bajt[]
tinyint Int16
jedinečný identifikátor Guid
varbinary Bajt[]
varchar Řetězec, Znak[]
xml String

Poznámka:

U datových typů mapovaných na dočasný typ Decimal aktuálně aktivita Copy podporuje přesnost až 28. Pokud máte data, která vyžadují přesnost větší než 28, zvažte převod na řetězec v dotazu SQL.

Použití funkce Always Encrypted

Při kopírování dat z/do SQL Managed Instance pomocí Always Encrypted postupujte následovně:

  1. Uložte sloupcový hlavní klíč (CMK) do Azure Key Vault. Zjistěte více o tom, jak nakonfigurovat funkci Always Encrypted pomocí Azure Key Vault.

  2. Ujistěte se, že máte skvělý přístup k trezoru klíčů, ve kterém je uložený hlavní klíč sloupce (CMK ). Požadovaná oprávnění najdete v tomto článku .

  3. Vytvořte propojenou službu pro připojení k databázi SQL a povolte funkci 'Always Encrypted' pomocí spravované identity nebo služebního principálu.

Poznámka:

SQL Managed Instance Always Encrypted podporuje následující scénáře:

  1. Úložiště dat zdroje nebo vstupně-výstupní úložiště používá spravovanou identitu nebo aplikační identitu jako typ ověřování poskytovatele klíčů.
  2. Úložiště dat zdrojů i cílová úložiště používají spravovanou identitu jako typ ověřování poskytovatele klíčů.
  3. Úložiště dat zdrojů a cílů používají stejného služebního uživatele jako typ ověřování pro poskytovatele klíčů.

Poznámka:

V současné době se SQL Managed Instance Always Encrypted podporuje pouze transformace zdroje v mapování toků dat.

Nativní zachytávání dat změn

Azure Data Factory může podporovat nativní možnosti zachytávání dat změn pro SQL Server, Azure SQL DB a Azure SQL MI. Změněná data, včetně vložení, aktualizace a odstranění řádků v úložištích SQL, je možné automaticky rozpoznat a extrahovat mapováním toku dat ADF. Bez zkušeností s kódem při mapování toku dat můžou uživatelé snadno dosáhnout scénáře replikace dat z úložišť SQL připojením databáze jako cílového úložiště. Kromě toho mohou uživatelé také vytvořit libovolnou logiku transformace dat mezi tím, aby dosáhli scénáře přírůstkového ETL z úložišť SQL.

Ujistěte se, že název kanálu a aktivity zůstane beze změny, aby bylo možné kontrolní bod zaznamenat službou ADF, abyste získali změněná data z posledního spuštění automaticky. Pokud změníte název kanálu nebo aktivity, kontrolní bod bude resetován, což znamená, že při příštím spuštění začnete od začátku, nebo se změny zapracují od tohoto okamžiku. Pokud chcete změnit název kanálu nebo název aktivity, ale přesto zachovat kontrolní bod, abyste získali změněná data z posledního spuštění automaticky, použijte k tomu vlastní klíč kontrolního bodu v aktivitě toku dat.

Při ladění kanálu funguje tato funkce stejně. Mějte na paměti, že kontrolní bod bude obnoven při obnovení prohlížeče během spuštění ladění. Jakmile budete spokojeni s výsledkem potrubí z ladicího spuštění, můžete pokračovat v publikaci a spuštění potrubí. V okamžiku, kdy poprvé spustíte publikovanou pipeline, se buď automaticky restartuje od začátku, nebo se změny uplatní od této chvíle.

V části monitorování máte vždy možnost znovu spustit pipeline. Když tak učiníte, změněná data se vždy zaznamenávají z předchozího kontrolního bodu vybraného datového toku.

Příklad 1:

Když přímo zřetězíte zdrojovou transformaci, která odkazuje na datovou sadu s povoleným SQL CDC, s cílovou transformací, která odkazuje na databázi v datovém toku, změny provedené ve zdroji SQL se automaticky použijí na cílovou databázi. To vám snadno umožní vytvořit scénář replikace dat mezi databázemi. Metodu aktualizace v transformaci jímky můžete použít k výběru, jestli chcete povolit vložení, povolit aktualizaci nebo povolit odstranění v cílové databázi. Ukázkový skript mapování toku dat je následující.

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

Příklad 2:

Pokud chcete povolit scénář ETL místo replikace dat mezi databází prostřednictvím SLUŽBY CDC SQL, můžete použít výrazy v mapování toku dat včetně isInsert(1), isUpdate(1) a isDelete(1) k rozlišení řádků s různými typy operací. Následuje jeden z ukázkových skriptů pro mapování toku dat, který odvozuje jeden sloupec s hodnotou: 1 pro označení vložených řádků, 2 pro označení aktualizovaných řádků a 3 pro označení odstraněných řádků, aby podřízené transformace mohly zpracovat delta data.

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

Známé omezení:

Aktualizace verze spravované instance Azure SQL

Pokud chcete upgradovat verzi Azure SQL Managed Instance, na stránce Upravit propojenou službu vyberte Doporučenou v části Verze a nakonfigurujte propojenou službu s využitím vlastností Propojené služby pro doporučenou verzi.

Následující tabulka ukazuje rozdíly mezi Azure SQL Managed Instance používáním doporučené a starší verze.

Doporučená verze Starší verze
Podpora protokolu TLS 1.3 prostřednictvím encrypt jako strict. Protokol TLS 1.3 se nepodporuje.

Seznam úložišť dat podporovaných jako zdroje a cíle pro aktivitu kopírování najdete v tématu Podporované úložiště dat.