Parametrar för Odbc.DataSource
Odbc.DataSource-funktionen tar två parametrar – en connectionString
för din drivrutin och en options
post som gör att du kan åsidosätta olika drivrutinsbeteenden. Genom alternativposten kan du åsidosätta funktioner och annan information som rapporterats av drivrutinen, kontrollera navigatörens beteende och påverka DE SQL-frågor som genereras av M-motorn.
Fälten för alternativposter som stöds finns i två kategorier– de som är offentliga och alltid tillgängliga, och de som endast är tillgängliga i en utökningskontext.
I följande tabell beskrivs de offentliga fälten i alternativposten.
Fält | beskrivning |
---|---|
CommandTimeout |
Ett varaktighetsvärde som styr hur länge frågan på serversidan tillåts köras innan den avbryts. Standard: 10 minuter |
ConnectionTimeout |
Ett varaktighetsvärde som styr hur länge du ska vänta innan du överger ett försök att upprätta en anslutning till servern. Standard: 15 sekunder |
CreateNavigationProperties |
Ett logiskt värde som anger om navigeringsegenskaper ska genereras i de returnerade tabellerna. Navigeringsegenskaper baseras på sekundärnyckelrelationer som rapporterats av drivrutinen. Dessa egenskaper visas som "virtuella" kolumner som kan expanderas i frågeredigeraren, vilket skapar lämplig koppling. Om beräkning av sekundärnyckelberoenden är en dyr åtgärd för drivrutinen kanske du vill ange värdet falskt. Standardvärde: "true" |
HierarchicalNavigation |
Ett logiskt värde som anger om tabellerna ska visas grupperade efter deras schemanamn. När värdet är false visas tabeller i en platt lista under varje databas. Standard: FALSKT |
SqlCompatibleWindowsAuth |
Ett logiskt värde som avgör om du vill skapa en SQL Server-kompatibel anslutningssträng när du använder Windows-autentisering –Trusted_Connection=Yes .Om drivrutinen stöder Windows-autentisering, men kräver extra eller alternativa inställningar i anslutningssträng, bör du ange värdet till false och använda fältet CredentialConnectionString alternativpost som beskrivs i nästa tabell.Standardvärde: "true" |
I följande tabell beskrivs de alternativpostfält som endast är tillgängliga via utökningsbarhet. Fält som inte är enkla literalvärden beskrivs i senare avsnitt.
Fält | beskrivning |
---|---|
AstVisitor |
En post som innehåller en eller flera åsidosättningar för att styra SQL-frågegenerering. Den vanligaste användningen av det här fältet är att tillhandahålla logik för att generera en LIMIT/OFFSET-sats för drivrutiner som inte stöder TOP. Fälten inkluderar Constant och LimitClause .Mer information: Åsidosätta AstVisitor |
CancelQueryExplicitly |
Ett logiskt värde som instruerar M-motorn att uttryckligen avbryta alla pågående anrop via ODBC-drivrutinen innan anslutningen till ODBC-servern avslutas. Det här fältet är användbart i situationer där frågekörningen hanteras oberoende av nätverksanslutningarna till servern, till exempel i vissa Spark-distributioner. I de flesta fall behöver det här värdet inte anges eftersom frågan på servern avbryts när nätverksanslutningen till servern avslutas. Standard: FALSKT |
ClientConnectionPooling |
Ett logiskt värde som möjliggör anslutningspooler på klientsidan för ODBC-drivrutinen. De flesta drivrutiner vill ange det här värdet till sant. Standard: FALSKT |
CredentialConnectionString |
Ett text- eller postvärde som används för att ange egenskaper för autentiseringsuppgifter som är relaterade till anslutningssträng. |
HideNativeQuery |
Ett logiskt värde som styr om anslutningsappen visar genererade SQL-instruktioner i Power Query-användarupplevelsen. Detta bör endast anges till sant om serverdelsdatakällan har inbyggt stöd för SQL-92. Standard: FALSKT |
ImplicitTypeConversions |
Ett tabellvärde som innehåller implicita typkonverteringar som stöds av din drivrutin eller serverdelsserver. Värden i den här tabellen är additiva till de konverteringar som rapporterats av själva drivrutinen. Det här fältet används vanligtvis med fältet SQLGetTypeInfo vid åsidosättande av datatypsinformation som rapporterats av drivrutinen. |
OnError |
En funktion för felhantering som tar emot en errorRecord parameter av typen record .Vanliga användningsområden för den här funktionen är att hantera SSL-anslutningsfel, tillhandahålla en nedladdningslänk om drivrutinen inte hittas i systemet och rapportera autentiseringsfel. |
SoftNumbers |
Tillåter att M-motorn väljer en kompatibel datatyp när konvertering mellan två specifika numeriska typer inte deklareras som stöds i funktionerna SQL_CONVERT_* . Standard: FALSKT |
SqlCapabilities |
En post som tillhandahåller olika åsidosättningar av drivrutinsfunktioner och ett sätt att ange funktioner som inte uttrycks via ODBC 3.8. Mer information: Åsidosätta SqlCapabilities |
SQLColumns |
En funktion som gör att du kan ändra kolumnmetadata som returneras av SQLColumns funktionen.Mer information: Åsidosätta SQLColumns |
SQLGetFunctions |
En post som gör att du kan åsidosätta värden som returneras av anrop till SQLGetFunctions .En vanlig användning av det här fältet är att inaktivera användningen av parameterbindning eller att ange att genererade frågor ska använda CAST i stället för KONVERTERA. Mer information: Åsidosätta SQLGetFunctions |
SQLGetInfo |
En post som gör att du kan åsidosätta värden som returneras av anrop till SQLGetInfo .Mer information: Åsidosätta SQLGetInfo |
SQLGetTypeInfo |
En tabell eller funktion som returnerar en tabell som åsidosätter den typinformation som returneras av SQLGetTypeInfo .När värdet är inställt på en tabell ersätter värdet helt den typinformation som rapporterats av drivrutinen. SQLGetTypeInfo kommer inte att anropas.När värdet är inställt på en funktion får funktionen resultatet av det ursprungliga anropet till SQLGetTypeInfo , så att du kan ändra tabellen.Det här fältet används vanligtvis när det finns ett matchningsfel mellan datatyper som rapporteras av SQLGetTypeInfo och SQLColumns .Mer information: Åsidosätta SQLGetTypeInfo |
SQLTables |
En funktion som gör att du kan ändra tabellmetadata som returneras av ett anrop till SQLTables . |
TolerateConcatOverflow |
Tillåter sammanfogning av textvärden även om resultatet kan trunkeras så att det passar inom intervallet för en tillgänglig typ. När du till exempel sammanfogar ett VARCHAR-fält (4000) med ett VARCHAR-fält (4000) i ett system som stöder en maximerad VARCHAR-storlek på 4 000 och ingen CLOB-typ, viks sammanfogningen även om resultatet kan trunkeras. Standard: FALSKT |
UseEmbeddedDriver |
(intern användning): Ett logiskt värde som styr om ODBC-drivrutinen ska läsas in från en lokal katalog (med nya funktioner som definierats i ODBC 4.0-specifikationen). Det här värdet anges vanligtvis endast av anslutningsappar som skapats av Microsoft och som levereras med Power Query. När värdet är falskt används system-ODBC-drivrutinshanteraren för att hitta och läsa in drivrutinen. De flesta anslutningsappar behöver inte ange det här fältet. Standard: FALSKT |
Fältet AstVisitor
anges via alternativposten Odbc.DataSource . Den används för att ändra SQL-instruktioner som genererats för specifika frågescenarier.
Anteckning
Drivrutiner som stöder LIMIT- och OFFSET-satser (i stället för TOP) vill ange en LimitClause
åsidosättning för AstVisitor
.
Att ange en åsidosättning för det här värdet har inaktuellt och kan tas bort från framtida implementeringar.
Det här fältet är en funktion som tar emot två Int64.Type
argument (skip
, take
) och returnerar en post med två textfält (Text
, Location
).
LimitClause = (skip as nullable number, take as number) as record => ...
Parametern skip
är antalet rader som ska hoppa över (det vill: argumentet till OFFSET). Om ingen förskjutning har angetts blir hoppa över-värdet null. Om drivrutinen stöder LIMIT, men inte stöder OFFSET, LimitClause
bör funktionen returnera ett ogenomfört fel (...) när hoppa över är större än 0.
Parametern take
är antalet rader som ska tas (d.v.s. argumentet till LIMIT).
Fältet Text
i resultatet innehåller DEN SQL-text som ska läggas till i den genererade frågan.
Fältet Location
anger var satsen ska infogas. I följande tabell beskrivs värden som stöds.
Värde | beskrivning | Exempel |
---|---|---|
AfterQuerySpecification |
LIMIT-satsen placeras i slutet av den genererade SQL-filen. Det här är den vanligaste LIMIT-syntaxen. |
SELECT a, b, c FROM-tabell WHERE a > 10 GRÄNS 5 |
BeforeQuerySpecification |
LIMIT-satsen placeras före den genererade SQL-instruktionen. | BEGRÄNSA 5 RADER SELECT a, b, c FROM-tabell WHERE a > 10 |
AfterSelect |
LIMIT går efter SELECT-instruktionen och efter eventuella modifierare (till exempel DISTINCT). | VÄLJ DISTINKT GRÄNS 5 a, b, c FROM-tabell WHERE a > 10 |
AfterSelectBeforeModifiers |
LIMIT går efter SELECT-instruktionen, men före eventuella modifierare (till exempel DISTINCT). | VÄLJ GRÄNS 5 DISTINCT a, b, c FROM-tabell WHERE a > 10 |
Följande kodfragment innehåller en LimitClause-implementering för en drivrutin som förväntar sig en LIMIT-sats, med en valfri OFFSET, i följande 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öljande kodfragment innehåller en LimitClause
implementering för en drivrutin som stöder LIMIT, men inte 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"
]
Fält | Details |
---|---|
FractionalSecondsScale |
Ett talvärde mellan 1 och 7 som anger antalet decimaler som stöds för millisekunders värden. Det här värdet ska anges av anslutningsappar som vill aktivera frågedelegering över datetime-värden. Standard: null |
PrepareStatements |
Ett logiskt värde som anger att instruktioner ska förberedas med SQLPrepare. Standard: FALSKT |
SupportsTop |
Ett logiskt värde som anger att drivrutinen stöder TOP-satsen för att begränsa antalet returnerade rader. Standard: FALSKT |
StringLiteralEscapeCharacters |
En lista med textvärden som anger vilka tecken som ska användas när strängliteraler och LIKE-uttryck ska undvikas. Exempel: {""} Standard: null |
SupportsDerivedTable |
Ett logiskt värde som anger att drivrutinen stöder härledda tabeller (underval). Det här värdet antas vara sant för drivrutiner som anger sin efterlevnadsnivå till SQL_SC_SQL92_FULL (rapporteras av drivrutinen eller åsidosätts med inställningen Sql92Conformance. För alla andra överensstämmelsenivåer är det här värdet som standard falskt. Om drivrutinen inte rapporterar SQL_SC_SQL92_FULL efterlevnadsnivå, men stöder härledda tabeller, anger du värdet till sant. Stöd för härledda tabeller krävs för många DirectQuery-scenarier. |
SupportsNumericLiterals |
Ett logiskt värde som anger om den genererade SQL-filen ska innehålla numeriska literalvärden. När värdet är falskt anges alltid numeriska värden med hjälp av parameterbindning. Standard: FALSKT |
SupportsStringLiterals |
Ett logiskt värde som anger om den genererade SQL-filen ska innehålla strängliteralvärden. När värdet är falskt anges alltid strängvärden med hjälp av parameterbindning. Standard: FALSKT |
SupportsOdbcDateLiterals |
Ett logiskt värde som anger om den genererade SQL-filen ska innehålla datumliteralvärden. När värdet är falskt anges alltid datumvärden med hjälp av parameterbindning. Standard: FALSKT |
SupportsOdbcTimeLiterals |
Ett logiskt värde som anger om den genererade SQL-filen ska innehålla tidsliteralvärden. När värdet är falskt anges alltid tidsvärden med hjälp av parameterbindning. Standard: FALSKT |
SupportsOdbcTimestampLiterals |
Ett logiskt värde som anger om den genererade SQL:en ska innehålla tidsstämpelliteraler. När värdet är falskt anges alltid tidsstämpelvärden med hjälp av parameterbindning. Standard: FALSKT |
SQLColumns
är en funktionshanterare som tar emot resultatet av ett ODBC-anrop till SQLColumns. Källparametern innehåller en tabell med information om datatypen. Den här åsidosättningen används vanligtvis för att åtgärda matchningar av datatyp mellan anrop till SQLGetTypeInfo
och SQLColumns
.
Mer information om formatet för källtabellparametern finns i FUNKTIONEN SQLColumns.
Det här fältet används för att åsidosätta SQLFunctions
värden som returneras av en ODBC-drivrutin. Den innehåller en post vars fältnamn är lika med konstanterna FunctionId
som definierats för funktionen ODBC SQLGetFunctions . Numeriska konstanter för vart och ett av dessa fält finns i ODBC-specifikationen.
Fält | Details |
---|---|
SQL_CONVERT_FUNCTIONS |
Anger vilka funktioner som stöds när du gör typkonverteringar. Som standard försöker M-motorn använda funktionen CONVERT. Drivrutiner som föredrar att använda CAST kan åsidosätta det här värdet för att rapportera att endast SQL_FN_CVT_CAST (numeriskt värde för 0x2) stöds. |
SQL_API_SQLBINDCOL |
Ett logiskt värde (sant/falskt) som anger om kombinationsmotorn ska använda SQLBindCol-API:et när data hämtas. När värdet är falskt används SQLGetData i stället. Standard: FALSKT |
Följande kodfragment innehåller ett exempel som uttryckligen talar om för M-motorn att använda CAST i stället för KONVERTERA.
SQLGetFunctions = [
SQL_CONVERT_FUNCTIONS = 0x2 /* SQL_FN_CVT_CAST */
]
Det här fältet används för att åsidosätta SQLGetInfo
värden som returneras av en ODBC-drivrutin. Den innehåller en post vars fält är namn som är lika med konstanterna InfoType
som definierats för funktionen ODBC SQLGetInfo . Numeriska konstanter för vart och ett av dessa fält finns i ODBC-specifikationen. Den fullständiga listan över InfoTypes
som är markerad finns i kombinationsmotorns spårningsfiler.
Följande tabell innehåller ofta åsidosatta SQLGetInfo
egenskaper:
Fält | Details |
---|---|
SQL_SQL_CONFORMANCE |
Ett heltalsvärde som anger nivån för SQL-92 som stöds av drivrutinen: (1) SQL_SC_SQL92_ENTRY: SQL-92-kompatibel på startnivå. (2) SQL_SC_FIPS127_2_TRANSITIONAL: FIPS 127-2 övergångsnivå är kompatibel. (4) SQL_SC_ SQL92_INTERMEDIATE" SQL-92-kompatibel på mellannivå. (8) SQL_SC_SQL92_FULL: Sql-92-kompatibel på fullständig nivå. I Power Query-scenarier används anslutningsappen i skrivskyddat läge. De flesta drivrutiner vill rapportera en SQL_SC_SQL92_FULL efterlevnadsnivå och åsidosätta specifika SQL-generationsbeteenden med hjälp av SQLGetInfo egenskaperna och SQLGetFunctions . |
SQL_SQL92_PREDICATES |
En bitmask som räknar upp predikaten som stöds i en SELECT-instruktion enligt definitionen i SQL-92. Gå till SQL_SP_* konstanter i ODBC-specifikationen. |
SQL_AGGREGATE_FUNCTIONS |
Ett bitmaskuppräkningsstöd för aggregeringsfunktioner. SQL_AF_ALL SQL_AF_AVG SQL_AF_COUNT SQL_AF_DISTINCT SQL_AF_MAX SQL_AF_MIN SQL_AF_SUM Gå till SQL_AF_* konstanter i ODBC-specifikationen. |
SQL_GROUP_BY |
Ett heltalsvärde som anger relationen mellan kolumnerna i GROUP BY-satsen och de icke-aggregerade kolumnerna i urvalslistan: SQL_GB_COLLATE: En COLLATE-sats kan anges i slutet av varje grupperingskolumn. SQL_GB_NOT_SUPPORTED: GROUP BY-satser stöds inte. SQL_GB_GROUP_BY_EQUALS_SELECT: GROUP BY-satsen måste innehålla alla icke-aggregerade kolumner i urvalslistan. Den får inte innehålla några andra kolumner. Till exempel SELECT DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT. SQL_GB_GROUP_BY_CONTAINS_SELECT: GROUP BY-satsen måste innehålla alla icke-aggregerade kolumner i urvalslistan. Den kan innehålla kolumner som inte finns i urvalslistan. Till exempel SELECT DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT, AGE. SQL_GB_NO_RELATION: Kolumnerna i GROUP BY-satsen och urvalslistan är inte relaterade. Innebörden av icke-grupperade, icke-aggregerade kolumner i urvalslistan är datakällaberoende. Till exempel SELECT DEPT, SALARY FROM EMPLOYEE GROUP BY DEPT, AGE. Gå till SQL_GB_* konstanter i ODBC-specifikationen. |
Följande hjälpfunktion kan användas för att skapa bitmaskvärden från en lista med heltalsvärden:
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 anges på två sätt:
- Ett fast
table
värde som innehåller samma typinformation som ett ODBC-anrop tillSQLGetTypeInfo
. - En funktion som accepterar ett tabellargument och returnerar en tabell. Argumentet innehåller det ursprungliga resultatet av ODBC-anropet till
SQLGetTypeInfo
. Funktionsimplementeringen kan ändra eller lägga till i den här tabellen.
Den första metoden används för att helt åsidosätta de värden som returneras av ODBC-drivrutinen. Den andra metoden används om du vill lägga till eller ändra dessa värden.
Mer information om formatet för tabellparametern typer och förväntat returvärde finns i sqlGetTypeInfo-funktionsreferensen.
Följande kodfragment innehåller en statisk implementering för 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öljande kodfragment lägger till bpchar
typen i de befintliga typer som returneras av drivrutinen.
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;
Anslutningssträng för ODBC-drivrutinen anges med hjälp av det första argumentet till funktionerna Odbc.DataSource och Odbc.Query. Värdet kan vara text eller en M-post. När du använder posten blir varje fält i posten en egenskap i anslutningssträng. Alla anslutningssträng kräver ett Driver
fält (eller DSN
fält om du kräver att användarna förkonfigurerar ett DSN på systemnivå). Autentiseringsrelaterade egenskaper anges separat. Andra egenskaper är drivrutinsspecifika.
Kodfragmentet nedan visar definitionen av en ny datakällfunktion, skapande av ConnectionString
posten och anrop av 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;