Allmän teknisk referens för SQL Connector

I den här artikeln beskrivs den allmänna SQL-anslutningsappen. Artikeln gäller för följande produkter:

För MIM2016 är anslutningsappen tillgänglig som en nedladdning från Microsoft Download Center.

Om du vill se hur den här anslutningsappen fungerar i praktiken kan du läsa den allmänna SQL-anslutningsappen steg för steg .

Anteckning

Microsoft Entra ID tillhandahåller nu en enkel agentbaserad lösning för att etablera användare till en SQL-databas, utan att behöva en MIM-synkroniseringsdistribution. Vi rekommenderar att du använder det för utgående användaretablering. Läs mer.

Översikt över den allmänna SQL-anslutningsappen

Med den allmänna SQL-anslutningsappen kan du integrera synkroniseringstjänsten med ett databassystem som erbjuder ODBC-anslutning.

Från ett övergripande perspektiv stöds följande funktioner av den aktuella versionen av anslutningsappen:

Funktion Support
Ansluten datakälla Anslutningsappen stöds med alla 64-bitars ODBC-drivrutiner*. Det har testats med följande:
  • Microsoft SQL Server & SQL Azure
  • IBM DB2 11.5.8
  • Oracle 11g
  • Oracle 12c och 18c
  • Oracle 21c och 23c
  • MySQL 5.x
  • MySQL 8.x
  • Postgres
  • Scenarier
  • Livscykelhantering för objekt
  • Lösenordshantering
  • Operations
  • Fullständig import och deltaimport, export
  • För export: Lägg till, ta bort, uppdatera och ersätta
  • Ange lösenord, ändra lösenord
  • Schema
  • Dynamisk identifiering av objekt och attribut
  • Förutsättningar

    Innan du använder anslutningsappen kontrollerar du att du har följande på synkroniseringsservern:

    • Microsoft .NET 4.6.2 Framework eller senare
    • 64-bitars ODBC-klientdrivrutiner
    • Om du använder anslutningsappen för att kommunicera med Oracle 12c kräver detta Oracle Instant Client 12.2.0.1 eller senare med ODBC-paketet.
    • Om du använder anslutningsappen för att kommunicera med Oracle 18c-23c kräver detta Oracle Instant Client 18-23 eller senare med ODBC-paketet och NLS_LANG-systemvariabeln anges för att stödja UTF8-tecken, t.ex. NLS_LANG=AMERICAN_AMERICA. AL32UTF8.
    • Den här anslutningsappen använder SQL-förberedda instruktioner och flera instruktioner per transaktion. Vissa RDBM-system kan ha problem med sina ODBC-drivrutiner som rör transaktionshantering, förberedda SQL-instruktioner på serversidan och flera instruktioner i samma transaktion. Konfigurera dina DSN-anslutningsalternativ för att säkerställa att dessa instruktioner skickas korrekt till databasen. Till exempel behöver MySQL ODBC-drivrutinsversion 8.0.32 alternativ NO_SSPS=1 och MULTI_STATEMENTS=1. Andra alternativ som "autocommit" eller "commit on successful operations only" (genomför endast lyckade åtgärder) kan påverka hur batchexporter hanteras. Kontakta databasadministratören för mer information. Om du vill felsöka problem under exporten anger du batchstorlek för export till 1 och aktiverar utförlig loggning av anslutningsappen.

    Distribution av den här anslutningsappen kan kräva ändringar i konfigurationen av databasen samt konfigurationsändringar i MIM. För distributioner som inbegriper integrering av MIM med en databasserver från tredje part i en produktionsmiljö rekommenderar vi att kunderna arbetar med sin databasleverantör eller en distributionspartner för att få hjälp, vägledning och support för den här integreringen.

    Behörigheter i ansluten datakälla

    Om du vill skapa eller utföra någon av de uppgifter som stöds i den allmänna SQL-anslutningsappen måste du ha:

    • db_datareader
    • db_datawriter

    Portar och protokoll

    Information om vilka portar som krävs för att ODBC-drivrutinen ska fungera finns i databasleverantörens dokumentation.

    Skapa en ny anslutningsapp

    Om du vill skapa en allmän SQL-anslutningsapp går du till Synkroniseringstjänst och väljer Hanteringsagent och Skapa. Välj den allmänna SQL-anslutningsappen (Microsoft).

    CreateConnector, sida 1

    Anslutning

    Anslutningsappen använder en ODBC DSN-fil för anslutning. Skapa DSN-filen med ODBC-datakällor som finns på Start-menyn under Administrationsverktyg. I det administrativa verktyget skapar du ett fil-DSN så att det kan tillhandahållas till anslutningsprogrammet.

    CreateConnector, sida 2

    Skärmen Anslutning är den första när du skapar en ny allmän SQL-anslutningsapp. Du måste först ange följande information:

    • DSN-filsökväg
    • Autentisering
      • Användarnamn
      • Lösenord

    Databasen bör ha stöd för någon av dessa autentiseringsmetoder:

    • Windows-autentisering: Autentiseringsdatabasen använder Windows-autentiseringsuppgifterna för att verifiera användaren. Det angivna användarnamnet/lösenordet används för att autentisera med databasen. Det här kontot behöver behörigheter till databasen.
    • SQL-autentisering: Den autentiserande databasen använder användarnamnet/lösenordet som definierats på skärmen Anslutning för att ansluta till databasen. Om du lagrar användarnamnet/pasword i DSN-filen har de autentiseringsuppgifter som anges på skärmen Anslutning företräde.
    • Azure SQL Database-autentisering: Mer information finns i Ansluta till SQL Database via Microsoft Entra-autentisering.

    DN är Fästpunkt: Om du väljer det här alternativet används DN också som fästpunktsattribut. Den kan användas för en enkel implementering men har också följande begränsning:

    • Anslutningsappen stöder endast en objekttyp. Därför kan alla referensattribut endast referera till samma objekttyp.

    Exporttyp: Objekt ersätt: Under exporten, när endast vissa attribut har ändrats, exporteras hela objektet med alla attribut och ersätter det befintliga objektet.

    Schema 1 (Identifiera objekttyper)

    På den här sidan ska du konfigurera hur anslutningsappen ska hitta de olika objekttyperna i databasen.

    Varje objekttyp visas som en partition och konfigureras ytterligare i Konfigurera partitioner och hierarkier.

    schema1a bild

    Identifieringsmetod för objekttyp: Anslutningsappen stöder dessa metoder för objekttypsidentifiering.

    • Fast värde: Du anger en lista över objekttyper med en kommaavgränsad lista. Exempel: User,Group,Department.
      schema1b-avbildning
    • Tabell/Vy/Lagrad procedur: Ange namnet på tabellen/vyn/den lagrade proceduren och sedan kolumnnamnet som innehåller listan över objekttyper. Om du använder en lagrad procedur anger du även parametrar för den i formatet [Name]:[Direction]:[Value]. Ange varje parameter på en separat rad (använd Ctrl +Retur för att hämta en ny rad).
      schema1c-avbildning
    • SQL-fråga: Med det här alternativet kan du ange en SQL-fråga som returnerar en enda kolumn med objekttyper, till exempel SELECT [Column Name] FROM TABLENAME. Den returnerade kolumnen måste vara av typen sträng (varchar).

    Schema 2 (identifiera attributtyper)

    På den här sidan ska du konfigurera hur attributnamn och typer ska identifieras. Konfigurationsalternativen visas för varje objekttyp som identifieras på föregående sida.

    schema2a bild

    Identifieringsmetod för attributtyp: Anslutningsappen stöder dessa identifieringsmetoder för attributtyper med varje identifierad objekttyp på skärmen Schema 1.

    • Tabell/Vy/Lagrad procedur: Ange namnet på den tabell/vy/lagrade procedur som ska användas för att hitta attributnamnen. Om du använder en lagrad procedur anger du även parametrar för den i formatet [Name]:[Direction]:[Value]. Ange varje parameter på en separat rad (använd Ctrl +Retur för att hämta en ny rad). Om du vill identifiera attributnamnen i ett flervärdesattribut anger du en kommaavgränsad lista med tabeller eller vyer. Flervärdesscenarier stöds inte när den överordnade och underordnade tabellen har samma kolumnnamn.
    • SQL-fråga: Med det här alternativet kan du ange en SQL-fråga som returnerar en enda kolumn med attributnamn, till exempel SELECT [Column Name] FROM TABLENAME. Den returnerade kolumnen måste vara av typen sträng (varchar).

    Schema 3 (Definiera fästpunkt och DN)

    På den här sidan kan du konfigurera fästpunkts- och DN-attribut för varje identifierad objekttyp. Du kan välja flera attribut för att göra fästpunkten unik.

    schema3a bild

    • Flervärdesattribut och booleska attribut visas inte.

    • Samma attribut kan inte användas för DN och fästpunkt, såvida inte DN är fästpunkt har valts på sidan Anslutning.

    • Om DN är Fästpunkt har valts på sidan Anslutning kräver den här sidan endast DN-attributet. Det här attributet används också som fästpunktsattribut.

      schema3b-avbildning

    Schema 4 (Definiera attributtyp, referens och riktning)

    På den här sidan kan du konfigurera attributtypen, till exempel heltal, binärfil eller boolesk, och riktning för varje attribut. Alla attribut från sidschema 2 visas, inklusive flervärdesattribut.

    schema4a bild

    • DataType: Används för att mappa attributtypen till de typer som synkroniseringsmotorn känner till. Standardvärdet är att använda samma typ som identifieras i SQL-schemat, men DateTime och Referens är inte lätta att identifiera. För dessa måste du ange DateTime eller Referens.
    • Riktning: Du kan ange attributriktningen till Import, Export eller ImportExport. ImportExport är standard.

    schema4b-avbildning

    Obs!

    • Om en attributtyp inte kan identifieras av anslutningsappen används datatypen Sträng.
    • Kapslade tabeller kan betraktas som databastabeller med en kolumn. Oracle lagrar raderna i en kapslad tabell i ingen särskild ordning. Men när du hämtar den kapslade tabellen till en PL/SQL-variabel får raderna efterföljande nedsänkta objekt med början 1. Det ger dig matrisliknande åtkomst till enskilda rader.
    • VARRYS stöds inte i anslutningsprogrammet.

    Schema 5 (Definiera partition för referensattribut)

    På den här sidan konfigurerar du för alla referensattribut som partition (objekttyp) ett attribut refererar till.

    schema5-bild

    Om du använder DN är fästpunkt måste du använda samma objekttyp som den du refererar från. Du kan inte referera till en annan objekttyp.

    Anteckning

    Från och med uppdateringen i mars 2017 finns det nu ett alternativ för "*" När det här alternativet väljs importeras alla möjliga medlemstyper.

    globalparameters3-bild

    Viktigt

    Från och med maj 2017 har "*" aka alla alternativ ändrats för att stödja import- och exportflöde. Om du vill använda det här alternativet bör din flervärdestabell/vy ha ett attribut som innehåller objekttypen.

    flervärdes valfritt alternativ före avbildning


    Om "*" är markerat måste även namnet på kolumnen med objekttypen anges.
    flervärdes valfritt alternativ efter avbildning

    Efter importen ser du något som liknar bilden nedan:

    globalparameters31-avbildning

    Globala parametrar

    Sidan Globala parametrar används för att konfigurera deltaimport, datum/tid-format och lösenordsmetod.

    globalparameters1-bild

    Den generiska SQL-anslutningsappen har stöd för följande metoder för deltaimport:

    • Utlösare: Se Generera deltavyer med utlösare.
    • Vattenstämpel: En allmän metod som kan användas med valfri databas. Vattenstämpelfrågan fylls i i förväg baserat på databasleverantören. En vattenstämpelkolumn måste finnas i varje tabell/vy som används. Den här kolumnen måste spåra infogningar och uppdateringar av tabellerna som och dess beroende (flervärdestabeller eller underordnade) tabeller. Klockorna mellan synkroniseringstjänsten och databasservern måste synkroniseras. Annars kan vissa poster i deltaimporten utelämnas.
      Begränsning:
      • Vattenstämpelstrategin stöder inte borttagna objekt.
    • Ögonblicksbild: (Fungerar endast med Microsoft SQL Server) Generera deltavyer med hjälp av ögonblicksbilder
    • Ändringsspårning: (Fungerar endast med Microsoft SQL Server) Om Ändringsspårning
      Begränsningar:
      • Attributet Anchor & DN måste vara en del av primärnyckeln för det valda objektet i tabellen.
      • SQL-frågan stöds inte under import och export med Ändringsspårning.

    Ytterligare parametrar: Ange tidszonen för databasservern som anger var databasservern finns. Det här värdet används för att stödja de olika formaten för datum- &-tidsattribut.

    Anslutningsappen lagrar alltid datum och datum-tid i UTC-format. För att kunna konvertera datum och tider korrekt måste tidszonen för databasservern och det format som används anges. Formatet ska uttryckas i .NET-format.

    Under exporten måste attributet för datum/tid anges till anslutningsappen i UTC-tidsformat.

    globalparameters2-bild

    Lösenordskonfiguration: Anslutningsappen tillhandahåller funktioner för lösenordssynkronisering och har stöd för att ange och ändra lösenord.

    Anslutningsappen innehåller två metoder för att stödja lösenordssynkronisering:

    • Lagrad procedur: Den här metoden kräver två lagrade procedurer som stöder Ange & Ändra lösenord. Ange alla parametrar för att lägga till och ändra lösenordsåtgärden i Ange SP för lösenord respektive Ändra SP-parametrar för lösenord enligt exemplet nedan. globalparameters32-avbildning
    • Lösenordstillägg: Den här metoden kräver DLL för lösenordstillägg (du måste ange tilläggets DLL-namn som implementerar gränssnittet IMAExtensible2Password ). Sammansättningen av lösenordstillägg måste placeras i tilläggsmappen så att anslutningsappen kan läsa in DLL-filen vid körning. globalparameters4-bild

    Du måste också aktivera lösenordshantering på sidan Konfigurera tillägg . globalparameters5-avbildning

    Konfigurera partitioner och hierarkier

    På sidan partitioner och hierarkier väljer du alla objekttyper. Varje objekttyp är en egen partition.

    partitions1-avbildning

    Du kan också åsidosätta de värden som definierats på sidan Anslutningar eller Globala parametrar .

    partitions2-avbildning

    Konfigurera ankare

    Den här sidan är skrivskyddad eftersom fästpunkten redan har definierats. Det markerade fästpunktsattributet läggs alltid till med objekttypen för att säkerställa att det förblir unikt för olika objekttyper.

    fästpunktsbild

    Konfigurera parametern Kör steg

    De här stegen konfigureras för körningsprofilerna i anslutningsappen. Dessa konfigurationer utför det faktiska arbetet med att importera och exportera data.

    Fullständig import och deltaimport

    Allmän SQL-anslutningsapp stöder fullständig import och deltaimport med hjälp av följande metoder:

    • Tabell
    • Visa
    • Lagrad procedur
    • SQL-fråga

    runstep1-avbildning

    Tabell/vy
    Om du vill importera flervärdesattribut för ett objekt måste du ange tabell-/vynamnet i Namn på flervärdestabell/vyer och respektive kopplingsvillkor i kopplingsvillkoret med den överordnade tabellen. Om det finns fler än en flervärdestabell i datakällan kan du använda union till en enda vy.

    Viktigt

    Den allmänna SQL-hanteringsagenten kan bara fungera med en flervärdestabell. Placera inte i Namn på flervärdestabell/vyer mer än ett namn på tabellen. Det är begränsningen för generisk SQL.

    Exempel: Du vill importera employee-objektet och alla dess flervärdesattribut. Det finns två tabeller med namnen Employee (huvudtabell) och Department (multi-valued). Gör följande:

    • Skriv Employee i Table/View/SP.
    • Skriv Avdelning i Namn på flervärdestabell/vyer.
    • Skriv kopplingsvillkoret mellan Medarbetare & avdelning i Kopplingsvillkor, till exempel Employee.DEPTID=Department.DepartmentID. runstep2-avbildning

    Lagrade procedurer
    runstep3-avbildning

    • Om du har mycket data rekommenderar vi att du implementerar sidnumrering med dina lagrade procedurer.
    • För att den lagrade proceduren ska ha stöd för sidnumrering måste du ange Startindex och Slutindex. Se: Växla effektivt genom stora mängder data.
    • @StartIndex och @EndIndex ersätts vid körning med respektive sidstorleksvärde som konfigurerats på sidan Konfigurera steg . När anslutningsappen till exempel hämtar första sidan och sidstorleken har angetts till 500 blir den i sådana fall @StartIndex 1 och @EndIndex 500. Dessa värden ökar när anslutningsappen hämtar efterföljande sidor och ändrar värdet @StartIndex för & @EndIndex .
    • Om du vill köra parametriserad lagrad procedur anger du parametrarna i [Name]:[Direction]:[Value] format. Ange varje parameter på en separat rad (Använd Ctrl + Retur för att hämta en ny rad).
    • Allmän SQL-anslutningsapp stöder även importåtgärder från länkade servrar i Microsoft SQL Server. Om information ska hämtas från en tabell på en länkad server ska tabell anges i formatet: [ServerName].[Database].[Schema].[TableName]
    • Allmän SQL-anslutningsapp stöder endast de objekt som har liknande struktur (både aliasnamn och datatyp) mellan körningsstegsinformation och schemaidentifiering. Om det valda objektet från schemat och den angivna informationen i körningssteget är annorlunda kan INTE SQL Connector stödja den här typen av scenarier.

    SQL-fråga
    runstep4-avbildning

    runstep5-avbildning

    Viktigt

    CRLF eller nytt radtecken fungerar som en avgränsare mellan flera instruktioner.

    Sql-exempelfråga med sidnumrering – felaktig fråga fungerar inte eftersom det nya radtecknet används:

    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
    

    Exempel på SQL-fråga med sidnumrering – rätt fråga:

    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
    
    • Frågor för flera resultatuppsättningar stöds inte.
    • SQL-frågan stöder sidnumreringen och anger Startindex och Slutindex som en variabel som stöd för sidnumrering.

    Deltaimport

    runstep6-avbildning

    Deltaimportkonfigurationen kräver lite mer konfiguration jämfört med Fullständig import.

    • Om du väljer metoden Utlösare eller Ögonblicksbild för att spåra deltaändringar anger du historiktabellen eller ögonblicksbilddatabasen i rutan Historiktabell eller Namn på ögonblicksbilddatabas .
    • Du måste också ange kopplingsvillkor mellan historiktabellen och den överordnade tabellen, till exempel Employee.ID=History.EmployeeID
    • Om du vill spåra transaktionen på den överordnade tabellen från historiktabellen måste du ange det kolumnnamn som innehåller åtgärdsinformationen (Lägg till/uppdatera/ta bort).
    • Om du väljer Vattenstämpel för att spåra deltaändringar anger du det kolumnnamn som innehåller åtgärdsinformationen i Kolumnnamn för vattenmarkering.
    • Attributkolumnen ändringstyp krävs för ändringstypen. Den här kolumnen mappar en ändring som sker i den primära tabellen eller tabellen med flera värden till en ändringstyp i deltavyn. Den här kolumnen kan innehålla Modify_Attribute ändringstyp för attributnivåändringar eller ändringstypen Lägg till, Ändra eller Ta bort för en ändringstyp på objektnivå. Om det är något annat än standardvärdet Lägg till, Ändra eller Ta bort kan du definiera dessa värden med det här alternativet.

    Exportera

    runstep7-avbildning

    Allmän SQL-anslutningsapp stöder export med hjälp av fyra metoder som stöds, till exempel:

    • Tabell
    • Visa
    • Lagrad procedur
    • SQL-fråga

    Tabell/vy
    Om du väljer alternativet Tabell/Vy genererar anslutningsappen respektive frågor för att utföra exporten.

    Lagrade procedurer
    runstep8-avbildning

    Om du väljer alternativet Lagrad procedur kräver Export tre olika lagrade procedurer för att utföra åtgärder för infoga/uppdatera/ta bort.

    • Lägg till SP-namn: Detta SP körs om något objekt kommer till anslutningsappen för infogning i respektive tabell.
    • Uppdatera SP-namn: Det här SP:et körs om något objekt kommer till anslutningsappen för uppdatering i respektive tabell.
    • Ta bort SP-namn: Det här SP:et körs om något objekt kommer till anslutningsappen för borttagning i respektive tabell.
    • Attribut som valts från schemat som används som ett parametervärde till den lagrade proceduren. Till exempel @EmployeeName: INPUT: EmployeeName (EmployeeName har valts i anslutningsschemat och anslutningsappen ersätter respektive värde vid export)
    • Om du vill köra en parametriserad lagrad procedur anger du parametrar i [Name]:[Direction]:[Value] formatet. Ange varje parameter på en separat rad (Använd Ctrl + Retur för att hämta en ny rad).

    SQL-fråga
    runstep9-avbildning

    Om du väljer sql-frågealternativet kräver Export tre olika frågor för att utföra åtgärder för att infoga/uppdatera/ta bort.

    • Infoga fråga: Den här frågan körs om något objekt kommer till anslutningsappen för infogning i respektive tabell.
    • Uppdateringsfråga: Den här frågan körs om något objekt kommer till anslutningsappen för uppdatering i respektive tabell.
    • Ta bort fråga: Den här frågan körs om något objekt kommer till anslutningsappen för borttagning i respektive tabell.
    • Attribut som valts från schemat som används som ett parametervärde för frågan, till exempel Insert into Employee (ID, Name) Values (@ID, @EmployeeName)

    Viktigt

    CRLF eller nytt radtecken fungerar som en avgränsare mellan flera instruktioner.

    Exempel på sql-fråga för flerstegsuppdatering – det nya radtecknet används för att avgränsa SQL-uttryck:

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

    Felsökning