Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í v kanálech systému Azure Data Factory nebo Azure Synapse kopírovat data z a do Azure SQL Database a pomocí nástroje Data Flow přetvářet data v Azure SQL Database. Další informace najdete v úvodním článku Azure Data Factory nebo Azure Synapse Analytics.
Podporované funkce
Tento konektor Azure SQL Database je podporovaný pro následující funkce:
| Podporované funkce | IR | Spravovaný privátní koncový bod |
|---|---|---|
| Copy activity (zdroj/jímka) | (1) (2) | ✓ |
| Mapování toku dat (zdroj/jímka) | (1) | ✓ |
| Vyhledávací aktivita | (1) (2) | ✓ |
| Aktivita GetMetadata | (1) (2) | ✓ |
| Aktivita skriptu | (1) (2) | ✓ |
| Aktivita uložené procedury | (1) (2) | ✓ |
(1) Azure Integration Runtime (2) Lokálně hostované Integration Runtime
Pro Copy activity 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 Azure SQL Database. Podrobnosti najdete v části Parallel z databáze SQL.
- 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í
Pokud používáte vrstvu Azure SQL Database serverless, mějte na paměti, že když je server pozastavený, spuštění aktivity se nezdaří, místo aby čekalo na připravenost automatického obnovení. Můžete přidat opakování aktivity nebo zřetězit další aktivity, abyste měli jistotu, že je server aktivní při skutečném spuštění.
Důležité
Pokud kopírujete data pomocí prostředí Azure Integration Runtime, nakonfigurujte pravidlo brány firewall na úrovni serveru tak, aby Azure služby mohly přistupovat k serveru. Pokud kopírujete data pomocí místního prostředí Integration Runtime, nakonfigurujte bránu firewall tak, aby povolila odpovídající rozsah IP adres. Tento rozsah zahrnuje IP adresu počítače, která se používá pro připojení k Azure SQL Database.
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:
- Nástroj pro kopírování dat
- portál Azure
- .NET SDK
- Python SDK
- Azure PowerShell
- REST API
- šablona Azure Resource Manager
Vytvoření propojené služby Azure SQL Database pomocí uživatelského rozhraní
Pomocí následujícího postupu vytvořte v uživatelském rozhraní portálu Azure propojenou službu Azure SQL Database.
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ý:
Vyhledejte SQL a vyberte konektor Azure SQL Database.
Nakonfigurujte podrobnosti o službě, otestujte připojení a vytvořte novou propojenou službu.
Podrobnosti konfigurace konektoru
Následující části obsahují podrobnosti o vlastnostech, které slouží k definování entit kanálu Azure Data Factory nebo Synapse specifických pro konektor Azure SQL Database.
Vlastnosti propojené služby
Konektor Azure SQL Database Doporučená verze podporuje protokol TLS 1.3. V této části upgradujte verzi konektoru Azure SQL Database z Legacy. Podrobnosti vlastností najdete v odpovídajících sekcích.
Tip
Pokud se setkáte s chybou s kódem "UserErrorFailedToConnectToSqlServer" a zobrazí se zpráva ve smyslu "Limit relace pro databázi je XXX a byl dosažen", přidejte Pooling=false do svého connection stringu a zkuste to znovu.
Pooling=false se doporučuje také pro konfiguraci propojené služby SHIR (Self Hosted Integration Runtime). Sdružování a další parametry připojení lze přidat jako nové názvy parametrů a hodnoty v části Další vlastnosti připojení ve formuláři pro vytvoření propojené služby.
Doporučená verze
Tyto obecné vlastnosti jsou podporovány pro propojenou službu Azure SQL Database, když použijete Doporučeno verze:
| Vlastnost | Popis | Povinné |
|---|---|---|
| typ | Vlastnost typu musí být nastavena na AzureSqlDatabase. | 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 se vaše úložiště dat nachází v privátní síti, můžete použít prostředí Azure Integration Runtime nebo místní prostředí Integration Runtime. Pokud není zadaný, použije se výchozí Azure Integration Runtime. | Ne |
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: Použití ověřování SQL
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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: heslo v Azure Key Vault
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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: Použití funkce Always Encrypted
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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í 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 |
| 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 Data Factory nebo datového kanálu Synapse. |
Ne |
Musíte také postupovat podle následujících kroků:
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
Vytvořte správce Microsoft Entra pro váš server na portálu Azure, pokud jste to ještě neudělali. Správce Microsoft Entra musí být uživatelem Microsoft Entra nebo skupinou Microsoft Entra, ale nemůže to být služební účet. Tento krok se provede proto, abyste v dalším kroku mohli pomocí identity Microsoft Entra vytvořit izolovaného uživatele databáze pro aplikaci.
Vytvořte omezené databázové uživatele pro služební hlavní objekt. Připojte se k databázi, do které chcete kopírovat data, pomocí nástrojů, jako je SQL Server Management Studio, s identitou Microsoft Entra, která má oprávnění alespoň na úrovni ALTER ANY USER. Spusťte následující příkaz T-SQL:
CREATE USER [your application name] FROM EXTERNAL PROVIDER;Udělte instančnímu objektu služby potřebná oprávnění jako obvykle pro uživatele SQL nebo jiné. Spusťte následující kód. Další možnosti najdete v tomto dokumentu.
ALTER ROLE [role name] ADD MEMBER [your application name];Nakonfigurujte propojenou službu Azure SQL Database v pracovním prostoru Azure Data Factory nebo Synapse.
Příklad propojené služby, který používá ověřování instančního objektu
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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
Datová továrna nebo pracovní prostor Synapse může být přidružen k spravované identitě přiřazené systémem pro prostředky Azure , která představuje službu při ověřování v jiných prostředcích v Azure. Tuto spravovanou identitu můžete použít k ověřování Azure SQL Database. Určený pracovní prostor továrny nebo pracovní prostor Synapse může přistupovat k datům do vaší databáze nebo z ní 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ů.
Vytvořte správce Microsoft Entra pro váš server na portálu Azure, pokud jste to ještě neudělali. Správcem Microsoft Entra může být Microsoft Entra uživatel nebo skupina Microsoft Entra. Pokud skupině udělíte roli správce spravované identity, přeskočte kroky 3 a 4. Správce má úplný přístup k databázi.
Vytvořte uživatele databáze s omezením pro spravovanou identitu. Připojte se k databázi, do které chcete kopírovat data, pomocí nástrojů, jako je SQL Server Management Studio, s identitou Microsoft Entra, která má oprávnění alespoň na úrovni ALTER ANY USER. Spusťte následující příkaz T-SQL:
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;Udělte spravované identitě 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] ADD MEMBER [your_resource_name];Nakonfigurujte propojenou službu Azure SQL Database.
Příklad
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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 lze přidružit ke spravovaným identitám, které jsou přiřazeny uživatelem
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ů:
Vytvořte správce Microsoft Entra pro váš server na portálu Azure, pokud jste to ještě neudělali. Správcem Microsoft Entra může být Microsoft Entra uživatel nebo skupina Microsoft Entra. Pokud skupině se spravovanou identitou přiřazenou uživatelem udělíte roli správce, přeskočte krok 3. Správce má úplný přístup k databázi.
Vytvořte uživatele omezené databáze pro spravovanou identitu přiřazenou uživatelem. Připojte se k databázi, do které chcete kopírovat data, pomocí nástrojů, jako je SQL Server Management Studio, s identitou Microsoft Entra, která má oprávnění alespoň na úrovni ALTER ANY USER. Spusťte následující příkaz T-SQL:
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;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] ADD MEMBER [your_resource_name];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.
Nakonfigurujte propojenou službu Azure SQL Database.
Příklad
{
"name": "AzureSqlDbLinkedService",
"properties": {
"type": "AzureSqlDatabase",
"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 Database při použití Legacy verze:
| Vlastnost | Popis | Povinné |
|---|---|---|
| typ | Vlastnost typu musí být nastavena na AzureSqlDatabase. | Ano |
| připojovací řetězec | Zadejte informace potřebné pro připojení k instanci Azure SQL Database pro vlastnost connectionString. Do Azure Key Vault můžete také vložit heslo nebo instanční klíč. Pokud se jedná o ověřování SQL, stáhněte konfiguraci password z connection string. 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 se vaše úložiště dat nachází v privátní síti, můžete použít prostředí Azure Integration Runtime nebo místní prostředí Integration Runtime. Pokud není zadaný, použije se výchozí Azure Integration Runtime. | Ne |
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
- Ověřování servisní identity pro starší verzi
- Ověřování spravované identity přiřazené systémem pro starší verzi
- Ověřování spravované identity přiřazené uživatelem pro starší verzi
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í dostupných pro definování datových sad najdete v tématu Datové sady.
Pro datovou sadu Azure SQL Database se podporují následující vlastnosti:
| Vlastnost | Popis | Povinné |
|---|---|---|
| typ | Vlastnost typu datové sady musí být nastavená na AzureSqlTable. | 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 vlastností datové sady
{
"name": "AzureSQLDbDataset",
"properties":
{
"type": "AzureSqlTable",
"linkedServiceName": {
"referenceName": "<Azure SQL Database linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
Vlastnosti kopírovací aktivity
Úplný seznam oddílů a vlastností dostupných pro definování aktivit najdete v tématu Pipelines. Tato část obsahuje seznam vlastností podporovaných zdrojem Azure SQL Database a jímkou.
Azure SQL Database jako zdroj
Tip
Pokud chcete efektivně načítat data z Azure SQL Database pomocí dělení dat, přečtěte si další informace z Parallel copy z databáze SQL.
Pokud chcete kopírovat data z Azure SQL Database, podporují se v části aktivity kopírování source následující vlastnosti:
| Vlastnost | Popis | Povinné |
|---|---|---|
| typ | Vlastnost typu zdroje aktivity kopírování musí být nastavena na AzureSqlSource. Typ SqlSource je stále podporován kvůli zpětné kompatibilitě. | Ano |
| sqlReaderQuery | Tato vlastnost používá vlastní dotaz SQL ke čtení dat. Příklad: select * from MyTable. |
Ne |
| sqlReaderStoredProcedureName | 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 | Parametry 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 používané k načtení dat z Azure SQL Database. Povolené hodnoty jsou: None (výchozí), PhysicalPartitionsOfTable a DynamicRange. Pokud je povolená možnost oddílu (tj. ne None), je stupeň paralelismu souběžného načítání dat z Azure SQL Database řízen nastavením parallelCopies 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 je detekován automaticky a použit jako sloupec pro oddíl.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 zadán pro AzureSqlSource, aktivita kopírování spustí tento dotaz na zdroj Azure SQL Database, aby data získala. 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 dotazu SQL
"activities":[
{
"name": "CopyFromAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure SQL Database input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureSqlSource",
"sqlReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Příklad uložené procedury
"activities":[
{
"name": "CopyFromAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure SQL Database input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureSqlSource",
"sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
"storedProcedureParameters": {
"stringData": { "value": "str3" },
"identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
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
Azure SQL Database jako jímka
Tip
Přečtěte si další informace o podporovaných chováních při zápisu, konfiguracích a osvědčených postupech v dokumentu Osvědčené postupy pro načítání dat do Azure SQL Database.
Pokud chcete zkopírovat data do Azure SQL Database, podporují se v části aktivity kopírování sink následující vlastnosti:
| Vlastnost | Popis | Povinné |
|---|---|---|
| typ | Vlastnost typu jímky aktivity kopírování musí být nastavena na AzureSqlSink. Typ SqlSink je stále podporován kvůli zpětné kompatibilitě. | Ano |
| preCopyScript | Zadejte dotaz SQL pro aktivitu kopírování, který se má spustit před zápisem dat do Azure SQL Database. Vyvolá se pouze jednou za každé spuštění kopírování. Tato vlastnost slouží 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á hodnota je celé číslo (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 |
| disableMetricsCollection | Služba shromažďuje metriky, jako jsou Azure SQL Database DTU pro optimalizaci výkonu kopírování a doporučení, která představují další hlavní přístup k databázi. Pokud máte obavy o toto chování, určete true , jestli chcete toto chování vypnout. |
Ne (výchozí hodnota je false) |
| maximální počet současných př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 | Určete chování zápisu pro kopírovací aktivitu při načítání dat do Azure SQL Database. 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": "CopyToAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure SQL Database output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureSqlSink",
"tableOption": "autoCreate",
"writeBatchSize": 100000
}
}
}
]
Příklad 2: Vyvolání uložené procedury během kopírování
Další informace naleznete v Volání uložené procedury ze SQL cílového úložiště.
"activities":[
{
"name": "CopyToAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure SQL Database output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureSqlSink",
"sqlWriterStoredProcedureName": "CopyTestStoredProcedureWithParameters",
"storedProcedureTableTypeParameterName": "MyTable",
"sqlWriterTableType": "MyTableType",
"storedProcedureParameters": {
"identifier": { "value": "1", "type": "Int" },
"stringData": { "value": "str1" }
}
}
}
}
]
Příklad 3: Upsert data
"activities":[
{
"name": "CopyToAzureSQLDatabase",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure SQL Database output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureSqlSink",
"tableOption": "autoCreate",
"writeBehavior": "upsert",
"upsertSettings": {
"useTempDB": true,
"keys": [
"<column name>"
]
},
}
}
}
]
Paralelní kopírování z databáze SQL
Konektor Azure SQL Database 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.
Když povolíte dělené kopírování, aktivita kopírování spouští paralelní dotazy na váš Azure SQL Database zdroj pro načtení dat podle oddílů. Paralelní stupeň se řídí nastavením aktivity kopírování parallelCopies. Pokud například nastavíte parallelCopies na čtyři, služba současně generuje 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 Azure SQL Database.
Doporučujeme povolit paralelní kopírování s dělením dat, zejména pokud načítáte velké množství dat z Azure SQL Database. 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 ?DfDynamicRangePartitionCondition2. 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í:
- Zvolte výrazný sloupec jako sloupec oddílu (například primární klíč nebo jedinečný klíč), abyste se vyhnuli nerovnoměrné distribuci dat.
- Pokud má tabulka vestavěný oddíl, použijte možnost "Fyzické oddíly tabulky" ke zlepšení výkonu.
- 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.
- "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": "AzureSqlSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Příklad: Dotaz s particí dynamického rozsahu
"source": {
"type": "AzureSqlSource",
"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.
Osvědčený postup při načítání dat do Azure SQL Database
Při kopírování dat do Azure SQL Database můžete vyžadovat jiné chování 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 služby a osvědčených postupů najdete v příslušných částech.
Připojení dat
Připojování dat je výchozím chováním tohoto výstupního konektoru Azure SQL Database. 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
Copy activity 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 Azure SQL Database 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 provést dodatečné zpracování před konečným vložením zdrojových dat do cílové tabulky, můžete načíst data do pracovní tabulky a poté spustit aktivitu uložené procedury. Alternativně můžete uloženou proceduru spustit v rámci cílové části aktivity kopírování nebo použít nástroj Mapping Data Flow.
Vyvolání uložené procedury z jímky SQL
Při kopírování dat do Azure SQL Database 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 Azure SQL Database. 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.
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 )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); ENDV kanálu Azure Data Factory nebo Synapse definujte v aktivitě kopírování oddíl SQL sink následujícím způsobem:
"sink": { "type": "AzureSqlSink", "sqlWriterStoredProcedureName": "spOverwriteMarketing", "storedProcedureTableTypeParameterName": "Marketing", "sqlWriterTableType": "MarketingType", "storedProcedureParameters": { "category": { "value": "ProductA" } } }
Při zápisu dat do Azure SQL Database pomocí uložené procedury jímka rozdělí zdrojová data do mini dávek, pak provede vložení, takže další dotaz v uložené proceduře lze spustit několikrát. Pokud máte dotaz, aby se aktivita kopírování spustila před zápisem dat do Azure SQL Database, nedoporučuje se jej přidávat do uložené procedury. Místo toho jej přidejte do pole Pre-copy script.
Mapování vlastností toku dat
Při transformaci dat v mapování toku dat můžete číst a zapisovat do tabulek z Azure SQL Database. Další informace najdete v tématu transformace zdroje a transformace jímky v mapování toků dat.
Transformace zdroje
Nastavení specifická pro Azure SQL Database jsou k dispozici na kartě Zdrojové možnosti v rámci transformace zdroje.
Vstup: Vyberte, jestli zdroj nasměrujete na tabulku (ekvivalent ) Select * from <table-name>nebo zadáte vlastní dotaz SQL.
Dotaz: Pokud ve vstupním poli vyberete Dotaz, zadejte dotaz SQL pro zdroj. Toto nastavení přepíše všechny tabulky, které jste zvolili v datové sadě. Klauzule Order By se tady nepodporují, 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. Tento dotaz vytvoří zdrojovou tabulku, kterou můžete použít ve svém toku dat. Použití dotazů je také skvělý způsob, jak snížit počet řádků pro testování nebo pro vyhledávání.
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í.
Uložená procedura: Tuto možnost zvolte, pokud chcete vygenerovat projekce a zdrojová data z uložené procedury, která se spouští ze zdrojové databáze. Můžete zadat schéma, název procedury a parametry nebo kliknutím na Aktualizovat požádat službu, aby objevila schémata a názvy procedur. Potom můžete kliknutím na importovat všechny parametry procedury pomocí formuláře @paraName.
- Příklad SQL:
Select * from MyTable where customerId > 1000 and customerId < 2000 - Parametrizovaný příklad SQL:
"select * from {$tablename} where orderyear > {$year}"
Velikost dávky: Zvolte velikost dávky pro rozložení velkých dat do čtecích segmentů.
Úroveň izolace: Výchozí hodnota pro zdroje SQL v mapování toku dat je nepotvrzená. Úroveň izolace můžete změnit tady na jednu z těchto hodnot:
- Přečteno potvrzeno
- Nepotvrzené čtení
- Opakovatelné čtení
- Serializovatelný
- Žádné (ignorovat úroveň izolace)
Povolit přírůstkovou extrakci: Pomocí této možnosti můžete službě ADF sdělit, aby zpracovávala pouze řádky, které se od posledního spuštění potrubí změnily. Pokud chcete povolit přírůstkové extrakce s posunem schématu, zvolte tabulky založené na přírůstkových sloupcích nebo sloupcích vodoznaku místo tabulek, které jsou povolené pro nativní zachytávání změn dat (CDC).
Přírůstkový sloupec: Při použití funkce přírůstkového extrakce musíte zvolit sloupec data a času nebo číselného sloupce, který chcete použít jako vodoznak ve zdrojové tabulce.
Povolit nativní zachytávání dat změn(Preview): Pomocí této možnosti můžete ADF sdělit, aby zpracovávala jenom rozdílová data zachycená technologií zachytávání dat změn SQL 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 zapnout zachytávání dat změn ve službě Azure SQL DB. Další informace o této možnosti v ADF najdete v nativním zachytávání dat změn.
Začněte číst od začátku: Nastavení této možnosti 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.
Transformace jímky
Nastavení specifická pro Azure SQL Database jsou k dispozici na kartě Nastavení transformace jímky.
Metoda aktualizace: Určuje, jaké operace jsou povoleny v cíli databáze. Výchozí hodnota je povolit pouze vkládání. Pokud chcete aktualizovat, vložit nebo odstranit řádky, je pro tyto akce potřeba transformace alter-row. Pro aktualizace, upserty a odstranění je nutné nastavit klíčový sloupec nebo sloupce, aby bylo možné určit, který řádek se má změnit.
Název sloupce, který vyberete jako klíč, bude služba používat jako součást následné aktualizace, upsert, delete. Proto je nutné vybrat sloupec, který existuje v mapování jímky. Pokud chcete hodnotu do tohoto klíčového sloupce nezapsat, klikněte na Přeskočit psaní sloupců klíčů.
Pro aktualizaci cílové Azure SQL Database tabulky můžete parametrizovat klíčový sloupec použitý tady. Pokud máte více sloupců pro složený klíč, klikněte na "Vlastní výraz" a budete moct přidat dynamický obsah pomocí jazyka výrazu toku dat, který může obsahovat pole řetězců s názvy sloupců pro složený klíč.
Akce tabulky: Určuje, zda se mají před zápisem znovu vytvořit nebo odebrat všechny řádky z cílové tabulky.
- Žádné: V tabulce nebude provedena žádná akce.
- Rekonstrukce: Tabulka bude zrušena a znovu vytvořena. Vyžaduje se při dynamickém vytváření nové tabulky.
- Truncate: Všechny řádky v cílové tabulce budou odstraněny.
Velikost dávky: Určuje, kolik řádků se zapisuje v každém kontejneru. 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.
Použití databáze TempDB: Ve výchozím nastavení bude služba používat globální dočasnou tabulku k ukládání dat v rámci procesu načítání. Alternativně můžete zrušit zaškrtnutí možnosti Použít databázi tempDB a místo toho požádat službu, aby ukládala dočasnou tabulku uchovávání v uživatelské databázi, která se nachází v databázi, která se používá pro tuto jímku.
SQL skripty před a po: Zadejte víceřádkové SQL skripty, které se spustí před (předběžné zpracování) a po (následné zpracování) zapsání dat do vaší cílové databáze.
Tip
- Doporučujeme rozdělit jednotlivé skripty s více příkazy do několika samostatných dávek.
- 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í
Zpracování chybového řádku
Při zápisu do Azure SQL DB může dojít k selhání určitých řádků dat kvůli omezením nastaveným cílem. Mezi běžné chyby patří:
- Řetězcová nebo binární data by byla v tabulce zkrácena.
- Hodnotu NULL nelze vložit do sloupce.
- Příkaz INSERT byl v konfliktu s omezením CHECK.
Ve výchozím nastavení se spuštění toku dat zastaví při první chybě, na kterou narazí. Můžete se rozhodnout pokračovat při chybě, což umožňuje dokončení datového toku, ačkoliv mají jednotlivé řádky chyby. Služba poskytuje různé možnosti, jak tyto řádky chyb zpracovat.
Potvrzení transakce: Zvolte, zda se vaše data zapisuje do jedné transakce nebo v dávkách. Jedna transakce bude poskytovat horší výkon, ale žádná zapsaná data nebudou viditelná ostatním, dokud se transakce nedokoní.
Output odmítnutá data: Pokud je tato možnost povolena, můžete chybové řádky vypsat do souboru CSV ve vybraném účtu Azure Blob Storage nebo Azure Data Lake Storage Gen2. Tím se zapíšou řádky chyb se třemi dalšími sloupci: operace SQL, jako je INSERT nebo UPDATE, kód chyby toku dat a chybová zpráva na řádku.
Nahlášení úspěchu při chybě: Pokud je tok dat povolený, označí se jako úspěšný i v případě, že jsou nalezeny řádky chyb.
Mapování datových typů pro Azure SQL Database
Při kopírování dat z Azure SQL Database nebo do ní se používají následující mapování datových typů Azure SQL Database na dočasné datové typy Azure Data Factory. Stejné mapování používá funkce kanálu Synapse, která přímo implementuje Azure Data Factory. Informace o tom, jak aktivita kopírování mapuje zdrojové schéma a datový typ na jímku, najdete v tématu Mapování schématu a datového typu.
| Datový typ v Azure SQL Database | Dočasný datový typ služby Data Factory |
|---|---|
| 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 | Byte |
| 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ě Copy activity podporuje přesnost až 28. Pokud máte data s přesností větší než 28, zvažte převod na řetězec v dotazu SQL.
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.
Použití funkce Always Encrypted
Při kopírování dat z/do Azure SQL Database pomocí Always Encrypted postupujte následovně:
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.
Ujistěte se, že máte 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 .
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:
Azure SQL Database Always Encrypted podporuje následující scénáře:
- Ú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íčů.
- Úložiště dat zdrojů i cílová úložiště používají spravovanou identitu jako typ ověřování poskytovatele klíčů.
- Ú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ě Azure SQL Database Always Encrypted nepodporuje transformaci jímky 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í:
- ADF načte pouze čisté změny z SQL CDC prostřednictvím cdc.fn_cdc_get_net_changes_.
Aktualizujte verzi Azure SQL Database
Pokud chcete upgradovat verzi Azure SQL Database, na stránce
Rozdíly mezi doporučenou a starší verzí
Následující tabulka ukazuje rozdíly mezi Azure SQL Database 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. |
Související obsah
Seznam úložišť dat podporovaných jako zdroje a jímky aktivitou kopírování najdete v tématu Podporované úložiště a formáty dat.