Parametre for Odbc.DataSource
Funktionen Odbc.DataSource tager to parametre – a connectionString
for din driver og en options
post, der giver dig mulighed for at tilsidesætte forskellige driverfunktioner. Via indstillingsposten kan du tilsidesætte funktioner og andre oplysninger, der rapporteres af driveren, styre navigatorens funktionsmåde og påvirke de SQL-forespørgsler, der genereres af M-programmet.
De understøttede indstillinger registrerer felter i to kategorier – dem, der er offentlige og altid tilgængelige, og dem, der kun er tilgængelige i en udvidelseskontekst.
I følgende tabel beskrives de offentlige felter i indstillingsposten.
Felt | Beskrivelse |
---|---|
CommandTimeout |
En varighedsværdi, der styrer, hvor længe serverforespørgslen må køre, før den annulleres. Standard: 10 minutter |
ConnectionTimeout |
En varighedsværdi, der styrer, hvor længe der skal ventes, før et forsøg på at oprette forbindelse til serveren afbrydes. Standard: 15 sekunder |
CreateNavigationProperties |
En logisk værdi, der angiver, om der skal genereres navigationsegenskaber for de returnerede tabeller. Navigationsegenskaber er baseret på relationer for fremmede nøgler, der er rapporteret af driveren. Disse egenskaber vises som "virtuelle" kolonner, der kan udvides i forespørgselseditoren og dermed oprette den relevante joinforbindelse. Hvis beregning af afhængigheder for fremmede nøgler er en dyr handling for din driver, kan du angive denne værdi til falsk. Standard: true |
HierarchicalNavigation |
En logisk værdi, der angiver, om tabellerne skal vises grupperet efter skemanavne. Når den er angivet til falsk, vises tabeller på en flad liste under hver database. Standard: false |
SqlCompatibleWindowsAuth |
En logisk værdi, der bestemmer, om der skal oprettes en SQL Server-kompatibel forbindelsesstreng, når du bruger Windows-godkendelse –Trusted_Connection=Yes Hvis din driver understøtter Windows-godkendelse, men kræver ekstra eller alternative indstillinger i din forbindelsesstreng, skal du angive denne værdi til falsk og bruge feltet med postindstillinger CredentialConnectionString , der er beskrevet i den næste tabel.Standard: true |
I følgende tabel beskrives de postfelter med indstillinger, der kun er tilgængelige via udvidelse. Felter, der ikke er simple konstantværdier, beskrives i senere afsnit.
Felt | Beskrivelse |
---|---|
AstVisitor |
En post, der indeholder en eller flere tilsidesættelser for at styre oprettelsen af SQL-forespørgsler. Den mest almindelige brug af dette felt er at levere logik til at generere en LIMIT/OFFSET-delsætning for drivere, der ikke understøtter TOP. Felterne omfatter Constant og LimitClause .Flere oplysninger: Tilsidesættelse af AstVisitor |
CancelQueryExplicitly |
En logisk værdi, der giver M-programmet besked om eksplicit at annullere alle kørende kald via ODBC-driveren, før forbindelsen til ODBC-serveren afsluttes. Dette felt er nyttigt i situationer, hvor udførelse af forespørgsler administreres uafhængigt af netværksforbindelserne til serveren, f.eks. i nogle Spark-installationer. I de fleste tilfælde behøver denne værdi ikke at blive angivet, fordi forespørgslen på serveren annulleres, når netværksforbindelsen til serveren afbrydes. Standard: false |
ClientConnectionPooling |
En logisk værdi, der muliggør gruppering af forbindelser på klientsiden for ODBC-driveren. De fleste drivere vil angive denne værdi til sand. Standard: false |
CredentialConnectionString |
En tekst- eller postværdi, der bruges til at angive egenskaber for legitimationsoplysninger forbindelsesstreng. |
HideNativeQuery |
En logisk værdi, der styrer, om connectoren viser genererede SQL-sætninger i brugeroplevelsen i Power Query. Dette bør kun angives til sand, hvis back end-datakilden oprindeligt understøtter SQL-92. Standard: false |
ImplicitTypeConversions |
En tabelværdi, der indeholder implicitte typekonverteringer, som understøttes af driveren eller backendserveren. Værdier i denne tabel er additive til de konverteringer, der rapporteres af selve driveren. Dette felt bruges typisk sammen med feltet SQLGetTypeInfo , når datatypeoplysninger, der er rapporteret af driveren, tilsidesættes. |
OnError |
En fejlhåndteringsfunktion, der modtager en errorRecord parameter af typen record .Almindelig brug af denne funktion omfatter håndtering af SSL-forbindelsesfejl, angivelse af et downloadlink, hvis din driver ikke findes på systemet, og rapportering af godkendelsesfejl. |
SoftNumbers |
Gør det muligt for M-programmet at vælge en kompatibel datatype, når konvertering mellem to specifikke numeriske typer ikke erklæres som understøttet i SQL_CONVERT_* funktioner. Standard: false |
SqlCapabilities |
En post, der giver forskellige tilsidesættelser af driveregenskaber, og en måde at angive egenskaber, der ikke udtrykkes via ODBC 3.8. Flere oplysninger: Tilsidesættelse af SQL-funktioner |
SQLColumns |
En funktion, der giver dig mulighed for at ændre kolonnemetadata, der returneres af funktionen SQLColumns .Flere oplysninger: Tilsidesættelse af SQLColumns |
SQLGetFunctions |
En post, der giver dig mulighed for at tilsidesætte værdier, der returneres af kald til SQLGetFunctions .En almindelig brug af dette felt er at deaktivere brugen af parameterbinding eller at angive, at genererede forespørgsler skal bruge CAST i stedet for CONVERT. Flere oplysninger: Tilsidesættelse af SQLGetFunctions |
SQLGetInfo |
En post, der giver dig mulighed for at tilsidesætte værdier, der returneres af kald til SQLGetInfo .Flere oplysninger: Tilsidesættelse af SQLGetInfo |
SQLGetTypeInfo |
En tabel eller funktion, der returnerer en tabel, der tilsidesætter de typeoplysninger, der returneres af SQLGetTypeInfo .Når værdien er angivet til en tabel, erstatter værdien fuldstændigt de typeoplysninger, der rapporteres af driveren. SQLGetTypeInfo ikke bliver kaldt.Når værdien er angivet til en funktion, modtager funktionen resultatet af det oprindelige kald til SQLGetTypeInfo , så du kan ændre tabellen.Dette felt bruges typisk, når der er uoverensstemmelse mellem datatyper, der rapporteres af SQLGetTypeInfo og SQLColumns .Flere oplysninger: Tilsidesættelse af SQLGetTypeInfo |
SQLTables |
En funktion, der giver dig mulighed for at ændre de tabelmetadata, der returneres af et kald til SQLTables . |
TolerateConcatOverflow |
Gør det muligt at sammenkæde tekstværdier, selvom resultatet kan afkortes, så det passer inden for intervallet for en tilgængelig type. Når du f.eks. sammenkæder et VARCHAR(4000)-felt med et VARCHAR(4000)-felt på et system, der understøtter en maksimer VARCHAR-størrelse på 4000 og ingen CLOB-type, foldes sammenkædningen, selvom resultatet kan blive afkortet. Standard: false |
UseEmbeddedDriver |
(intern brug): En logisk værdi, der styrer, om ODBC-driveren skal indlæses fra en lokal mappe (ved hjælp af ny funktionalitet, der er defineret i ODBC 4.0-specifikationen). Denne værdi angives generelt kun af forbindelser, der er oprettet af Microsoft, og som leveres med Power Query. Når den er angivet til falsk, bruges system ODBC-driverstyringen til at finde og indlæse driveren. De fleste connectors behøver ikke at angive dette felt. Standard: false |
Feltet AstVisitor
angives via indstillingsposten Odbc.DataSource . Den bruges til at redigere SQL-sætninger, der er genereret for bestemte forespørgselsscenarier.
Bemærk
Drivere, der understøtter LIMIT- og OFFSET-delsætninger (i stedet for TOP), vil angive en LimitClause
tilsidesættelse for AstVisitor
.
Angivelse af en tilsidesættelse af denne værdi frarådes og kan fjernes fra fremtidige implementeringer.
Dette felt er en funktion, der modtager to Int64.Type
argumenter (skip
, take
), og returnerer en post med to tekstfelter (Text
, Location
).
LimitClause = (skip as nullable number, take as number) as record => ...
Parameteren skip
er det antal rækker, der skal springes over (dvs. argumentet til FORSKYDNING). Hvis der ikke er angivet en forskydning, er spring-værdien null. Hvis driveren understøtter LIMIT, men ikke understøtter OFFSET, skal funktionen LimitClause
returnere en ikke-implementeret fejl (...) når spring over er større end 0.
Parameteren take
er det antal rækker, der skal tages (dvs. argumentet til LIMIT).
Feltet Text
i resultatet indeholder den SQL-tekst, der skal føjes til den genererede forespørgsel.
Feltet Location
angiver, hvor delsætningen skal indsættes. I følgende tabel beskrives understøttede værdier.
Værdi | Beskrivelse | Eksempel |
---|---|---|
AfterQuerySpecification |
LIMIT-delsætningen placeres i slutningen af den genererede SQL. Dette er den mest understøttede LIMIT-syntaks. |
VÆLG a, b, c FRA-tabel WHERE a > 10 GRÆNSE 5 |
BeforeQuerySpecification |
LIMIT-delsætningen placeres før den genererede SQL-sætning. | BEGRÆNS 5 RÆKKER VÆLG a, b, c FRA-tabel WHERE a > 10 |
AfterSelect |
LIMIT går efter SELECT-sætningen og efter eventuelle modifikatorer (f.eks. DISTINCT). | SELECT DISTINCT LIMIT 5 a, b, c FRA-tabel WHERE a > 10 |
AfterSelectBeforeModifiers |
LIMIT går efter SELECT-sætningen, men før eventuelle modifikatorer (f.eks. DISTINCT). | SELECT LIMIT 5 DISTINCT a, b, c FRA-tabel WHERE a > 10 |
Følgende kodestykke indeholder en LimitClause-implementering for en driver, der forventer en LIMIT-delsætning 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"
]
Følgende kodestykke leverer en LimitClause
implementering for en driver, der understø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"
]
Felt | Oplysninger |
---|---|
FractionalSecondsScale |
En talværdi fra 1 til 7, der angiver det antal decimaler, der understøttes for millisekundersværdier. Denne værdi skal angives af forbindelser, der vil aktivere forespørgselsdelegering over datetime-værdier. Standard: null |
PrepareStatements |
En logisk værdi, der angiver, at sætninger skal forberedes ved hjælp af SQLPrepare. Standard: false |
SupportsTop |
En logisk værdi, der angiver, at driveren understøtter TOP-delsætningen for at begrænse antallet af returnerede rækker. Standard: false |
StringLiteralEscapeCharacters |
En liste over tekstværdier, der angiver de tegn, der skal bruges, når strengkonstanter og LIKE-udtryk undslippes. Eksempel: {""} Standard: null |
SupportsDerivedTable |
En logisk værdi, der angiver, at driveren understøtter afledte tabeller (undervalg). Denne værdi antages at være sand for drivere, der angiver deres overensstemmelsesniveau til SQL_SC_SQL92_FULL (rapporteret af driveren eller tilsidesat med indstillingen Sql92Conformance. For alle andre overensstemmelsesniveauer er denne værdi som standard false. Hvis din driver ikke rapporterer SQL_SC_SQL92_FULL overholdelsesniveau, men understøtter tabeller, der understøttes, skal du angive denne værdi til sand. Der kræves understøttende afledte tabeller til mange DirectQuery-scenarier. |
SupportsNumericLiterals |
En logisk værdi, der angiver, om den genererede SQL skal indeholde numeriske konstantværdier. Når den er angivet til falsk, angives numeriske værdier altid ved hjælp af parameterbinding. Standard: false |
SupportsStringLiterals |
En logisk værdi, der angiver, om den genererede SQL skal indeholde værdier for strengkonstantværdier. Når den er angivet til falsk, angives strengværdier altid ved hjælp af parameterbinding. Standard: false |
SupportsOdbcDateLiterals |
En logisk værdi, der angiver, om den genererede SQL skal indeholde værdier for datokonstanter. Når den er angivet til falsk, angives datoværdier altid ved hjælp af parameterbinding. Standard: false |
SupportsOdbcTimeLiterals |
En logisk værdi, der angiver, om den genererede SQL skal indeholde værdier for tidskonstanter. Når den er angivet til falsk, angives klokkeslætsværdier altid ved hjælp af parameterbinding. Standard: false |
SupportsOdbcTimestampLiterals |
En logisk værdi, der angiver, om den genererede SQL skal indeholde værdier for tidsstempelkonstanter. Når den er angivet til falsk, angives tidsstempelværdier altid ved hjælp af parameterbinding. Standard: false |
SQLColumns
er en funktionshandler, der modtager resultaterne af et ODBC-kald til SQLColumns. Kildeparameteren indeholder en tabel med oplysninger om datatypen. Denne tilsidesættelse bruges typisk til at løse uoverensstemmelser mellem datatyper mellem kald til SQLGetTypeInfo
og SQLColumns
.
Du kan finde flere oplysninger om formatet af kildetabelparameteren ved at gå til FUNKTIONEN SQLColumns.
Dette felt bruges til at tilsidesætte SQLFunctions
værdier, der returneres af en ODBC-driver. Den indeholder en post, hvis feltnavne er lig med de FunctionId
konstanter, der er defineret for funktionen ODBC SQLGetFunctions . Numeriske konstanter for hvert af disse felter findes i ODBC-specifikationen.
Felt | Oplysninger |
---|---|
SQL_CONVERT_FUNCTIONS |
Angiver, hvilke funktioner der understøttes, når der udføres typekonverteringer. M-programmet forsøger som standard at bruge funktionen CONVERT. Drivere, der foretrækker brugen af CAST, kan tilsidesætte denne værdi for at rapportere, at kun SQL_FN_CVT_CAST (numerisk værdi af 0x2) understøttes. |
SQL_API_SQLBINDCOL |
En logisk værdi (true/false), der angiver, om miksprogrammet skal bruge SQLBindCol-API'en, når der hentes data. Når den er angivet til falsk, bruges SQLGetData i stedet. Standard: false |
Følgende kodestykke indeholder et eksempel, der eksplicit fortæller M-programmet om at bruge CAST i stedet for CONVERT.
SQLGetFunctions = [
SQL_CONVERT_FUNCTIONS = 0x2 /* SQL_FN_CVT_CAST */
]
Dette felt bruges til at tilsidesætte SQLGetInfo
værdier, der returneres af en ODBC-driver. Den indeholder en post, hvis felter er navne, der svarer til de InfoType
konstanter, der er defineret for funktionen ODBC SQLGetInfo . Numeriske konstanter for hvert af disse felter findes i ODBC-specifikationen. Den komplette liste over InfoTypes
, der er kontrolleret, kan findes i miksprogrammets sporingsfiler.
Følgende tabel indeholder ofte tilsidesatde SQLGetInfo
egenskaber:
Felt | Oplysninger |
---|---|
SQL_SQL_CONFORMANCE |
En heltalsværdi, der angiver niveauet af SQL-92, som understøttes af driveren: (1) SQL_SC_SQL92_ENTRY: SQL-92-kompatibelt indgangsniveau. (2) SQL_SC_FIPS127_2_TRANSITIONAL: FIPS 127-2 over gangsniveau, der er i overensstemmelse. (4) SQL_SC_ SQL92_INTERMEDIATE" SQL-92-kompatibelt mellemniveau. (8) SQL_SC_SQL92_FULL: SQL-92-kompatibelt på fuldt niveau. I Power Query-scenarier bruges connectoren i skrivebeskyttet tilstand. De fleste drivere vil rapportere et SQL_SC_SQL92_FULL overholdelsesniveau og tilsidesætte en bestemt FUNKTIONSMÅDE for SQL-generering ved hjælp af SQLGetInfo egenskaberne og SQLGetFunctions . |
SQL_SQL92_PREDICATES |
En bitmaske, der optæller de prædikater, der understøttes i en SELECT-sætning, som defineret i SQL-92. Gå til SQL_SP_* konstanter i ODBC-specifikationen. |
SQL_AGGREGATE_FUNCTIONS |
En bitmaske, der optæller understøttelse af sammenlægningsfunktioner. 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-specifikationen. |
SQL_GROUP_BY |
En heltalsværdi, der angiver relationen mellem kolonnerne i GROUP BY-delsætningen og de ikke-aggregerede kolonner på listen vælg: SQL_GB_COLLATE: Der kan angives en COLLATE-delsætning i slutningen af hver grupperingskolonne. SQL_GB_NOT_SUPPORTED: GROUP BY-delsætninger understøttes ikke. SQL_GB_GROUP_BY_EQUALS_SELECT: GROUP BY-delsætningen skal indeholde alle ikke-aggregerede kolonner på listen vælg. Den kan ikke indeholde andre kolonner. VÆLG F.EKS. DEPT, MAX(SALARY) FRA EMPLOYEE GROUP BY DEPT. SQL_GB_GROUP_BY_CONTAINS_SELECT: GROUP BY-delsætningen skal indeholde alle ikke-aggregerede kolonner på listen vælg. Den kan indeholde kolonner, der ikke findes på listen vælg. VÆLG F.EKS. DEPT, MAX(SALARY) FRA EMPLOYEE GROUP BY DEPT, AGE. SQL_GB_NO_RELATION: Kolonnerne i GROUP BY-delsætningen og listen vælg er ikke relateret til hinanden. Betydningen af ikke-grupperede, ikke-aggregerede kolonner på listen vælg er datakildeafhængig. VÆLG F.EKS. DEPT, LØN FRA MEDARBEJDERGRUPPE EFTER DEPT, ALDER. Gå til SQL_GB_* konstanter i ODBC-specifikationen. |
Følgende hjælpefunktion kan bruges til at oprette bitmaskeværdier ud fra en liste over heltalsværdier:
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;
SQLGetTypeInfo
kan angives på to måder:
- En fast
table
værdi, der indeholder de samme typeoplysninger som et ODBC-kald tilSQLGetTypeInfo
. - En funktion, der accepterer et tabelargument og returnerer en tabel. Argumentet indeholder de oprindelige resultater af ODBC-kaldet til
SQLGetTypeInfo
. Din funktionsimplementering kan ændre eller føje til denne tabel.
Den første metode bruges til fuldstændigt at tilsidesætte de værdier, der returneres af ODBC-driveren. Den anden fremgangsmåde bruges, hvis du vil føje til eller ændre disse værdier.
Du kan finde flere oplysninger om formatet af tabelparameteren typer og den forventede returværdi ved at gå til referencen til funktionen SQLGetTypeInfo.
Følgende kodestykke leverer 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 } }
);
Følgende kodestykker føjer bpchar
typen til de eksisterende typer, der returneres af 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;
Den forbindelsesstreng til ODBC-driveren angives ved hjælp af det første argument til funktionerne Odbc.DataSource og Odbc.Query. Værdien kan være tekst eller en M-post. Når du bruger posten, bliver hvert felt i posten en egenskab i forbindelsesstreng. Alle forbindelsesstreng kræver et Driver
felt (eller DSN
felt, hvis du kræver, at brugerne forudkonfigurer et DSN på systemniveau). Egenskaber, der er relateret til legitimationsoplysninger, angives separat. Andre egenskaber er driverspecifikke.
Kodestykket nedenfor viser definitionen af en ny datakildefunktion, oprettelse af ConnectionString
posten og aktivering af funktionen 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;