Les på engelsk

Del via


Parametere for Odbc.DataSource

Odbc.DataSource-funksjonen tar to parametere – a connectionString for driveren, og en options post som lar deg overstyre ulike drivervirkemåter. Gjennom alternativposten kan du overstyre funksjoner og annen informasjon som rapporteres av driveren, kontrollere navigatorvirkemåten og påvirke SQL-spørringene som genereres av M-motoren.

De støttede alternativene poster felter faller inn i to kategorier – de som er offentlige og alltid tilgjengelige, og de som bare er tilgjengelige i en utvidbarhetskontekst.

Tabellen nedenfor beskriver de offentlige feltene i alternativposten.

Felt Bekrivelse
CommandTimeout En varighetsverdi som styrer hvor lenge spørringen på serversiden kan kjøres før den avbrytes.

Standard: 10 minutter
ConnectionTimeout En varighetsverdi som styrer hvor lenge du skal vente før du forlater et forsøk på å opprette en tilkobling til serveren.

Standard: 15 sekunder
CreateNavigationProperties En logisk verdi som angir om navigeringsegenskapene skal genereres i de returnerte tabellene. Navigasjonsegenskaper er basert på sekundærnøkkelrelasjoner rapportert av driveren. Disse egenskapene vises som "virtuelle" kolonner som kan utvides i redigeringsprogrammet for spørringen, og oppretter riktig sammenføyning.

Hvis beregning av sekundærnøkkelavhengigheter er en dyr operasjon for driveren, kan det være lurt å angi denne verdien til usann.

Standard: sann
HierarchicalNavigation En logisk verdi som angir om tabellene skal vises gruppert etter skjemanavnene. Når den er satt til usann, vises tabeller i en flat liste under hver database.

Standard: false
SqlCompatibleWindowsAuth En logisk verdi som bestemmer om det skal produseres en SQL Server-kompatibel tilkoblingsstreng når du bruker Windows-godkjenningTrusted_Connection=Yes.

Hvis driveren støtter Windows-godkjenning, men krever ekstra eller alternative innstillinger i tilkoblingsstreng, bør du angi denne verdien til usann og bruke CredentialConnectionString alternativene for postfeltet som er beskrevet i neste tabell.

Standard: sann

Tabellen nedenfor beskriver alternativene for postfelt som bare er tilgjengelige gjennom utvidbarhet. Felt som ikke er enkle litterale verdier, beskrives i senere inndelinger.

Felt Bekrivelse
AstVisitor En post som inneholder ett eller flere overstyringer for å kontrollere generering av SQL-spørring. Den vanligste bruken av dette feltet er å gi logikk til å generere en LIMIT/OFFSET-setningsdel for drivere som ikke støtter TOP.

Feltene inkluderer Constant og LimitClause.

Mer informasjon: Overstyrer AstVisitor
CancelQueryExplicitly En logisk verdi som ber M-motoren om eksplisitt å avbryte eventuelle kjørende anrop gjennom ODBC-driveren før tilkoblingen avsluttes til ODBC-serveren.

Dette feltet er nyttig i situasjoner der kjøring av spørring administreres uavhengig av nettverkstilkoblingene til serveren, for eksempel i enkelte Spark-distribusjoner. I de fleste tilfeller trenger ikke denne verdien angis fordi spørringen i serveren avbrytes når nettverkstilkoblingen til serveren avsluttes.

Standard: false
ClientConnectionPooling En logisk verdi som aktiverer tilkoblingsutvalg på klientsiden for ODBC-driveren. De fleste drivere vil sette denne verdien til sann.

Standard: false
CredentialConnectionString En tekst- eller postverdi som brukes til å angi legitimasjonsrelaterte tilkoblingsstreng egenskaper.
HideNativeQuery En logisk verdi som styrer hvorvidt koblingen viser genererte SQL-setninger i Power Query-brukeropplevelsen. Dette bør bare settes til sann hvis datakilden for bakenden opprinnelig støtter SQL-92.

