Sdílet prostřednictvím


Technické informace o obecném konektoru SQL

Tento článek popisuje obecný konektor SQL. Článek se vztahuje na následující produkty:

Pro MIM2016 je konektor k dispozici jako stažení z webu Microsoft Download Center.

Pokud chcete zobrazit tento konektor v akci, přečtěte si podrobný článek o obecném konektoru SQL.

Poznámka:

Microsoft Entra ID teď poskytuje jednoduché řešení založené na agentech pro zřizování uživatelů do databáze SQL bez nutnosti nasazení synchronizace MIM. Doporučujeme ho použít pro zřizování odchozích uživatelů. Další informace.

Přehled obecného konektoru SQL

Obecný konektor SQL umožňuje integrovat synchronizační službu s databázovým systémem, který nabízí připojení ODBC.

Z hlediska vysoké úrovně jsou aktuální verzí konektoru podporovány následující funkce:

Funkce Technická podpora
Připojený zdroj dat Konektor se podporuje se všemi 64bitovými ovladači ODBC*. Testoval se následujícím kódem:
  • Microsoft SQL Server a SQL Azure
  • IBM DB2 11.5.8
  • Oracle 11g
  • Oracle 12c a 18c
  • Oracle 21c a 23c
  • MySQL 5.x
  • MySQL 8.x
  • Postgres
  • Scénáře
  • Správa životního cyklu objektů
  • Správa hesel
  • Operace
  • Úplný import a rozdílový import, export
  • Pro export: Přidání, odstranění, aktualizace a nahrazení
  • Nastavení hesla, změna hesla
  • Schéma
  • Dynamické zjišťování objektů a atributů
  • Požadavky

    Před použitím konektoru se ujistěte, že na synchronizačním serveru máte následující:

    • Microsoft .NET 4.6.2 Framework nebo novější
    • 64bitové klientské ovladače ODBC
    • Pokud ke komunikaci s Oracle 12c používáte konektor, vyžaduje to Oracle Instant Client 12.2.0.1 nebo novější s balíčkem ODBC.
    • Pokud ke komunikaci s Oracle 18c-23c používáte konektor, vyžaduje to Oracle Instant Client 18-23 nebo novější s balíčkem ODBC a NLS_LANG systémovou proměnnou nastavenou tak, aby podporovala znaky UTF8, například NLS_LANG=AMERICAN_AMERICA. AL32UTF8.
    • Tento konektor používá připravené příkazy SQL a více příkazů na transakci. Některé systémy rdBM můžou mít problémy s ovladači ODBC souvisejícími se zpracováním transakcí, příkazy SQL připravenými na straně serveru a více příkazů v rámci stejné transakce. Odpovídajícím způsobem nakonfigurujte možnosti připojení DSN tak, aby se tyto příkazy správně odesílaly do vaší databáze. Například ovladač ODBC MySQL verze 8.0.32 potřebuje možnosti NO_SSPS=1 a MULTI_STATEMENTS=1. Další možnosti, jako je "autocommit" nebo "commit on successful operations only" (potvrdit pouze úspěšné operace), můžou ovlivnit způsob zpracování dávkových exportů; Podrobnosti získáte od správce databáze. Pokud chcete řešit problémy během exportu, nastavte velikost dávky exportu na 1 a povolte podrobné protokolování konektoru.

    Nasazení tohoto konektoru může vyžadovat změny konfigurace databáze a také změny konfigurace MIM. Pro nasazení zahrnující integraci MIM s databázovým serverem třetí strany v produkčním prostředí doporučujeme zákazníkům spolupracovat se svým dodavatelem databáze nebo partnera pro nasazení, který vám poskytne pomoc, pokyny a podporu pro tuto integraci.

    Oprávnění v připojeném zdroji dat

    Pokud chcete vytvořit nebo provést některou z podporovaných úloh v obecném konektoru SQL, musíte mít:

    • db_datareader
    • db_datawriter

    Porty a protokoly

    Informace o portech potřebných k fungování ovladače ODBC najdete v dokumentaci dodavatele databáze.

    Vytvoření nového konektoru

    Pokud chcete vytvořit obecný konektor SQL, vyberte v synchronizační službě agenta pro správu a vytvořte. Vyberte obecný konektor SQL (Microsoft).

    CreateConnector page 1

    Připojení

    Konektor pro připojení používá soubor ODBC DSN. Vytvořte soubor DSN pomocí zdrojů dat ODBC nalezených v nabídce Start v části Nástroje pro správu. V nástroji pro správu vytvořte název DSN souboru, abyste ho mohli poskytnout konektoru.

    CreateConnector page 2

    Obrazovka Připojení je první při vytváření nového obecného konektoru SQL. Nejprve je potřeba zadat následující informace:

    • Cesta k souboru DSN
    • Autentizace
      • Uživatelské jméno
      • Heslo

    Databáze by měla podporovat jednu z těchto metod ověřování:

    • Ověřování systému Windows: Ověřovací databáze používá k ověření uživatele přihlašovací údaje systému Windows. Zadané uživatelské jméno a heslo se používá k ověření v databázi. Tento účet potřebuje oprávnění k databázi.
    • Ověřování SQL: Ověřovací databáze používá pro připojení k databázi uživatelské jméno nebo heslo definované jedním z obrazovek připojení. Pokud uživatelské jméno nebo heslo uložíte do souboru DSN, budou mít přednost přihlašovací údaje zadané na obrazovce Připojení.
    • Ověřování Azure SQL Database: Další informace najdete v tématu Připojení ke službě SQL Database prostřednictvím ověřování Microsoft Entra.

    DN je Ukotvení: Pokud vyberete tuto možnost, použije se také jako atribut ukotvení. Lze ji použít pro jednoduchou implementaci, ale má také následující omezení:

    • Konektor podporuje pouze jeden typ objektu. Proto všechny atributy odkazu mohou odkazovat pouze na stejný typ objektu.

    Typ exportu: Objekt nahradit: Při exportu, pokud se změnily pouze některé atributy, celý objekt se všemi atributy se exportuje a nahradí existující objekt.

    Schéma 1 (detekce typů objektů)

    Na této stránce nakonfigurujete, jak konektor najde různé typy objektů v databázi.

    Každý typ objektu se zobrazí jako oddíl a nakonfiguruje se dále v části Konfigurace oddílů a hierarchií.

    Obrázek schema1a

    Metoda detekce typu objektu: Konektor podporuje tyto metody detekce typů objektů.

    • Pevná hodnota: Zadáte seznam typů objektů se seznamem odděleným čárkami. Například: User,Group,Department.
      Obrázek schématu 1b
    • Tabulka/Zobrazení/Uložená procedura: Zadejte název tabulky, zobrazení nebo uložené procedury a potom název sloupce, který poskytuje seznam typů objektů. Pokud používáte uloženou proceduru, zadejte pro ni také parametry ve formátu [Name]:[Direction]:[Value]. Zadejte každý parametr na samostatném řádku (k získání nového řádku použijte kombinaci kláves Ctrl+Enter).
      Obrázek schématu 1c
    • Dotaz SQL: Tato možnost umožňuje zadat dotaz SQL, který vrací jeden sloupec s typy objektů, například SELECT [Column Name] FROM TABLENAME. Vrácený sloupec musí být typu řetězec (varchar).

    Schéma 2 (detekce typů atributů)

    Na této stránce nakonfigurujete způsob zjištění názvů a typů atributů. Možnosti konfigurace jsou uvedeny pro každý typ objektu zjištěný na předchozí stránce.

    Obrázek schématu 2a

    Metoda detekce typu atributu: Konektor podporuje tyto metody detekce typů atributů s každým zjištěným typem objektu na obrazovce Schématu 1.

    • Table/View/Stored Procedure: Zadejte název tabulky, zobrazení nebo uložené procedury, která by se měla použít k vyhledání názvů atributů. Pokud používáte uloženou proceduru, zadejte pro ni také parametry ve formátu [Name]:[Direction]:[Value]. Zadejte každý parametr na samostatném řádku (k získání nového řádku použijte kombinaci kláves Ctrl+Enter). Pokud chcete zjistit názvy atributů v atributu s více hodnotami, zadejte čárkami oddělený seznam tabulek nebo zobrazení. Scénáře s více hodnotami nejsou podporovány, pokud nadřazená a podřízená tabulka mají stejné názvy sloupců.
    • Dotaz SQL: Tato možnost umožňuje zadat dotaz SQL, který vrací jeden sloupec s názvy atributů, například SELECT [Column Name] FROM TABLENAME. Vrácený sloupec musí být typu řetězec (varchar).

    Schéma 3 (definování ukotvení a DN)

    Tato stránka umožňuje konfigurovat atribut ukotvení a DN pro každý zjištěný typ objektu. Pokud chcete, aby ukotvení bylo jedinečné, můžete vybrat více atributů.

    Obrázek schématu 3a

    • Vícehodnotové a logické atributy nejsou uvedeny.

    • Stejný atribut nelze použít pro DN a ukotvení, pokud není na stránce Připojení vybrána možnost Ukotvení .

    • Pokud je na stránce Připojení vybraná možnost DN, tato stránka vyžaduje pouze atribut DN. Tento atribut by se také použil jako atribut ukotvení.

      Obrázek schématu 3b

    Schéma 4 (definování typu atributu, odkazu a směru)

    Tato stránka umožňuje nakonfigurovat typ atributu, například celé číslo, binární nebo logickou hodnotu a směr pro každý atribut. Všechny atributy ze schématu stránky 2 jsou uvedeny včetně atributů s více hodnotami.

    Obrázek schema4a

    • Typ dat: Používá se k mapování typu atributu na tyto typy známé synchronizačním modulem. Výchozí hodnota je použít stejný typ jako zjištěný ve schématu SQL, ale datum a odkaz nejsou snadno zjistitelné. Pro ty musíte zadat DateTime nebo Reference.
    • Směr: Směr atributu můžete nastavit na Import, Export nebo ImportExport. ImportExport je výchozí.

    Obrázek schématu 4b

    Poznámky:

    • Pokud konektor typ atributu nerozpozná, použije datový typ String.
    • Vnořené tabulky lze považovat za tabulky databáze s jedním sloupcem. Oracle ukládá řádky vnořené tabulky v žádném konkrétním pořadí. Když však načtete vnořenou tabulku do proměnné PL/SQL, řádky se zadají po sobě jdoucí dolní indexy začínající na 1. Díky tomu máte přístup podobný poli k jednotlivým řádkům.
    • VarRYS nejsou v konektoru podporovány.

    Schéma 5 (definování oddílu pro referenční atributy)

    Na této stránce nakonfigurujete všechny referenční atributy, na které odkazuje atribut (typ objektu).

    Obrázek schématu 5

    Pokud používáte dn je ukotvení, musíte použít stejný typ objektu jako ten, ze který odkazujete. Nelze odkazovat na jiný typ objektu.

    Poznámka:

    Od aktualizace z března 2017 je nyní k dispozici možnost "*" Pokud je tato možnost zvolena, budou importovány všechny možné typy členů.

    obrázek globalparameters3

    Důležité

    Od května 2017 se jakákoli možnost "*" změnila tak, aby podporovala tok importu a exportu. Pokud chcete tuto možnost použít, měla by mít vícehodnotová tabulka/zobrazení atribut, který obsahuje typ objektu.

    multivalued any option before image


    Pokud je vybrán znak *, musí být zadán také název sloupce s typem objektu.
    multivalued any option after image

    Po importu uvidíte něco podobného jako na následujícím obrázku:

    image globalparameters31

    Globální parametry

    Stránka Globální parametry slouží ke konfiguraci rozdílového importu, formátu data a času a metody Password.

    image globalparameters1

    Obecný konektor SQL podporuje následující metody rozdílového importu:

    • Aktivační událost: Viz Generování rozdílových zobrazení pomocí triggerů.
    • Vodoznak: Obecný přístup, který lze použít s libovolnou databází. Dotaz vodoznaku je předem vyplněný na základě dodavatele databáze. Sloupec vodoznaku musí být k dispozici v každé použité tabulce nebo zobrazení. Tento sloupec musí sledovat vkládání a aktualizace tabulek jako závislých (vícehodnotových nebo podřízených) tabulek. Hodiny mezi synchronizační službou a databázovým serverem musí být synchronizovány. Pokud ne, některé položky v rozdílovém importu můžou být vynechány.
      Omezení:
      • Strategie vodoznaku nepodporuje odstraněné objekty.
    • Snímek: (Funguje pouze s Microsoft SQL Serverem) Generování rozdílových zobrazení pomocí snímků
    • Sledování změn: (Funguje pouze s Microsoft SQL Serverem) Informace o řešení Change Tracking
      Omezení:
      • Atribut Anchor &DN musí být součástí primárního klíče pro vybraný objekt v tabulce.
      • Dotaz SQL není během importu a exportu se službou Change Tracking podporován.

    Další parametry: Zadejte časové pásmo databázového serveru označující umístění databázového serveru. Tato hodnota se používá k podpoře různých formátů atributů data a času.

    Konektor vždy ukládá datum a datum a čas ve formátu UTC. Aby bylo možné správně převést datum a čas, je nutné zadat časové pásmo databázového serveru a použitý formát. Formát by měl být vyjádřen ve formátu .NET.

    Během exportu musí být při každém atributu data a času zadaného konektorem ve formátu času UTC.

    image globalparameters2

    Konfigurace hesla: Konektor poskytuje možnosti synchronizace hesel a podporuje nastavení a změnu hesla.

    Konektor poskytuje dvě metody pro podporu synchronizace hesel:

    • Uložená procedura: Tato metoda vyžaduje dvě uložené procedury pro podporu nastavení a změny hesla. Zadejte všechny parametry pro přidání a změnu operace hesla v Nastavení hesla SP a Změnit parametry SP hesla podle následujícího příkladu. globalparameters32 image
    • Rozšíření hesla: Tato metoda vyžaduje knihovnu DLL rozšíření hesla (musíte zadat název knihovny DLL rozšíření, který implementuje rozhraní IMAExtensible2Password ). Sestavení rozšíření hesla musí být umístěné ve složce rozšíření, aby konektor mohl za běhu načíst knihovnu DLL. image globalparameters4

    Musíte také povolit správu hesel na stránce Konfigurovat rozšíření . image globalparameters5

    Configure Partitions and Hierarchies

    Na stránce oddílů a hierarchií vyberte všechny typy objektů. Každý typ objektu je vlastní oddíl.

    obrázek oddílu 1

    Můžete také přepsat hodnoty definované na stránce Připojení nebo Globální parametry .

    image partitions2

    Konfigurace ukotvení

    Tato stránka je určená jen pro čtení, protože ukotvení již bylo definováno. Vybraný atribut ukotvení je vždy připojen s typem objektu, aby se zajistilo, že zůstane jedinečný napříč typy objektů.

    anchors image

    Konfigurace parametru kroku spuštění

    Tyto kroky jsou nakonfigurovány pro profily spuštění v konektoru. Tyto konfigurace dělají skutečnou práci při importu a exportu dat.

    Úplný a rozdílový import

    Obecný konektor SQL podporuje úplný a rozdílový import pomocí těchto metod:

    • Table
    • Zobrazení
    • Uložená procedura
    • Příkaz jazyka SQL

    obrázek runstep1

    Tabulka/zobrazení
    Pokud chcete importovat atributy s více hodnotami pro objekt, musíte zadat název tabulky/zobrazení v části Název tabulky/zobrazení s více hodnotami a příslušné podmínky spojení v podmínce Spojení s nadřazenou tabulkou. Pokud je ve zdroji dat více než jedna tabulka s více hodnotami, můžete použít sjednocení do jednoho zobrazení.

    Důležité

    Obecný agent pro správu SQL může pracovat pouze s jednou tabulkou s více hodnotami. Neumisťujte do názvu vícehodnotové tabulky nebo zobrazení více než jeden název tabulky. Jedná se o omezení obecného SQL.

    Příklad: Chcete importovat objekt Employee a všechny jeho atributy s více hodnotami. Existují dvě tabulky s názvem Employee (hlavní tabulka) a Department (s více hodnotami). Postupujte následovně:

    • Zadejte zaměstnance do tabulky, zobrazení nebo sp.
    • Zadejte oddělení v názvu vícehodnotové tabulky nebo zobrazení.
    • Zadejte podmínku spojení mezi zaměstnancem a oddělením v podmínce spojení, například Employee.DEPTID=Department.DepartmentID. runstep2 image

    Uložené procedury
    runstep3 image

    • Pokud máte hodně dat, doporučujeme implementovat stránkování s uloženými procedurami.
    • Aby uložená procedura podporovala stránkování, musíte zadat počáteční index a koncový index. Viz: Efektivní stránkování velkých objemů dat.
    • @StartIndex a @EndIndex v době provádění se nahradí odpovídající hodnotou velikosti stránky nakonfigurovanou na stránce Konfigurovat krok . Například když konektor načte první stránku a velikost stránky je nastavena na 500, v takové situaci @StartIndex by bylo 1 a @EndIndex 500. Tyto hodnoty se zvětší, když konektor načte další stránky a změní @StartIndex hodnotu & @EndIndex .
    • Pokud chcete spustit parametrizovanou uloženou proceduru, zadejte parametry ve [Name]:[Direction]:[Value] formátu. Zadejte každý parametr na samostatný řádek (k získání nového řádku použijte kombinaci kláves Ctrl + Enter).
    • Obecný konektor SQL podporuje také operaci importu z propojených serverů v Microsoft SQL Serveru. Pokud by se informace měly načíst z tabulky na propojeném serveru, měla by být tabulka uvedená ve formátu: [ServerName].[Database].[Schema].[TableName]
    • Obecný konektor SQL podporuje pouze objekty, které mají podobnou strukturu (název aliasu i datový typ) mezi informacemi o krocích spuštění a detekcí schématu. Pokud se vybraný objekt ze schématu a poskytnuté informace v kroku spuštění liší, konektor SQL nemůže tento typ scénářů podporovat.

    Dotaz SQL
    runstep4 image

    runstep5 image

    Důležité

    Znak CRLF nebo nový řádek slouží jako oddělovač mezi více příkazy.

    Ukázkový dotaz SQL se stránkováním – nesprávný dotaz nebude fungovat, protože se používá nový znak řádku:

    WITH A AS 
      (select dense_rank() over (order by BusinessEntityID) 
        rownumber, BusinessEntityID, DeptID, NationalIDNumber, LoginID, JobTitle, BirthDate, MaritalStatus, HireDate, ModifiedDate, Password 
        from Employees
      ) select * from A where rownumber between @StartIndex and @EndIndex
    

    Ukázkový dotaz SQL se stránkováním – správný dotaz:

    WITH A AS (select dense_rank() over (order by BusinessEntityID) rownumber, BusinessEntityID, DeptID, NationalIDNumber, LoginID, JobTitle, BirthDate, MaritalStatus, HireDate, ModifiedDate, Password from Employees) select * from A where rownumber between @StartIndex and @EndIndex
    
    • Nepodporuje se více dotazů sad výsledků.
    • Dotaz SQL podporuje stránkování a poskytuje počáteční index a koncový index jako proměnnou pro podporu stránkování.

    Rozdílový import

    runstep6 image

    Konfigurace rozdílového importu vyžaduje v porovnání s úplným importem několik dalších konfigurací.

    • Pokud pro sledování rozdílových změn zvolíte trigger nebo snímek, zadejte tabulku historie nebo databázi snímků do pole Název tabulky historie nebo databáze snímků.
    • Musíte také zadat podmínku spojení mezi tabulkou Historie a nadřazenou tabulkou, například Employee.ID=History.EmployeeID
    • Pokud chcete sledovat transakci nadřazené tabulky z tabulky historie, musíte zadat název sloupce, který obsahuje informace o operaci (přidat, aktualizovat nebo odstranit).
    • Pokud zvolíte Vodoznak ke sledování rozdílových změn, zadejte název sloupce, který obsahuje informace o operaci v názvu sloupce vodoznaku.
    • Sloupec atributu change Type je vyžadován pro typ změny. Tento sloupec mapuje změnu, která se vyskytuje v primární tabulce nebo tabulce s více hodnotami, na typ změny v rozdílovém zobrazení. Tento sloupec může obsahovat typ změny Modify_Attribute pro změnu na úrovni atributu nebo typ změny přidat, upravit nebo odstranit pro typ změny na úrovni objektu. Pokud se jedná o jinou hodnotu než výchozí hodnota Přidat, Upravit nebo Odstranit, můžete tyto hodnoty definovat pomocí této možnosti.

    Export

    runstep7 image

    Obecný konektor SQL podporuje export pomocí čtyř podporovaných metod, jako jsou:

    • Table
    • Zobrazení
    • Uložená procedura
    • Příkaz jazyka SQL

    Tabulka/zobrazení
    Pokud zvolíte možnost Tabulka/zobrazení, konektor vygeneruje příslušné dotazy pro export.

    Uložené procedury
    runstep8 image

    Pokud zvolíte možnost Uložená procedura, export vyžaduje k provádění operací vložení, aktualizace nebo odstranění tři různé uložené procedury.

    • Přidat název sp: Tato sp spustí, pokud některý z objektů přichází do konektoru pro vložení do příslušné tabulky.
    • Update SP Name: Tato sp spustí, pokud některý z objektů přichází do konektoru pro aktualizaci v příslušné tabulce.
    • Odstranit název sp: Tato sp spustí, pokud některý z objektů přichází do konektoru pro odstranění v příslušné tabulce.
    • Atribut vybraný ze schématu použitého jako hodnota parametru k uložené proceduře Například @EmployeeName: INPUT: EmployeeName (EmployeeName je vybrán ve schématu konektoru a konektor nahradí odpovídající hodnotu při exportu).
    • Pokud chcete spustit parametrizovanou uloženou proceduru, zadejte parametry ve [Name]:[Direction]:[Value] formátu. Zadejte každý parametr na samostatný řádek (k získání nového řádku použijte kombinaci kláves Ctrl + Enter).

    Dotaz SQL
    runstep9 image

    Pokud zvolíte možnost dotazu SQL, export vyžaduje, aby operace vložení, aktualizace nebo odstranění prováděly tři různé dotazy.

    • Vložit dotaz: Tento dotaz se spustí, pokud některý z objektů přichází do konektoru pro vložení do příslušné tabulky.
    • Aktualizovat dotaz: Tento dotaz se spustí, pokud některý z objektů přichází do konektoru pro aktualizaci v příslušné tabulce.
    • Odstranit dotaz: Tento dotaz se spustí, pokud některý z objektů přichází do konektoru pro odstranění v příslušné tabulce.
    • Atribut vybraný ze schématu použitého jako hodnota parametru dotazu, například Insert into Employee (ID, Name) Values (@ID, @EmployeeName)

    Důležité

    Znak CRLF nebo nový řádek slouží jako oddělovač mezi více příkazy.

    Ukázkový vícekrokový aktualizační dotaz SQL – nový znak řádku slouží k oddělení příkazů SQL:

    update Employee set jobTitle=@JOBTITLE where BusinessEntityID=@BUSINESSENTITYID
    insert into ChangeLog VALUES (@BUSINESSENTITYID)
    

    Řešení problému