Algemene technische naslaginformatie voor SQL Connector
In dit artikel wordt de algemene SQL-connector beschreven. Het artikel is van toepassing op de volgende producten:
- Microsoft Identity Manager 2016 (MIM2016)
- Microsoft Entra ID
Voor MIM2016 is de connector beschikbaar als download van het Microsoft Downloadcentrum.
Als u deze connector in actie wilt zien, raadpleegt u het stapsgewijze artikel algemene SQL-connector .
Notitie
Microsoft Entra ID biedt nu een lichtgewicht oplossing op basis van agents voor het inrichten van gebruikers in een SQL-database, zonder dat er een MIM-synchronisatie-implementatie nodig is. We raden u aan deze te gebruiken voor uitgaande inrichting van gebruikers. Meer informatie.
Overzicht van de algemene SQL-connector
Met de algemene SQL-connector kunt u de synchronisatieservice integreren met een databasesysteem dat ODBC-connectiviteit biedt.
Vanuit hoog oogpunt worden de volgende functies ondersteund door de huidige versie van de connector:
Functie | Ondersteuning |
---|---|
Verbonden gegevensbron | De connector wordt ondersteund met alle 64-bits ODBC-stuurprogramma's*. Het is getest met het volgende: |
Scenario's | |
Operations | |
Schema |
Vereisten
Voordat u de connector gebruikt, moet u ervoor zorgen dat u het volgende op de synchronisatieserver hebt:
- Microsoft .NET 4.6.2 Framework of hoger
- 64-bits ODBC-clientstuurprogramma's
- Als u de connector gebruikt om te communiceren met Oracle 12c, is hiervoor Oracle Instant Client 12.2.0.1 of hoger vereist met het ODBC-pakket.
- Als u de connector gebruikt om te communiceren met Oracle 18c-23c, moet Oracle Instant Client 18-23 of hoger met het ODBC-pakket worden gebruikt en moet de NLS_LANG systeemvariabele worden ingesteld ter ondersteuning van UTF8-tekens, bijvoorbeeld NLS_LANG=AMERICAN_AMERICA. AL32UTF8.
- Deze connector maakt gebruik van voorbereide SQL-instructies en meerdere instructies per transactie. Sommige RDBM-systemen kunnen problemen hebben in hun ODBC-stuurprogramma's met betrekking tot transactieafhandeling, voorbereide SQL-instructies aan de serverzijde en meerdere instructies binnen dezelfde transactie. Configureer de DSN-verbindingsopties dienovereenkomstig om ervoor te zorgen dat deze instructies correct naar uw database worden verzonden. Bijvoorbeeld: MySQL ODBC-stuurprogrammaversie 8.0.32 heeft opties nodig NO_SSPS=1 en MULTI_STATEMENTS=1. Andere opties, zoals 'autocommit' of 'doorvoeren op geslaagde bewerkingen' kunnen van invloed zijn op de manier waarop batchexports worden verwerkt; neem contact op met de databasebeheerder voor meer informatie. Als u problemen tijdens het exporteren wilt oplossen, stelt u de grootte van de exportbatch in op 1 en schakelt u uitgebreide logboekregistratie van de connector in.
Het implementeren van deze connector vereist mogelijk wijzigingen in de configuratie van de database en configuratiewijzigingen in MIM. Voor implementaties waarbij MIM wordt geïntegreerd met een databaseserver van derden in een productieomgeving, raden we klanten aan samen te werken met hun databaseleverancier of een implementatiepartner voor hulp, richtlijnen en ondersteuning voor deze integratie.
Machtigingen in verbonden gegevensbron
Als u een van de ondersteunde taken in een algemene SQL-connector wilt maken of uitvoeren, moet u het volgende hebben:
- db_datareader
- db_datawriter
Poorten en protocollen
Raadpleeg de documentatie van de leverancier van de database om de poorten te laten werken die nodig zijn om het ODBC-stuurprogramma te laten werken.
Een nieuwe connector maken
Als u een algemene SQL-connector wilt maken, selecteert u in de synchronisatieservice de beheeragent en maakt u deze. Selecteer de Algemene SQL-connector (Microsoft ).
Connectiviteit
De connector maakt gebruik van een ODBC DSN-bestand voor connectiviteit. Maak het DSN-bestand met behulp van ODBC-gegevensbronnen in het menu Start onder Systeembeheer. Maak in het beheerprogramma een bestands-DSN zodat deze aan de connector kan worden verstrekt.
Het scherm Connectiviteit is de eerste wanneer u een nieuwe algemene SQL-connector maakt. U moet eerst de volgende informatie opgeven:
- DSN-bestandspad
- Authenticatie
- Gebruikersnaam
- Wachtwoord
De database moet een van deze verificatiemethoden ondersteunen:
- Windows-verificatie: de verificatiedatabase gebruikt de Windows-referenties om de gebruiker te verifiëren. De opgegeven gebruikersnaam/het opgegeven wachtwoord wordt gebruikt om te verifiëren bij de database. Dit account heeft machtigingen nodig voor de database.
- SQL-verificatie: de verificatiedatabase maakt gebruik van de gebruikersnaam/het wachtwoord dat is gedefinieerd in het connectiviteitsscherm om verbinding te maken met de database. Als u de gebruikersnaam/het wachtwoord opslaat in het DSN-bestand, hebben de referenties die zijn opgegeven op het connectiviteitsscherm voorrang.
- Azure SQL Database-verificatie: Zie Verbinding maken met SQL Database via Microsoft Entra-verificatie voor meer informatie.
DN is anker: als u deze optie selecteert, wordt de DN ook gebruikt als het ankerkenmerk. Het kan worden gebruikt voor een eenvoudige implementatie, maar heeft ook de volgende beperking:
- Connector ondersteunt slechts één objecttype. Daarom kunnen alle verwijzingskenmerken alleen verwijzen naar hetzelfde objecttype.
Exporttype: Object vervangen: Wanneer tijdens het exporteren slechts enkele kenmerken zijn gewijzigd, wordt het hele object met alle kenmerken geëxporteerd en wordt het bestaande object vervangen.
Schema 1 (Objecttypen detecteren)
Op deze pagina gaat u configureren hoe de connector de verschillende objecttypen in de database gaat vinden.
Elk objecttype wordt weergegeven als een partitie en verder geconfigureerd op Partities en hiërarchieën configureren.
Detectiemethode voor objecttypen: De connector ondersteunt deze detectiemethoden voor objecttypen.
- Vaste waarde: u geeft de lijst met objecttypen op met een door komma's gescheiden lijst. Voorbeeld:
User,Group,Department
.
- Tabel/weergave/opgeslagen procedure: geef de naam op van de tabel/weergave/opgeslagen procedure en vervolgens de kolomnaam die de lijst met objecttypen bevat. Als u een opgeslagen procedure gebruikt, geeft u er ook parameters voor op in de notatie [Naam]:[Richting]:[Waarde]. Geef elke parameter op een afzonderlijke regel op (gebruik Ctrl+Enter om een nieuwe regel op te halen).
- SQL-query: met deze optie kunt u een SQL-query opgeven die één kolom retourneert met objecttypen, bijvoorbeeld
SELECT [Column Name] FROM TABLENAME
. De geretourneerde kolom moet van het type tekenreeks (varchar) zijn.
Schema 2 (kenmerktypen detecteren)
Op deze pagina gaat u configureren hoe de kenmerknamen en -typen worden gedetecteerd. De configuratieopties worden weergegeven voor elk objecttype dat op de vorige pagina is gedetecteerd.
Detectiemethode kenmerktype: De connector ondersteunt deze detectiemethoden voor kenmerktypen met elk gedetecteerd objecttype in het scherm Schema 1.
- Tabel/weergave/opgeslagen procedure: geef de naam op van de tabel/weergave/opgeslagen procedure die moet worden gebruikt om de kenmerknamen te vinden. Als u een opgeslagen procedure gebruikt, geeft u er ook parameters voor op in de notatie [Naam]:[Richting]:[Waarde]. Geef elke parameter op een afzonderlijke regel op (gebruik Ctrl+Enter om een nieuwe regel op te halen). Als u de kenmerknamen in een kenmerk met meerdere waarden wilt detecteren, geeft u een door komma's gescheiden lijst met tabellen of weergaven op. Scenario's met meerdere waarden worden niet ondersteund wanneer de bovenliggende en onderliggende tabel dezelfde kolomnamen hebben.
- SQL-query: met deze optie kunt u een SQL-query opgeven die één kolom met kenmerknamen retourneert, bijvoorbeeld
SELECT [Column Name] FROM TABLENAME
. De geretourneerde kolom moet van het type tekenreeks (varchar) zijn.
Schema 3 (Anker en DN definiëren)
Op deze pagina kunt u het anker- en DN-kenmerk configureren voor elk gedetecteerd objecttype. U kunt meerdere kenmerken selecteren om het anker uniek te maken.
Kenmerken met meerdere waarden en Booleaanse kenmerken worden niet vermeld.
Hetzelfde kenmerk kan niet worden gebruikt voor DN en anker, tenzij DN is Anchor is geselecteerd op de pagina Connectiviteit.
Als DN is Anchor is geselecteerd op de pagina Connectiviteit, is voor deze pagina alleen het DN-kenmerk vereist. Dit kenmerk wordt ook gebruikt als ankerkenmerk.
Schema 4 (kenmerktype, verwijzing en richting definiëren)
Op deze pagina kunt u het kenmerktype configureren, zoals geheel getal, binair of Booleaanse waarde en richting voor elk kenmerk. Alle kenmerken van paginaschema 2 worden vermeld, inclusief kenmerken met meerdere waarden.
- DataType: wordt gebruikt om het kenmerktype toe te wijzen aan deze typen die bekend zijn door de synchronisatie-engine. De standaardinstelling is om hetzelfde type te gebruiken als gedetecteerd in het SQL-schema, maar Datum/tijd en verwijzing zijn niet gemakkelijk te detecteren. Hiervoor moet u Datum/tijd of verwijzing opgeven.
- Richting: U kunt de kenmerkrichting instellen op Importeren, Exporteren of ImportExport. ImportExport is standaard.
Opmerkingen:
- Als een kenmerktype niet kan worden gedetecteerd door de connector, wordt het gegevenstype Tekenreeks gebruikt.
- Geneste tabellen kunnen worden beschouwd als databasetabellen met één kolom. Oracle slaat de rijen van een geneste tabel in geen bepaalde volgorde op. Wanneer u de geneste tabel echter ophaalt in een PL/SQL-variabele, krijgen de rijen opeenvolgende subscripts vanaf 1. Dit geeft u matrixachtige toegang tot afzonderlijke rijen.
- VARRYS wordt niet ondersteund in de connector.
Schema 5 (Partitie definiëren voor referentiekenmerken)
Op deze pagina configureert u voor alle referentiekenmerken waarnaar een kenmerk verwijst( partitie (objecttype) waarnaar een kenmerk verwijst.
Als u DN gebruikt , is anker, moet u hetzelfde objecttype gebruiken als het object waaruit u verwijst. U kunt niet verwijzen naar een ander objecttype.
Notitie
Vanaf de update van maart 2017 is er nu een optie voor *wanneer deze optie is gekozen, worden alle mogelijke lidtypen geïmporteerd.
Belangrijk
Vanaf mei 2017 is de optie *gewijzigd ter ondersteuning van de import- en exportstroom. Als u deze optie wilt gebruiken, moet uw tabel/weergave met meerdere waarden een kenmerk hebben dat het objecttype bevat.
Als *is geselecteerd, moet ook de naam van de kolom met het objecttype worden opgegeven.
Na het importeren ziet u iets vergelijkbaars met de onderstaande afbeelding:
Globale parameters
De pagina Globale parameters wordt gebruikt voor het configureren van deltaimport, datum/tijd-indeling en wachtwoordmethode.
De Generic SQL Connector ondersteunt de volgende methoden voor Delta Import:
- Trigger: Zie Delta-weergaven genereren met behulp van triggers.
- Watermerk: Een algemene benadering die kan worden gebruikt met elke database. De watermerkquery wordt vooraf ingevuld op basis van de leverancier van de database. Een watermerkkolom moet aanwezig zijn in elke gebruikte tabel/weergave. Deze kolom moet invoegingen en updates voor de tabellen bijhouden als en de afhankelijke (multi-valued of onderliggende) tabellen. De klokken tussen de synchronisatieservice en de databaseserver moeten worden gesynchroniseerd. Zo niet, dan worden sommige vermeldingen in de deltaimport mogelijk weggelaten.
Beperking:- De watermerkstrategie biedt geen ondersteuning voor verwijderde objecten.
- Momentopname: (werkt alleen met Microsoft SQL Server) Delta-weergaven genereren met behulp van momentopnamen
- Wijzigingen bijhouden: (werkt alleen met Microsoft SQL Server) Over Wijzigingen bijhouden
Beperkingen:- Het anker- en DN-kenmerk moet deel uitmaken van de primaire sleutel voor het geselecteerde object in de tabel.
- SQL-query wordt niet ondersteund tijdens importeren en exporteren met Wijzigingen bijhouden.
Aanvullende parameters: geef de tijdzone van de databaseserver op die aangeeft waar de databaseserver zich bevindt. Deze waarde wordt gebruikt ter ondersteuning van de verschillende notaties van datum- en tijdkenmerken.
De connector slaat altijd datum- en datum-tijd op in UTC-indeling. Als u de datum en tijden correct wilt kunnen converteren, moet de tijdzone van de databaseserver en de gebruikte indeling worden opgegeven. De indeling moet worden uitgedrukt in .NET-indeling.
Tijdens het exporteren moet elk datum/tijdkenmerk worden opgegeven voor de connector in utc-tijdnotatie.
Wachtwoordconfiguratie: De connector biedt mogelijkheden voor wachtwoordsynchronisatie en ondersteunt het instellen en wijzigen van het wachtwoord.
De connector biedt twee methoden ter ondersteuning van wachtwoordsynchronisatie:
- Opgeslagen procedure: voor deze methode zijn twee opgeslagen procedures vereist ter ondersteuning van het wachtwoord Instellen en wijzigen. Typ alle parameters voor het toevoegen en wijzigen van de wachtwoordbewerking in Respectievelijk Wachtwoord-SP instellen en Wachtwoord-SP-parameters wijzigen volgens het onderstaande voorbeeld.
- Wachtwoordextensie: deze methode vereist DLL voor wachtwoordextensie (u moet de EXTENSIE DLL-naam opgeven die de IMAExtensible2Password-interface implementeert). Assembly van wachtwoordextensie moet in de extensiemap worden geplaatst, zodat de connector de DLL tijdens runtime kan laden.
U moet het wachtwoordbeheer ook inschakelen op de pagina Extensie configureren.
Partities en hiërarchieën configureren
Selecteer alle objecttypen op de pagina partities en hiërarchieën. Elk objecttype is een eigen partitie.
U kunt de waarden die zijn gedefinieerd op de pagina Connectiviteit of Globale parameters ook overschrijven.
Ankers configureren
Deze pagina is alleen-lezen omdat het anker al is gedefinieerd. Het geselecteerde ankerkenmerk wordt altijd toegevoegd aan het objecttype om ervoor te zorgen dat het uniek blijft voor alle objecttypen.
Parameter voor de uitvoeringsstap configureren
Deze stappen worden geconfigureerd voor de uitvoeringsprofielen op de connector. Deze configuraties doen het werkelijke werk van het importeren en exporteren van gegevens.
Volledige en Delta-import
Algemene SQL Connector biedt ondersteuning voor volledige en Delta-import met behulp van deze methoden:
- Tabel
- Weergave
- Opgeslagen procedure
- SQL Query
Tabel/weergave
Als u kenmerken met meerdere waarden voor een object wilt importeren, moet u de tabel-/weergavenaam opgeven in naam van tabel/weergaven met meerdere waarden en respectieve joinvoorwaarden in de joinvoorwaarde met de bovenliggende tabel. Als er meer dan één tabel met meerdere waarden in de gegevensbron staat, kunt u de samenvoeging gebruiken voor één weergave.
Belangrijk
De algemene SQL-beheeragent kan slechts met één tabel met meerdere waarden werken. Plaats deze niet in de naam van tabel met meerdere waarden/weergaven meer dan één naam van de tabel. Dit is de beperking van Generic SQL.
Voorbeeld: U wilt het object Werknemer en alle bijbehorende kenmerken met meerdere waarden importeren. Er zijn twee tabellen met de naam Werknemer (hoofdtabel) en Afdeling (meerdere waarden). Ga als volgt te werk:
- Typ Werknemer in tabel/weergave/SP.
- Typ Afdeling in naam van tabel/weergaven met meerdere waarden.
- Typ bijvoorbeeld de joinvoorwaarde tussen werknemer en afdeling in joinvoorwaarde
Employee.DEPTID=Department.DepartmentID
.
Opgeslagen procedures
- Als u veel gegevens hebt, is het raadzaam om paginering te implementeren met uw opgeslagen procedures.
- Voor de opgeslagen procedure ter ondersteuning van paginering moet u de beginindex en de eindindex opgeven. Zie: Efficiënt paggineren via grote hoeveelheden gegevens.
- @StartIndex en @EndIndex worden tijdens de uitvoering vervangen door de respectieve paginagroottewaarde die is geconfigureerd op de pagina Stap configureren. Wanneer de connector bijvoorbeeld de eerste pagina ophaalt en het paginaformaat is ingesteld op 500, is in dat geval @StartIndex 1 en @EndIndex 500. Deze waarden nemen toe wanneer de verbindingslijn volgende pagina's ophaalt en de @StartIndex waarde wijzigt @EndIndex .
- Als u geparameteriseerde opgeslagen procedure wilt uitvoeren, geeft u de parameters op in
[Name]:[Direction]:[Value]
de indeling. Voer elke parameter op een afzonderlijke regel in (gebruik Ctrl+ Enter om een nieuwe regel op te halen). - Algemene SQL-connector biedt ook ondersteuning voor importbewerkingen van gekoppelde servers in Microsoft SQL Server. Als informatie moet worden opgehaald uit een tabel op de gekoppelde server, moet de tabel worden opgegeven in de indeling:
[ServerName].[Database].[Schema].[TableName]
- Algemene SQL Connector ondersteunt alleen objecten met een vergelijkbare structuur (zowel aliasnaam als gegevenstype) tussen informatie over de uitvoeringsstappen en schemadetectie. Als het geselecteerde object uit het schema en opgegeven informatie tijdens de uitvoeringsstap anders is, kan SQL Connector dit type scenario's niet ondersteunen.
SQL-query
Belangrijk
CRLF of nieuw regelteken fungeert als scheidingsteken tussen meerdere instructies.
Voorbeeld van EEN SQL-query met paginering: onjuiste query werkt niet omdat het nieuwe regelteken wordt gebruikt:
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
Voorbeeld van SQL-query met paginering - juiste query:
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
- Query's voor meerdere resultatensets worden niet ondersteund.
- SQL-query ondersteunt de paginering en biedt Start Index en End Index als een variabele ter ondersteuning van paginering.
Delta-Import
Delta Import-configuratie vereist wat meer configuratie vergeleken met volledig importeren.
- Als u de methode Trigger of Momentopname kiest om deltawijzigingen bij te houden, geeft u de geschiedenistabel- of momentopnamedatabase op in het vak Geschiedenistabel of De naam van de momentopnamedatabase.
- U moet ook een joinvoorwaarde opgeven tussen de geschiedenistabel en de bovenliggende tabel, bijvoorbeeld
Employee.ID=History.EmployeeID
- Als u de transactie in de bovenliggende tabel wilt bijhouden uit de geschiedenistabel, moet u de kolomnaam opgeven die de bewerkingsgegevens bevat (Toevoegen/Bijwerken/Verwijderen).
- Als u Watermerk kiest om deltawijzigingen bij te houden, geeft u de kolomnaam op die de bewerkingsgegevens in kolomnaam watermarkering bevat.
- De kenmerkkolom Type wijzigen is vereist voor het wijzigingstype. Deze kolom wijst een wijziging toe die optreedt in de primaire tabel of tabel met meerdere waarden aan een wijzigingstype in de deltaweergave. Deze kolom kan het Modify_Attribute wijzigingstype bevatten voor wijziging op kenmerkniveau of een wijzigingstype toevoegen, wijzigen of verwijderen voor een wijzigingstype op objectniveau. Als dit iets anders is dan de standaardwaarde Toevoegen, Wijzigen of Verwijderen, kunt u deze waarden definiëren met deze optie.
Export
Algemene SQL Connector biedt ondersteuning voor exporteren met behulp van vier ondersteunde methoden, zoals:
- Tabel
- Weergave
- Opgeslagen procedure
- SQL Query
Tabel/weergave
Als u de optie Tabel/weergave kiest, genereert de connector de respectieve query's om de export uit te voeren.
Opgeslagen procedures
Als u de optie Opgeslagen procedure kiest, vereist Exporteren drie verschillende opgeslagen procedures om bewerkingen invoegen/bijwerken/verwijderen uit te voeren.
- SP-naam toevoegen: deze SP wordt uitgevoerd als er een object naar de connector komt voor invoeging in de desbetreffende tabel.
- Sp-naam bijwerken: deze SP wordt uitgevoerd als er een object naar de connector wordt geleverd voor update in de respectieve tabel.
- SP-naam verwijderen: deze SP wordt uitgevoerd als er een object naar de connector komt voor verwijdering in de desbetreffende tabel.
- Kenmerk dat is geselecteerd in het schema dat wordt gebruikt als parameterwaarde voor de opgeslagen procedure. Bijvoorbeeld:
@EmployeeName: INPUT: EmployeeName
(EmployeeName is geselecteerd in het connectorschema en de connector vervangt de respectieve waarde tijdens het exporteren) - Als u geparameteriseerde opgeslagen procedure wilt uitvoeren, geeft u parameters op in
[Name]:[Direction]:[Value]
de indeling. Voer elke parameter op een afzonderlijke regel in (gebruik Ctrl+ Enter om een nieuwe regel op te halen).
SQL-query
Als u de SQL-queryoptie kiest, vereist Exporteren drie verschillende query's om invoeg-/update-/verwijderbewerkingen uit te voeren.
- Query invoegen: deze query wordt uitgevoerd als er een object naar de connector komt voor invoeging in de desbetreffende tabel.
- Query bijwerken: deze query wordt uitgevoerd als er een object naar de connector wordt geleverd voor update in de desbetreffende tabel.
- Verwijderquery: deze query wordt uitgevoerd als er een object naar de connector komt voor verwijdering in de desbetreffende tabel.
- Kenmerk dat is geselecteerd in het schema dat wordt gebruikt als parameterwaarde voor de query, bijvoorbeeld
Insert into Employee (ID, Name) Values (@ID, @EmployeeName)
Belangrijk
CRLF of nieuw regelteken fungeert als scheidingsteken tussen meerdere instructies.
Sql-voorbeeldquery voor meerdere stappen bijwerken: het nieuwe regelteken wordt gebruikt om SQL-instructies te scheiden:
update Employee set jobTitle=@JOBTITLE where BusinessEntityID=@BUSINESSENTITYID
insert into ChangeLog VALUES (@BUSINESSENTITYID)
Probleemoplossing
- Zie etw-tracering inschakelen voor connectors voor informatie over het inschakelen van logboekregistratie om problemen met de connector op te lossen.