Standard: false
ImplicitTypeConversions En tabellverdi som inneholder implisitte typekonverteringer som støttes av driveren eller serverdelserveren. Verdiene i denne tabellen er additive til konverteringene som rapporteres av selve driveren.

Dette feltet brukes vanligvis med SQLGetTypeInfo feltet ved overstyring av datatypeinformasjon rapportert av driveren.
OnError En feilbehandlingsfunksjon som mottar en errorRecord parameter av typen record.

Vanlige bruksområder for denne funksjonen inkluderer håndtering av SSL-tilkoblingsfeil, som gir en nedlastingskobling hvis driveren ikke finnes på systemet og rapporterer godkjenningsfeil.
SoftNumbers Gjør at M-motoren kan velge en kompatibel datatype når konvertering mellom to bestemte numeriske typer ikke deklareres som støttet i SQL_CONVERT_*-funksjonene.

Standard: false
SqlCapabilities En post som gir ulike overstyringer av driverfunksjoner, og en måte å angi funksjoner som ikke uttrykkes gjennom ODBC 3.8.

Mer informasjon: Overstyre SqlCapabilities
SQLColumns En funksjon som lar deg endre kolonnemetadata som returneres av SQLColumns funksjonen.

Mer informasjon: Overstyre SQLColumns
SQLGetFunctions En post som lar deg overstyre verdier som returneres av kall til SQLGetFunctions.

En vanlig bruk av dette feltet er å deaktivere bruken av parameterbinding, eller angi at genererte spørringer skal bruke CAST i stedet for KONVERTER.

Mer informasjon: Overstyre SQLGetFunctions
SQLGetInfo En post som lar deg overstyre verdier som returneres av kall til SQLGetInfo.

Mer informasjon: Overstyre SQLGetInfo
SQLGetTypeInfo En tabell eller funksjon som returnerer en tabell som overstyrer typeinformasjonen som returneres av SQLGetTypeInfo.

Når verdien er satt til en tabell, erstatter verdien fullstendig typeinformasjonen som rapporteres av driveren. SQLGetTypeInfo vil ikke bli kalt.

Når verdien er satt til en funksjon, får funksjonen resultatet av det opprinnelige kallet til SQLGetTypeInfo, slik at du kan endre tabellen.

Dette feltet brukes vanligvis når det er en mismatch mellom datatyper rapportert av SQLGetTypeInfo og SQLColumns.

Mer informasjon: Overstyre SQLGetTypeInfo
SQLTables En funksjon som lar deg endre tabellmetadataene som returneres av et kall til SQLTables.
TolerateConcatOverflow Gjør at sammenkobling av tekstverdier kan forekomme selv om resultatet kan avkortes slik at det passer innenfor området til en tilgjengelig type.

Når du for eksempel setter sammen et VARCHAR(4000)-felt med et VARCHAR(4000)-felt på et system som støtter en maksimert VARCHAR-størrelse på 4000 og ingen CLOB-type, brettes sammenkoblingen selv om resultatet kan bli avkortet.

Standard: false
UseEmbeddedDriver (intern bruk): En logisk verdi som styrer om ODBC-driveren skal lastes inn fra en lokal katalog (ved hjelp av ny funksjonalitet definert i ODBC 4.0-spesifikasjonen). Denne verdien angis vanligvis bare av koblinger opprettet av Microsoft som leveres med Power Query.

Når den er satt til usann, brukes system-ODBC-driverbehandling til å finne og laste inn driveren.

De fleste koblinger trenger ikke å angi dette feltet.

Standard: false

Overordnet astvisitor

Feltet AstVisitor angis gjennom Odbc.DataSource-alternativposten . Den brukes til å endre SQL-setninger som genereres for bestemte spørringsscenarioer.

Obs!

Drivere som støtter LIMIT- og OFFSET-setningsdeler (i stedet for TOP) vil gi en LimitClause overstyring for AstVisitor.

