Kopírování a transformace dat ve službě Azure SQL Managed Instance pomocí služby Azure Data Factory nebo Synapse Analytics
PLATÍ PRO: Azure Data Factory Azure Synapse Analytics
Tip
Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.
Tento článek popisuje, jak pomocí aktivity kopírování kopírovat data z a do spravované instance Azure SQL a jak pomocí Tok dat transformovat data ve službě Azure SQL Managed Instance. Další informace najdete v úvodních článcích pro Azure Data Factory a Synapse Analytics.
Podporované funkce
Tento konektor služby 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) | – Public Preview |
Mapování toku dat (zdroj/jímka) | (1) | – Public Preview |
Aktivita Lookup | (1) (2) | – Public Preview |
Aktivita GetMetadata | (1) (2) | – Public Preview |
Aktivita skriptu | (1) (2) | – Public Preview |
Aktivita uložená procedura | (1) (2) | – Public Preview |
(1) Prostředí Azure Integration Runtime (2) Místní prostředí 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 k veřejnému koncovému bodu služby SQL Managed Instance, můžete použít spravovaný prostředí 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 se chcete připojit k privátnímu koncovému bodu SQL Managed Instance, nastavte místní prostředí 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 Připojení aplikace ke službě SQL Managed Instance.
Začínáme
K provedení aktivita Copy s kanálem můžete použít jeden z následujících nástrojů nebo sad SDK:
- Nástroj pro kopírování dat
- Azure Portal
- Sada .NET SDK
- Sada Python SDK
- Azure PowerShell
- Rozhraní REST API
- Šablona Azure Resource Manageru
Vytvoření propojené služby se spravovanou instancí Azure SQL pomocí uživatelského rozhraní
Pomocí následujícího postupu vytvořte propojenou službu se spravovanou instancí SQL v uživatelském rozhraní webu Azure Portal.
Přejděte na kartu Správa v pracovním prostoru Azure Data Factory nebo Synapse a vyberte Propojené služby a pak klikněte na Nový:
Vyhledejte SQL a vyberte konektor spravované instance Azure SQL Serveru.
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 služby Azure Data Factory specifických pro konektor služby SQL Managed Instance.
Vlastnosti propojené služby
Doporučená verze konektoru Azure SQL Managed Instance podporuje protokol TLS 1.3. V této části najdete informace o upgradu verze konektoru služby Azure SQL Managed Instance ze starší verze . Podrobnosti o vlastnosti najdete v odpovídajících oddílech.
Doporučená verze
Pokud použijete doporučenou verzi, podporují se pro propojenou službu Azure SQL Managed Instance tyto obecné vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | 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 |
database | Název databáze. | Ano |
authenticationType | 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 |
alwaysEncryptedSettings | 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 podle tabulky a použití oddílu Always Encrypted . Pokud není zadáno, výchozí nastavení always encrypted je zakázané. | No |
šifrování | 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)/strict. | No |
trustServerCertificate | Určete, jestli bude kanál při obejití řetězu certifikátů zašifrovaný, aby se ověřil vztah důvěryhodnosti. | No |
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. | No |
connectVia | Tento modul runtime integrace 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í prostředí Azure Integration Runtime. | Ano |
Další vlastnosti připojení najdete v následující tabulce:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
applicationIntent | Typ úlohy aplikace při připojování k serveru. Povolené hodnoty jsou ReadOnly a ReadWrite . |
No |
connectTimeout | Doba (v sekundách) čekání na připojení k serveru před ukončením pokusu a vygenerováním chyby. | No |
connectRetryCount | Počet pokusů o opětovné připojení po identifikaci selhání nečinného připojení. Hodnota by měla být celé číslo mezi 0 a 255. | No |
connectRetryInterval | 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. | No |
loadBalanceTimeout | Minimální doba (v sekundách) pro živé připojení ve fondu připojení před zničením připojení. | No |
commandTimeout | 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. | No |
integratedSecurity | Povolené hodnoty jsou true nebo false . Při zadávání určete false , 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 Systému Windows. |
No |
failoverPartner | Název nebo adresa partnerského serveru, ke kterému se má připojit, pokud je primární server v výpadku. | No |
maxPoolSize | Maximální počet připojení povolených ve fondu připojení pro konkrétní připojení. | No |
minPoolSize | Minimální počet připojení povolených ve fondu připojení pro konkrétní připojení. | No |
multipleActiveResultSets | Povolené hodnoty jsou true nebo false . Při zadávání true můž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. |
No |
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. |
No |
packetSize | Velikost v bajtech síťových paketů používaných ke komunikaci s instancí serveru. | No |
shromažďující | Povolené hodnoty jsou true nebo false . Po zadání true bude připojení ve fondu. Když zadáte false , připojení se explicitně otevře při každém vyžádání připojení. |
No |
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í účastníci |
---|---|---|
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 odkazovat na tajný klíč uložený ve službě 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"
}
}
}
Příklad 2: Použití ověřování SQL s heslem ve službě 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í instančního objektu
Pokud chcete použít ověřování instančního objektu, kromě obecných vlastností popsaných v předchozí části zadejte následující vlastnosti.
Vlastnost | Popis | Povinní účastníci |
---|---|---|
servicePrincipalId | Zadejte ID klienta aplikace. | Ano |
servicePrincipalCredential | Přihlašovací údaje instančního objektu. Zadejte klíč aplikace. Označte toto pole jako SecureString , abyste ho mohli bezpečně uložit, nebo odkazovat na tajný kód uložený ve službě 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 tak, že nainstalujete myš v pravém horním rohu webu Azure Portal. | Ano |
azureCloudType | Pro ověřování instančního objektu zadejte typ cloudového prostředí Azure, ke kterému je zaregistrovaná 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. |
No |
Musíte také postupovat podle následujících kroků:
Postupujte podle pokynů pro zřízení správce Microsoft Entra pro vaši spravovanou instanci.
Na webu Azure Portal vytvořte aplikaci Microsoft Entra. Poznamenejte si název aplikace a následující hodnoty, které definují propojenou službu:
- ID aplikace
- Klíč aplikace
- ID tenanta
Vytvořte přihlášení pro instanční objekt. V aplikaci SQL Server Management Studio (SSMS) se připojte ke spravované instanci pomocí účtu SYSTÉMU SQL Server, který je správcem systému. V hlavní databázi spusťte následující příkaz T-SQL:
CREATE LOGIN [your application name] FROM EXTERNAL PROVIDER
Vytvořte uživatele databáze s omezením pro instanční 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
Udělte instančnímu objektu 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 application name]
Nakonfigurujte propojenou službu SQL Managed Instance.
Příklad: Použití ověřování instančního objektu
{
"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í spravované identity přiřazené systémem
Pracovní prostor datové továrny nebo Synapse je možné přidružit ke spravované identitě přiřazené systémem pro prostředky Azure, která představuje službu pro ověřování v jiných službách Azure. Tuto spravovanou identitu můžete použít pro ověřování spravované instance SQL. 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ů.
Postupujte podle pokynů pro zřízení správce Microsoft Entra pro vaši spravovanou instanci.
Vytvořte přihlášení pro spravovanou identitu přiřazenou systémem. V aplikaci SQL Server Management Studio (SSMS) se připojte ke spravované instanci pomocí účtu SYSTÉMU SQL Server, který je správcem systému. V hlavní databázi spusťte následující příkaz T-SQL:
CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDER
Vytvořte uživatele databáze s omezením 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
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]
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 pro ověřování spravované instance SQL. 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í účastníci |
---|---|---|
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ů:
Postupujte podle pokynů pro zřízení správce Microsoft Entra pro vaši spravovanou instanci.
Vytvořte přihlášení pro spravovanou identitu přiřazenou uživatelem. V aplikaci SQL Server Management Studio (SSMS) se připojte ke spravované instanci pomocí účtu SYSTÉMU SQL Server, který je správcem systému. V hlavní databázi spusťte následující příkaz T-SQL:
CREATE LOGIN [your_factory_or_workspace_ name] FROM EXTERNAL PROVIDER
Vytvořte uživatele databáze s omezením 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
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]
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 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
Pokud použijete starší verzi, podporují se pro propojenou službu Azure SQL Managed Instance tyto obecné vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | Vlastnost typu musí být nastavená na AzureSqlMI. | Ano |
připojovací řetězec | Tato vlastnost určuje informace connectionString potřebné pro připojení ke službě 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 službu SQL Managed Instance s veřejným koncovým bodem, explicitně zadejte port 3342. Do služby Azure Key Vault můžete také zadat heslo. Pokud se jedná o ověřování SQL, vytáhněte password konfiguraci z připojovací řetězec. Další informace najdete v tématu Ukládání přihlašovacích údajů ve službě Azure Key Vault. |
Ano |
alwaysEncryptedSettings | 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é. | No |
connectVia | Tento modul runtime integrace 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í prostředí 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
- Ověřování instančního objektu 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í instančního objektu pro starší verzi
Pokud chcete použít ověřování instančního objektu, kromě obecných vlastností popsaných v předchozí části zadejte následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
servicePrincipalId | Zadejte ID klienta aplikace. | Ano |
servicePrincipalKey | Zadejte klíč aplikace. Označte toto pole jako SecureString , abyste ho mohli bezpečně uložit, nebo odkazovat na tajný kód uložený ve službě 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 tak, že nainstalujete myš v pravém horním rohu webu Azure Portal. | Ano |
azureCloudType | Pro ověřování instančního objektu zadejte typ cloudového prostředí Azure, ke kterému je zaregistrovaná vaše aplikace Microsoft Entra. Povolené hodnoty jsou AzurePublic, AzureChina, AzureUsGovernment a AzureGermany. Ve výchozím nastavení se používá cloudové prostředí datové továrny nebo kanálu Synapse. |
No |
Musíte také postupovat podle kroků v ověřování instančního objektu, abyste udělili odpovídající oprávnění.
Ověřování spravované identity přiřazené systémem pro starší 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 služby SQL Managed Instance.
Pokud chcete kopírovat data do a ze spravované instance SQL, podporují se následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | Vlastnost typu datové sady musí být nastavená na AzureSqlMITable. | Ano |
schema | Název schématu | Ne pro zdroj, Ano pro jímku |
table | 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 aktivity kopírování
Ú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 a jímkou spravované instance SQL.
Spravovaná instance SQL 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 ze spravované instance SQL, podporují se v části zdroje aktivity kopírování následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | 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 . |
No |
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. | No |
storedProcedureParameters | 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. |
No |
isolationLevel | 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 . | No |
partitionOptions | 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í. |
No |
partitionSettings | Zadejte skupinu nastavení pro dělení dat. Použít, pokud možnost oddílu není None . |
No |
V části partitionSettings : |
||
partitionColumnName | Zadejte název zdrojového sloupce v celočíselném čísle nebo typu date/datetime (int , smallint , bigint , smalldatetime date , , datetime , datetime2 nebo datetimeoffset ), který bude použit dělením rozsahu pro paralelní kopírování. Pokud není zadaný, index nebo primární klíč tabulky se automaticky rozpozná a použije jako sloupec oddílu.Použít, pokud je DynamicRange možnost oddílu . Pokud k načtení zdrojových dat použijete dotaz, připojte se ?DfDynamicRangePartitionCondition do klauzule WHERE. Příklad najdete v části Paralelní kopírování z databáze SQL. |
No |
partitionUpperBound | Maximální hodnota sloupce oddílu pro rozdělení rozsahu oddílů. Tato hodnota se používá k rozhodování o 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 DynamicRange možnost oddílu . Příklad najdete v části Paralelní kopírování z databáze SQL. |
No |
partitionLowerBound | Minimální hodnota sloupce oddílu pro rozdělení rozsahu oddílů. Tato hodnota se používá k rozhodování o 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 DynamicRange možnost oddílu . Příklad najdete v části Paralelní kopírování z databáze SQL. |
No |
Je třeba počítat s následujícím:
- Pokud je pro SqlMISource zadán sqlReaderQuery, aktivita kopírování spustí tento dotaz na zdroj spravované instance SQL, 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
Spravovaná instance SQL 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 z osvědčených postupů pro načítání dat do služby SQL Managed Instance.
Pokud chcete kopírovat data do služby SQL Managed Instance, podporují se v části jímky aktivity kopírování následující vlastnosti:
Vlastnost | Popis | Povinní účastníci |
---|---|---|
type | 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 služby 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. | No |
tableOption | Určuje, zda se má automaticky vytvořit tabulka jímky, pokud neexistuje na základě zdrojového schématu. Automatické vytváření tabulek není podporováno, pokud jímka určuje uloženou proceduru. Povolené hodnoty jsou: none (výchozí), autoCreate . |
No |
sqlWriterStoredProcedureName | Název uložené procedury, která definuje, jak použít zdrojová data do cílové tabulky. Tato uložená procedura se vyvolá na 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 volání uložené procedury z jímky SQL. |
No |
storedProcedureTableTypeParameterName | Název parametru typu tabulky zadaného v uložené proceduře. | No |
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. | No |
storedProcedureParameters | Parametry uložené procedury. 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. |
No |
writeBatchSize | Početřádkůch 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. |
No |
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. |
No |
maxConcurrentConnections | 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 vložení. |
No |
upsertSettings | Zadejte skupinu nastavení pro chování zápisu. Použít, pokud je Upsert možnost WriteBehavior . |
No |
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 dočasnou tabulku globální dočasnou tabulku. hodnota je true . |
No |
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 False parametr useTempDB . |
No |
keys | 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íč. | No |
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ší informace najdete v části Volání uložené procedury z jímky 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 služby 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 aktivity kopírování.
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í parallelCopies
nastavením aktivity kopírování. 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í |
---|---|
Úplné načtení z velké tabulky s fyzickými oddíly | 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 tabulka obsahuje fyzický oddíl nebo ne, můžete odkazovat na tento dotaz. |
Úplné načtení z velké tabulky bez fyzických oddílů, zatímco s celočíselnou nebo datetime sloupcem pro dělení dat. | Možnosti oddílu: Oddíl dynamického rozsahu Sloupec oddílu (volitelné): Zadejte sloupec použitý k dělení dat. Pokud není zadaný, 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ých oddílů, zatímco s celočíselnou nebo datem a datem a časem pro dělení dat. | Možnosti oddílu: Oddíl dynamického rozsahu Dotaz: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause> .Sloupec oddílu: 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, přičemž paralelní kopírování je 4, služba načte data podle 4 oddílů 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 oddílem 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í oddílu:
- 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 tabulka obsahuje předdefinovaný oddíl, použijte možnost oddílu Fyzické oddíly tabulky, abyste dosáhli lepšího výkonu.
- Pokud ke kopírování dat používáte Prostředí Azure Integration Runtime, můžete nastavit větší počet jednotek Integrace Dat (DIU) (>4) a využít tak více výpočetních prostředků. Zkontrolujte tam příslušné scénáře.
- "Stupeň paralelismu kopírování" řídí čísla oddílů, nastavení příliš velkého čísla někdy snižuje výkon, doporučujeme nastavit toto číslo jako (DIU nebo počet uzlů místního prostředí IR) * (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 oddílem 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 tabulka obsahuje fyzický oddíl, zobrazí se "HasPartition" jako "ano", například následující.
Osvědčený postup při načítání dat do služby SQL Managed Instance
Při kopírování dat do služby SQL Managed Instance můžete vyžadovat jiné chování zápisu:
- Připojení: 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řipojení dat je výchozím chováním konektoru jímky služby SQL Managed Instance. Služba provede hromadné vložení pro efektivní zápis do 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é tabulky databáze a následné aktualizace dat v tabulce jímky, pokud existuje klíč, a jinak vložit 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 služby 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é procedury využívá parametry hodnot 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 databázi SQL Serveru. Předpokládejme, že vstupní data a tabulka Marketing jímky 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); END
V kanálu definujte v aktivitě kopírování oddíl jímky SQL MI 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 ze spravované instance Azure SQL. Další informace najdete v tématu transformace zdroje a transformace jímky v mapování toků dat.
Transformace zdroje
V následující tabulce jsou uvedeny vlastnosti podporované zdrojem služby Azure SQL Managed Instance. Tyto vlastnosti můžete upravit na kartě Možnosti zdroje.
Název | Popis | Povinní účastníci | Povolené hodnoty | Vlastnost skriptu toku dat |
---|---|---|---|---|
Table | Pokud jako vstup vyberete tabulku, tok dat načte všechna data z tabulky zadané v datové sadě. | No | - | - |
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 |
No | String | query |
Velikost dávky | Zadejte velikost dávky pro rozdělení velkých dat do čtení. | No | Celé číslo | batchSize |
Úroveň izolace | Zvolte jednu z následujících úrovní izolace: - Přečteno potvrzeno – Nepotvrzené čtení (výchozí) - Opakovatelné čtení -Serializovatelný – Žádné (ignorovat úroveň izolace) |
No | READ_COMMITTED READ_UNCOMMITTED REPEATABLE_READ SERIALIZOVATELNÝ ŽÁDNÝ |
isolationLevel |
Povolení přírůstkového extrakce | Pomocí této možnosti můžete službě ADF sdělit, aby zpracovával jenom řádky, které se od posledního spuštění kanálu změnily. | No | - | - |
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. | No | - | - |
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 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 rozdílová data včetně vložení, aktualizace a odstranění načtou automaticky bez nutnosti přírůstkového sloupce. Před použitím této možnosti v ADF musíte povolit zachytávání dat změn v Azure SQL MI. Další informace o této možnosti v ADF najdete v nativním zachytávání dat změn. | No | - | - |
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. | No | - | - |
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 to neudělají. 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
podobný příklad with CTE as (select 'test' as a) select * from CTE
. Pak můžete použít CTE podle očekávání.
Ukázkový zdrojový skript služby Azure SQL Managed Instance
Pokud jako typ zdroje použijete spravovanou instanci Azure SQL, přidružený skript toku dat:
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from MYTABLE',
format: 'query') ~> SQLMISource
Transformace jímky
Následující tabulka obsahuje seznam vlastností podporovaných jímkou spravované instance Azure SQL. Tyto vlastnosti můžete upravit na kartě Možnosti jímky.
Název | Popis | Povinní účastníci | 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 k označení řádků pro tyto akce potřeba transformace alter řádku. |
Ano | true nebo false |
s možností odsud 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é aktualizace, upsertu a odstranění. Proto je nutné vybrat sloupec, který existuje v mapování jímky. |
No | Pole | keys |
Přeskočení psaní klíčových sloupců | Pokud chcete hodnotu nezapsat do klíčového sloupce, vyberte Přeskočit psaní klíčových sloupců. | No | true nebo false |
skipKeyWrites |
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 se neprovede žádná akce. - Znovu vytvořte: Tabulka se přehodí a znovu vytvoří. Vyžaduje se při dynamickém vytváření nové tabulky. - Zkrácení: Odeberou se všechny řádky z cílové tabulky. |
No | true nebo false |
obnovit truncate |
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 riskují výjimky z paměti. | No | Celé číslo | batchSize |
Skripty pre a post SQL | Zadejte víceřádkové skripty SQL, které se spustí před (předzpracování) a po (po zpracování) dat zapisují do databáze jímky. | No | String | předsqls postSQLs |
Tip
- Doporučujeme rozdělit jednotlivé dávkové skripty několika příkazy do několika dávek.
- Jako součást dávky je možné spustit pouze příkazy DDL (Data Definition Language) a DML (Data Manipulation Language), které vracejí jednoduchý počet aktualizací. Další informace o provádění dávkových operací
Ukázkový skript jímky služby Azure SQL Managed Instance
Pokud jako typ jímky použijete azure SQL Managed Instance, přidružený skript toku dat:
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í
Podrobnosti o vlastnostech najdete v aktivitě Vyhledávání.
Vlastnosti aktivity GetMetadata
Podrobnosti o vlastnostech najdete v aktivitě GetMetadata.
Mapování datových typů pro službu SQL Managed Instance
Když se data zkopírují do a ze spravované instance SQL pomocí aktivity kopírování, použijí se následující mapování z datových typů služby SQL Managed Instance na dočasné datové typy používané interně v rámci 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 služby SQL Managed Instance | Dočasný datový typ služby |
---|---|
bigint | Int64 |
binární | Bajt[] |
bitové | Logická hodnota |
char | Řetězec, znak[] |
datum | DateTime |
Datum a čas | DateTime |
datetime2 | DateTime |
Datetimeoffset | DateTimeOffset |
Desetinné číslo | Desetinné číslo |
ATRIBUT FILESTREAM (varbinary(max)) | Bajt[] |
Float | Hodnota s dvojitou přesností |
image | Bajt[] |
int | Int32 |
peníze | Desetinné číslo |
nchar | Řetězec, znak[] |
ntext | Řetězec, znak[] |
numerické | Desetinné číslo |
nvarchar | Řetězec, znak[] |
real | Jeden |
rowversion | Bajt[] |
smalldatetime | DateTime |
smallint | Int16 |
smallmoney | Desetinné číslo |
sql_variant | Objekt |
text | Řetězec, znak[] |
čas | TimeSpan |
časové razítko | Bajt[] |
tinyint | Int16 |
uniqueidentifier | 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 nebo do spravované instance SQL pomocí funkce Always Encrypted postupujte následovně:
Uložte hlavní klíč sloupce (CMK) ve službě Azure Key Vault. Další informace o konfiguraci funkce Always Encrypted pomocí služby Azure Key Vault
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 .
Vytvořte propojenou službu pro připojení k databázi SQL a povolte funkci Always Encrypted pomocí spravované identity nebo instančního objektu.
Poznámka:
Sql Managed Instance Always Encrypted podporuje následující scénáře:
- Úložiště dat zdroje nebo jímky používají spravovanou identitu nebo instanční objekt jako typ ověřování zprostředkovatele klíčů.
- Úložiště dat zdrojového i jímky používají spravovanou identitu jako typ ověřování zprostředkovatele klíče.
- Úložiště dat zdroje i jímky používají stejný instanční objekt jako typ ověřování zprostředkovatele klíčů.
Poznámka:
Sql Managed Instance Always Encrypted je v současné době podporována pouze pro transformaci 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 název aktivity, kontrolní bod se resetuje, což vede k tomu, že v dalším běhu začnete od začátku nebo se změny provedou od nynějška. 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 se resetuje při aktualizaci prohlížeče během spuštění ladění. Jakmile budete spokojeni s výsledkem kanálu spuštění ladění, můžete pokračovat v publikování a aktivaci kanálu. V okamžiku, kdy poprvé aktivujete publikovaný kanál, se automaticky restartuje od začátku nebo od této chvíle dojde ke změnám.
V části monitorování máte vždy možnost znovu spustit kanál. Když to uděláte, změněná data se vždy zaznamenávají z předchozího kontrolního bodu vybraného kanálu.
Příklad 1:
Když přímo zřetězíte zdrojovou transformaci odkazovanou na datovou sadu s povolenou datovou sadou SQL CDC s transformací jímky odkazovanou na databázi v mapování toku dat, změny provedené ve zdroji SQL se automaticky použijí na cílovou databázi, abyste mohli snadno získat 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 na odvození jednoho sloupce 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ů pro podřízené transformace pro zpracování rozdílových dat.
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_.
Upgrade verze služby Azure SQL Managed Instance
Pokud chcete upgradovat verzi spravované instance Azure SQL, vyberte na stránce Upravit propojenou službu v části Doporučená verze a nakonfigurujte propojenou službu podle vlastností propojené služby pro doporučenou verzi.
Rozdíly mezi doporučenou a starší verzí
Následující tabulka ukazuje rozdíly mezi službou Azure SQL Managed Instance s využitím doporučené a starší verze.
Doporučená verze | Starší verze |
---|---|
Podpora protokolu TLS 1.3 prostřednictvím .encrypt 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ě dat.