Konstant

Å angi en overstyring for denne verdien er avskrevet og kan fjernes fra fremtidige implementeringer.

LimitClause

Dette feltet er en funksjon som mottar to Int64.Type argumenter (skip, take), og returnerer en post med to tekstfelt (Text, Location).

LimitClause = (skip as nullable number, take as number) as record => ...

Parameteren skip er antall rader som skal hoppes over (det vil eksempelvis argumentet for FORSKYVNING). Hvis en forskyvning ikke er angitt, vil hopp over-verdien være null. Hvis driveren støtter LIMIT, men ikke støtter FORSKYVNING, LimitClause bør funksjonen returnere en uimplementert feil (...) når hopp over er større enn 0.

Parameteren take er antall rader som skal tas (det vil eksempelvis argumentet til LIMIT).

Feltet Text i resultatet inneholder SQL-teksten som skal legges til i den genererte spørringen.

Feltet Location angir hvor setningsdelen skal settes inn. Tabellen nedenfor beskriver støttede verdier.

Verdi Bekrivelse Eksempel
AfterQuerySpecification LIMIT-setningsdelen plasseres på slutten av den genererte SQL-setningen.

Dette er den mest støttede LIMIT-syntaksen.
VELG a, b, c

FROM-tabell

WHERE a > 10

GRENSE 5
BeforeQuerySpecification LIMIT-setningsdelen plasseres før den genererte SQL-setningen. BEGRENS 5 RADER

VELG a, b, c

FROM-tabell

WHERE a > 10
AfterSelect LIMIT går etter SELECT-setningen, og etter eventuelle modifikasjoner (for eksempel DISTINCT). VELG DISTINKT GRENSE 5 a, b, c

FROM-tabell

WHERE a > 10
AfterSelectBeforeModifiers LIMIT går etter SELECT-setningen, men før endringer (for eksempel DISTINCT). VELG GRENSE 5 DISTINKT A, b, c

FROM-tabell

WHERE a > 10

Følgende kodesnutt gir en LimitClause-implementering for en driver som forventer en LIMIT-setningsdel, med en valgfri OFFSET, i følgende format: [OFFSET <offset> ROWS] LIMIT <row_count>

LimitClause = (skip, take) =>
    let
        offset = if (skip > 0) then Text.Format("OFFSET #{0} ROWS", {skip}) else "",
        limit = if (take <> null) then Text.Format("LIMIT #{0}", {take}) else ""
    in
        [
            Text = Text.Format("#{0} #{1}", {offset, limit}),
            Location = "AfterQuerySpecification"
        ]

Kodesnutten nedenfor gir en LimitClause implementering for en driver som støtter LIMIT, men ikke OFFSET. Format: LIMIT <row_count>.

LimitClause = (skip, take) =>
    if (skip > 0) then error "Skip/Offset not supported"
    else
    [
        Text = Text.Format("LIMIT #{0}", {take}),
        Location = "AfterQuerySpecification"
    ]

Overstyrer SqlCapabilities

Felt Detaljer
FractionalSecondsScale En tallverdi fra 1 til 7 som angir antall desimaler som støttes for millisekunders verdier. Denne verdien må angis av koblinger som vil aktivere spørringsdelegering over datetime-verdier.

Standard: null
PrepareStatements En logisk verdi som angir at setninger bør klarberedes ved hjelp av SQLPrepare.

Standard: false
SupportsTop En logisk verdi som angir at driveren støtter TOP-setningsdelen for å begrense antall returnerte rader.

Standard: false
StringLiteralEscapeCharacters En liste over tekstverdier som angir tegnene som skal brukes når strenglitteraler og LIKE-uttrykk slippes ut.

Eksempel: {""}

Standard: null
SupportsDerivedTable En logisk verdi som angir at driveren støtter avledede tabeller (undervalg).

Denne verdien antas å være sann for drivere som angir samsvarsnivået til SQL_SC_SQL92_FULL (rapportert av driveren eller overstyrt med Sql92Conformance-innstillingen. For alle andre samsvarsnivåer er denne verdien usann.

Hvis driveren ikke rapporterer SQL_SC_SQL92_FULL samsvarsnivå, men støtter avledede tabeller, setter du denne verdien til sann.

Støtte avledede tabeller kreves for mange DirectQuery-scenarioer.
SupportsNumericLiterals En logisk verdi som angir om den genererte SQL-en skal inneholde numeriske litteralverdier. Når angitt som usann, angis alltid numeriske verdier ved hjelp av parameterbinding.

Standard: false
SupportsStringLiterals En logisk verdi som angir om den genererte SQL-en skal inneholde strenglitteralverdier. Når satt til usann, angis alltid strengverdier ved hjelp av parameterbinding.

Standard: false
SupportsOdbcDateLiterals En logisk verdi som angir om den genererte SQL-en skal inneholde verdier for datolitteraler. Når satt til usann, angis alltid datoverdier ved hjelp av parameterbinding.

Standard: false
SupportsOdbcTimeLiterals En logisk verdi som angir om den genererte SQL-en skal inneholde verdier for tidslitteraler. Når satt til usann, angis alltid tidsverdier ved hjelp av parameterbinding.

Standard: false
SupportsOdbcTimestampLiterals En logisk verdi som angir om den genererte SQL-en skal inneholde verdier for tidsstempellitteraler. Når angitt som usann, angis alltid tidsstempelverdier ved hjelp av parameterbinding.

Standard: false

Overstyrer SQLColumns

SQLColumns er en funksjonsbehandling som mottar resultatene av et ODBC-kall til SQLColumns. Kildeparameteren inneholder en tabell med datatypeinformasjon. Denne overstyringen brukes vanligvis til å løse datatypekonflikter mellom kall til SQLGetTypeInfo og SQLColumns.

Hvis du vil ha mer informasjon om formatet for kildetabellparameteren, kan du gå til SQLColumns Function.

Overstyrer SQLGetFunctions

Dette feltet brukes til å overstyre SQLFunctions verdier som returneres av en ODBC-driver. Den inneholder en post med feltnavn som er lik FunctionId konstantene som er definert for ODBC SQLGetFunctions-funksjonen . Du finner numeriske konstanter for hvert av disse feltene i ODBC-spesifikasjonen.

Felt Detaljer
SQL_CONVERT_FUNCTIONS Angir hvilke funksjoner som støttes når du utfører typekonverteringer. M-motoren prøver som standard å bruke KONVERTER-funksjonen. Drivere som foretrekker bruk av CAST, kan overstyre denne verdien til å rapportere at bare SQL_FN_CVT_CAST (numerisk verdi for 0x2) støttes.
SQL_API_SQLBINDCOL En logisk verdi (sann/usann) som angir om mashup-motoren skal bruke SQLBindCol-API-en ved henting av data. Når angitt som usann, brukes SQLGetData i stedet.

Standard: false

Kodesnutten nedenfor gir et eksempel som eksplisitt ber M-motoren om å bruke CAST i stedet for KONVERTER.

SQLGetFunctions = [
    SQL_CONVERT_FUNCTIONS = 0x2 /* SQL_FN_CVT_CAST */
]

Overstyrer SQLGetInfo

Dette feltet brukes til å overstyre SQLGetInfo verdier som returneres av en ODBC-driver. Den inneholder en post der feltene er navn som er lik InfoType konstantene som er definert for ODBC SQLGetInfo-funksjonen . Du finner numeriske konstanter for hvert av disse feltene i ODBC-spesifikasjonen. Du finner den fullstendige listen over InfoTypes de merkede filene i sporingsfilene for mashup-motoren.

Tabellen nedenfor inneholder vanligvis overstyrte SQLGetInfo egenskaper:

Felt Detaljer
SQL_SQL_CONFORMANCE En heltallsverdi som angir nivået på SQL-92 som støttes av driveren:

(1) SQL_SC_SQL92_ENTRY: Sql-92-kompatibel på oppføringsnivå.
(2) SQL_SC_FIPS127_2_TRANSITIONAL: FIPS 127-2-kompatibelt overgangsnivå.
(4) SQL_SC_ SQL92_INTERMEDIATE" Sql-92-kompatibelt mellomnivå.
(8) SQL_SC_SQL92_FULL: Sql-92-kompatibelt på fullstendig nivå.

I Power Query-scenarioer brukes koblingen i skrivebeskyttet modus. De fleste drivere vil rapportere et SQL_SC_SQL92_FULL samsvarsnivå, og overstyre spesifikk virkemåte for SQL-generering ved hjelp av egenskapene SQLGetInfo og SQLGetFunctions .
SQL_SQL92_PREDICATES En bitmaske som nummererer predikatene som støttes i en SELECT-setning, som definert i SQL-92.

Gå til SQL_SP_* konstanter i ODBC-spesifikasjonen.
SQL_AGGREGATE_FUNCTIONS En bitmaske som nummererer støtte for aggregasjonsfunksjoner.

SQL_AF_ALL
SQL_AF_AVG
SQL_AF_COUNT
SQL_AF_DISTINCT
SQL_AF_MAX
SQL_AF_MIN
SQL_AF_SUM

Gå til SQL_AF_* konstanter i ODBC-spesifikasjonen.
SQL_GROUP_BY En heltallsverdi som angir relasjonen mellom kolonnene i GROUP BY-setningsdelen og de ikke-aggregerte kolonnene i utvalgslisten:

SQL_GB_COLLATE: En COLLATE-setningsdel kan angis på slutten av hver grupperingskolonne.

SQL_GB_NOT_SUPPORTED: GROUP BY-setningsdeler støttes ikke.

SQL_GB_GROUP_BY_EQUALS_SELECT: GROUP BY-setningsdelen må inneholde alle ikke-aggregerte kolonner i utvalgslisten. Den kan ikke inneholde andre kolonner. VELG FOR eksempel AVD, MAKS(LØNN) FRA ANSATTGRUPPE ETTER AVD.

SQL_GB_GROUP_BY_CONTAINS_SELECT: GROUP BY-setningsdelen må inneholde alle ikke-aggregerte kolonner i utvalgslisten. Den kan inneholde kolonner som ikke er i utvalgslisten. VELG FOR eksempel AVD, MAKS(LØNN) FRA ANSATTGRUPPE ETTER DEPT, ALDER.

SQL_GB_NO_RELATION: Kolonnene i GROUP BY-setningsdelen og utvalgslisten er ikke relatert. Betydningen av ikke-grupperte, ikke-aggregerte kolonner i utvalgslisten er datakildeavhengig. Velg for eksempel AVD, LØNN FRA ANSATTGRUPPE ETTER AVD, ALDER.

Gå til SQL_GB_* konstanter i ODBC-spesifikasjonen.

Følgende hjelpefunksjon kan brukes til å opprette bitmaskeverdier fra en liste over heltallsverdier:

Flags = (flags as list) =>
    let
        Loop = List.Generate(
                  ()=> [i = 0, Combined = 0],
                  each [i] < List.Count(flags),
                  each [i = [i]+1, Combined =*Number.BitwiseOr([Combined], flags{i})],
                  each [Combined]),
        Result = List.Last(Loop, 0)
    in
        Result;

Overstyrer SQLGetTypeInfo

SQLGetTypeInfo kan angis på to måter:

  • En fast table verdi som inneholder samme type informasjon som et ODBC-kall til SQLGetTypeInfo.
  • En funksjon som godtar et tabellargument og returnerer en tabell. Argumentet inneholder de opprinnelige resultatene av ODBC-kallet til SQLGetTypeInfo. Funksjonsimplementeringen kan endre eller legge til i denne tabellen.

Den første fremgangsmåten brukes til å overstyre verdiene som returneres av ODBC-driveren fullstendig. Den andre fremgangsmåten brukes hvis du vil legge til eller endre disse verdiene.

Hvis du vil ha mer informasjon om formatet for tabellparameteren for typene og forventet returverdi, kan du gå til funksjonsreferansen sqlGetTypeInfo.

SQLGetTypeInfo ved hjelp av en statisk tabell

Kodesnutten nedenfor gir en statisk implementering for SQLGetTypeInfo.

SQLGetTypeInfo = #table(
    { "TYPE_NAME",      "DATA_TYPE", "COLUMN_SIZE", "LITERAL_PREF", "LITERAL_SUFFIX", "CREATE_PARAS",           "NULLABLE", "CASE_SENSITIVE", "SEARCHABLE", "UNSIGNED_ATTRIBUTE", "FIXED_PREC_SCALE", "AUTO_UNIQUE_VALUE", "LOCAL_TYPE_NAME", "MINIMUM_SCALE", "MAXIMUM_SCALE", "SQL_DATA_TYPE", "SQL_DATETIME_SUB", "NUM_PREC_RADIX", "INTERNAL_PRECISION", "USER_DATA_TYPE" }, {

    { "char",           1,          65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "char",            null,            null,            -8,              null,               null,             0,                    0                }, 
    { "int8",           -5,         19,             "'",            "'",              null,                     1,          0,                2,            0,                    10,                 0,                   "int8",            0,               0,               -5,              null,               2,                0,                    0                },
    { "bit",            -7,         1,              "'",            "'",              null,                     1,          1,                3,            null,                 0,                  null,                "bit",             null,            null,            -7,              null,               null,             0,                    0                },
    { "bool",           -7,         1,              "'",            "'",              null,                     1,          1,                3,            null,                 0,                  null,                "bit",             null,            null,            -7,              null,               null,             0,                    0                },
    { "date",           9,          10,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "date",            null,            null,            9,               1,                  null,             0,                    0                }, 
    { "numeric",        3,          28,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "numeric",         0,               0,               2,               null,               10,               0,                    0                },
    { "float8",         8,          15,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "float8",          null,            null,            6,               null,               2,                0,                    0                },
    { "float8",         6,          17,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "float8",          null,            null,            6,               null,               2,                0,                    0                },
    { "uuid",           -11,        37,             null,           null,             null,                     1,          0,                2,            null,                 0,                  null,                "uuid",            null,            null,            -11,             null,               null,             0,                    0                },
    { "int4",           4,          10,             null,           null,             null,                     1,          0,                2,            0,                    0,                   0,                  "int4",            0,               0,               4,               null,               2,                0,                    0                },
    { "text",           -1,         65535,          "'",            "'",              null,                     1,          1,                3,            null,                 0,                  null,                "text",            null,            null,            -10,             null,               null,             0,                    0                },
    { "lo",             -4,         255,            "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "lo",              null,            null,            -4,              null,               null,             0,                    0                }, 
    { "numeric",        2,          28,             null,           null,             "precision, scale",       1,          0,                2,            0,                    10,                 0,                   "numeric",         0,               6,               2,               null,               10,               0,                    0                },
    { "float4",         7,          9,              null,           null,             null,                     1,          0,                2,            0,                    10,                 0,                   "float4",          null,            null,            7,               null,               2,                0,                    0                }, 
    { "int2",           5,          19,             null,           null,             null,                     1,          0,                2,            0,                    10,                 0,                   "int2",            0,               0,               5,               null,               2,                0,                    0                }, 
    { "int2",           -6,         5,              null,           null,             null,                     1,          0,                2,            0,                    10,                 0,                   "int2",            0,               0,               5,               null,               2,                0,                    0                }, 
    { "timestamp",      11,         26,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "timestamp",       0,               38,              9,               3,                  null,             0,                    0                }, 
    { "date",           91,         10,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "date",            null,            null,            9,               1,                  null,             0,                    0                }, 
    { "timestamp",      93,         26,             "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "timestamp",       0,               38,              9,               3,                  null,             0,                    0                }, 
    { "bytea",          -3,         255,            "'",            "'",              null,                     1,          0,                2,            null,                 0,                  null,                "bytea",           null,            null,            -3,              null,               null,             0,                    0                }, 
    { "varchar",        12,         65535,          "'",            "'",              "max. length",            1,          0,                2,            null,                 0,                  null,                "varchar",         null,            null,           -9,               null,               null,             0,                    0                }, 
    { "char",           -8,         65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "char",            null,            null,           -8,               null,               null,             0,                    0                }, 
    { "text",           -10,        65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "text",            null,            null,           -10,              null,               null,             0,                    0                }, 
    { "varchar",        -9,         65535,          "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "varchar",         null,            null,           -9,               null,               null,             0,                    0                },
    { "bpchar",         -8,         65535,           "'",            "'",              "max. length",            1,          1,                3,            null,                 0,                  null,                "bpchar",          null,            null,            -9,               null,               null,            0,                    0                } }
);

SQLGetTypeInfo ved hjelp av en funksjon

Følgende kodesnutter tilføyer bpchar typen til de eksisterende typene som returneres av driveren.

SQLGetTypeInfo = (types as table) as table =>
   let
       newTypes = #table(
           {
               "TYPE_NAME",
               "DATA_TYPE",
               "COLUMN_SIZE",
               "LITERAL_PREF",
               "LITERAL_SUFFIX",
               "CREATE_PARAS",
               "NULLABLE",
               "CASE_SENSITIVE",
               "SEARCHABLE",
               "UNSIGNED_ATTRIBUTE",
               "FIXED_PREC_SCALE",
               "AUTO_UNIQUE_VALUE",
               "LOCAL_TYPE_NAME",
               "MINIMUM_SCALE",
               "MAXIMUM_SCALE",
               "SQL_DATA_TYPE",
               "SQL_DATETIME_SUB",
               "NUM_PREC_RADIX",
               "INTERNAL_PRECISION",
               "USER_DATA_TYPE"
            },
            // we add a new entry for each type we want to add
            {
                {
                    "bpchar",
                    -8,
                    65535,
                    "'",
                    "'",
                    "max. length",
                    1,
                    1,
                    3,
                    null,
                    0,
                    null,
                    "bpchar",
                    null,
                    null,
                    -9,
                    null,
                    null,
                    0,
                    0
                }
            }),
        append = Table.Combine({types, newTypes})
    in
        append;

Angi tilkoblingsstreng

Den tilkoblingsstreng for ODBC-driveren er angitt ved hjelp av det første argumentet til funksjonene Odbc.DataSource og Odbc.Query. Verdien kan være tekst eller en M-post. Når du bruker posten, blir hvert felt i posten en egenskap i tilkoblingsstreng. Alle tilkoblingsstreng krever et Driver felt (eller DSN felt hvis du krever at brukere forhåndskonfigurerer et DSN på systemnivå). Legitimasjonsrelaterte egenskaper angis separat. Andre egenskaper er driverspesifikke.

Kodesnutten nedenfor viser definisjonen av en ny datakildefunksjon, oppretting av ConnectionString posten og aktivering av funksjonen Odbc.DataSource .

[DataSource.Kind="SqlODBC", Publish="SqlODBC.Publish"]
shared SqlODBC.Contents = (server as text) =>
    let
        ConnectionString = [
            Driver = "SQL Server Native Client 11.0",
            Server = server,
            MultiSubnetFailover = "Yes",
            ApplicationIntent = "ReadOnly",
            APP = "PowerBICustomConnector"
        ],
        OdbcDatasource = Odbc.DataSource(ConnectionString)
    in
        OdbcDatasource;

Neste trinn