Szkolenie
Moduł
Database handling in Power Automate for desktop - Training
Learn about the database actions in Power Automate for desktop.
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
Funkcja Odbc.DataSource przyjmuje dwa parametry — connectionString
dla sterownika i options
rekord, który umożliwia zastąpienie różnych zachowań sterowników. Za pomocą rekordu opcji można zastąpić możliwości i inne informacje zgłaszane przez sterownik, kontrolować zachowanie nawigatora i wpływać na zapytania SQL generowane przez aparat M.
Pola obsługiwanych opcji dzielą się na dwie kategorie — te, które są publiczne i zawsze dostępne, oraz te, które są dostępne tylko w kontekście rozszerzalności.
W poniższej tabeli opisano pola publiczne w rekordzie opcji.
Pole | opis |
---|---|
CommandTimeout |
Wartość czasu trwania, która kontroluje, jak długo zapytanie po stronie serwera może być uruchamiane przed jego anulowaniem. Ustawienie domyślne: 10 minut |
ConnectionTimeout |
Wartość czasu trwania, która kontroluje czas oczekiwania przed porzuceniem próby nawiązania połączenia z serwerem. Ustawienie domyślne: 15 sekund |
CreateNavigationProperties |
Wartość logiczna określająca, czy generować właściwości nawigacji w zwracanych tabelach. Właściwości nawigacji są oparte na relacjach kluczy obcych zgłoszonych przez sterownik. Te właściwości są wyświetlane jako "wirtualne" kolumny, które można rozwinąć w edytorze zapytań, tworząc odpowiednie sprzężenia. Jeśli obliczanie zależności klucza obcego jest kosztowną operacją dla sterownika, możesz ustawić tę wartość na false. Domyślnie: true. |
HierarchicalNavigation |
Wartość logiczna określająca, czy wyświetlać tabele pogrupowane według ich nazw schematów. Po ustawieniu wartości false tabele są wyświetlane na płaskiej liście w każdej bazie danych. Domyślna: false |
SqlCompatibleWindowsAuth |
Wartość logiczna określająca, czy program SQL Server ma być zgodny parametry połączenia podczas korzystania z uwierzytelniania systemu Windows —Trusted_Connection=Yes .Jeśli sterownik obsługuje uwierzytelnianie systemu Windows, ale wymaga dodatkowych lub alternatywnych ustawień w parametry połączenia, należy ustawić tę wartość na false i użyć pola rekordu CredentialConnectionString opcji opisanego w następnej tabeli.Domyślnie: true. |
W poniższej tabeli opisano pola rekordów opcji, które są dostępne tylko za pośrednictwem rozszerzalności. Pola, które nie są prostymi wartościami literału, są opisane w kolejnych sekcjach.
Pole | opis |
---|---|
AstVisitor |
Rekord zawierający co najmniej jedno przesłonięcia kontrolujące generowanie zapytań SQL. Najczęstszym użyciem tego pola jest zapewnienie logiki generowania klauzuli LIMIT/OFFSET dla sterowników, które nie obsługują top. Pola obejmują Constant i LimitClause .Więcej informacji: Zastępowanie usługi AstVisitor |
CancelQueryExplicitly |
Wartość logiczna, która nakazuje aparatowi M jawne anulowanie wszystkich uruchomionych wywołań za pośrednictwem sterownika ODBC przed zakończeniem połączenia z serwerem ODBC. To pole jest przydatne w sytuacjach, w których wykonywanie zapytań jest zarządzane niezależnie od połączeń sieciowych z serwerem, na przykład w niektórych wdrożeniach platformy Spark. W większości przypadków ta wartość nie musi być ustawiana, ponieważ zapytanie na serwerze jest anulowane po zakończeniu połączenia sieciowego z serwerem. Domyślna: false |
ClientConnectionPooling |
Wartość logiczna, która umożliwia buforowanie połączeń po stronie klienta dla sterownika ODBC. Większość sterowników będzie chciała ustawić tę wartość na true. Domyślna: false |
CredentialConnectionString |
Wartość tekstowa lub rekord używana do określania właściwości parametry połączenia związanych z poświadczeniami. |
HideNativeQuery |
Wartość logiczna określająca, czy łącznik wyświetla wygenerowane instrukcje SQL w środowisku użytkownika dodatku Power Query. Należy ustawić wartość true tylko wtedy, gdy źródło danych zaplecza natywnie obsługuje program SQL-92. Domyślna: false |
ImplicitTypeConversions |
Wartość tabeli zawierająca niejawne konwersje typów obsługiwane przez sterownik lub serwer zaplecza. Wartości w tej tabeli są dodawane do konwersji zgłoszonych przez sam sterownik. To pole jest zwykle używane z polem SQLGetTypeInfo podczas zastępowania informacji o typie danych zgłoszonych przez sterownik. |
OnError |
Funkcja obsługi błędów, która odbiera errorRecord parametr typu record .Typowe zastosowania tej funkcji obejmują obsługę błędów połączeń SSL, podanie linku pobierania, jeśli sterownik nie zostanie znaleziony w systemie i zgłaszanie błędów uwierzytelniania. |
SoftNumbers |
Umożliwia aparatowi języka M wybranie zgodnego typu danych, gdy konwersja między dwoma określonymi typami liczbowymi nie jest zadeklarowana jako obsługiwana w funkcjach SQL_CONVERT_*. Domyślna: false |
SqlCapabilities |
Rekord zapewniający różne przesłonięcia możliwości sterownika oraz sposób określania możliwości, które nie są wyrażane za pośrednictwem odBC 3.8. Więcej informacji: Zastępowanie elementów SqlCapabilities |
SQLColumns |
Funkcja, która umożliwia modyfikowanie metadanych kolumn zwracanych przez SQLColumns funkcję.Więcej informacji: Zastępowanie kolumn SQLColumns |
SQLGetFunctions |
Rekord, który umożliwia zastąpienie wartości zwracanych przez wywołania metody SQLGetFunctions .Typowym zastosowaniem tego pola jest wyłączenie użycia powiązania parametrów lub określenie, że wygenerowane zapytania powinny używać funkcji CAST, a nie KONWERTUJ. Więcej informacji: Zastępowanie funkcji SQLGetFunctions |
SQLGetInfo |
Rekord, który umożliwia zastąpienie wartości zwracanych przez wywołania metody SQLGetInfo .Więcej informacji: Zastępowanie polecenia SQLGetInfo |
SQLGetTypeInfo |
Tabela lub funkcja zwracająca tabelę, która zastępuje informacje o typie zwracane przez SQLGetTypeInfo .Gdy wartość jest ustawiona na tabelę, wartość całkowicie zastępuje informacje o typie zgłaszane przez sterownik. SQLGetTypeInfo nie zostanie wywołana.Gdy wartość jest ustawiona na funkcję, funkcja otrzyma wynik oryginalnego wywołania metody SQLGetTypeInfo , co umożliwi zmodyfikowanie tabeli.To pole jest zwykle używane w przypadku niezgodności między typami danych zgłoszonymi przez SQLGetTypeInfo i SQLColumns .Więcej informacji: Zastępowanie elementu SQLGetTypeInfo |
SQLTables |
Funkcja, która umożliwia modyfikowanie metadanych tabeli zwracanych przez wywołanie metody SQLTables . |
TolerateConcatOverflow |
Umożliwia łączenie wartości tekstowych, nawet jeśli wynik może zostać obcięty w zakresie dostępnego typu. Na przykład w przypadku łączenia pola VARCHAR(4000) z polem VARCHAR(4000) w systemie obsługującym maksymalizowanie rozmiaru VARCHAR 4000 i bez typu CLOB łączenie jest składane, mimo że wynik może zostać obcięty. Domyślna: false |
UseEmbeddedDriver |
(użycie wewnętrzne): wartość logiczna określająca, czy sterownik ODBC powinien zostać załadowany z katalogu lokalnego (przy użyciu nowych funkcji zdefiniowanych w specyfikacji ODBC 4.0). Ta wartość jest zazwyczaj ustawiana tylko przez łączniki utworzone przez firmę Microsoft, które są dostarczane za pomocą dodatku Power Query. W przypadku ustawienia wartości false system menedżer sterowników ODBC jest używany do lokalizowania i ładowania sterownika. Większość łączników nie powinna wymagać ustawienia tego pola. Domyślna: false |
Pole AstVisitor
jest ustawiane za pomocą rekordu opcji Odbc.DataSource . Służy do modyfikowania instrukcji SQL generowanych dla określonych scenariuszy zapytań.
Uwaga
Sterowniki obsługujące klauzule LIMIT i OFFSET (a nie TOP) będą chciały podać LimitClause
przesłonięcia dla elementu AstVisitor
.
Podanie zastąpienia tej wartości zostało przestarzałe i może zostać usunięte z przyszłych implementacji.
To pole jest funkcją, która odbiera dwa Int64.Type
argumenty (skip
, take
), i zwraca rekord z dwoma polami tekstowymi (Text
, Location
).
LimitClause = (skip as nullable number, take as number) as record => ...
Parametr skip
jest liczbą wierszy do pominięcia (czyli argumentem przesunięcia). Jeśli przesunięcie nie zostanie określone, wartość pominięcia będzie mieć wartość null. Jeśli sterownik obsługuje limit, ale nie obsługuje funkcji OFFSET, LimitClause
funkcja powinna zwrócić nieimplementowany błąd (...) po przekroczeniu limitu 0.
Parametr take
jest liczbą wierszy do wykonania (czyli argumentem limitu).
Pole Text
wyniku zawiera tekst SQL, który ma zostać dodany do wygenerowanego zapytania.
Pole Location
określa, gdzie należy wstawić klauzulę. W poniższej tabeli opisano obsługiwane wartości.
Wartość | Opis | Przykład |
---|---|---|
AfterQuerySpecification |
Klauzula LIMIT jest umieszczana na końcu wygenerowanego kodu SQL. Jest to najczęściej obsługiwana składnia LIMIT. |
SELECT a, b, c TABELA FROM > GDZIE 10 LIMIT 5 |
BeforeQuerySpecification |
Klauzula LIMIT jest umieszczana przed wygenerowaną instrukcją SQL. | OGRANICZ 5 WIERSZY SELECT a, b, c TABELA FROM > GDZIE 10 |
AfterSelect |
Limit przechodzi po instrukcji SELECT i po wszelkich modyfikatorach (takich jak DISTINCT). | SELECT DISTINCT LIMIT 5 a, b, c TABELA FROM > GDZIE 10 |
AfterSelectBeforeModifiers |
Limit przechodzi po instrukcji SELECT, ale przed wszelkimi modyfikatorami (takimi jak DISTINCT). | SELECT LIMIT 5 DISTINCT a, b, c TABELA FROM > GDZIE 10 |
Poniższy fragment kodu zawiera implementację LimitClause dla sterownika, który oczekuje klauzuli LIMIT z opcjonalnym przesunięciem w następującym formacie: [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"
]
Poniższy fragment kodu zawiera implementację sterownika obsługującego LimitClause
limit, ale nie 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"
]
Pole | Szczegóły |
---|---|
FractionalSecondsScale |
Wartość liczbowa z zakresu od 1 do 7, która wskazuje liczbę miejsc dziesiętnych obsługiwanych dla wartości milisekundowych. Ta wartość powinna być ustawiana przez łączniki, które chcą włączyć składanie zapytań w porównaniu z wartościami daty/godziny. Ustawienie domyślne: null |
PrepareStatements |
Wartość logiczna wskazująca, że instrukcje powinny być przygotowane przy użyciu narzędzia SQLPrepare. Domyślna: false |
SupportsTop |
Wartość logiczna wskazująca, że sterownik obsługuje klauzulę TOP, aby ograniczyć liczbę zwracanych wierszy. Domyślna: false |
StringLiteralEscapeCharacters |
Lista wartości tekstowych określających znaki do użycia podczas ucieczki literałów ciągu i wyrażeń LIKE. Przykład: {""} Ustawienie domyślne: null |
SupportsDerivedTable |
Wartość logiczna wskazująca, że sterownik obsługuje tabele pochodne (wybór podrzędny). Przyjmuje się, że ta wartość ma wartość true dla sterowników, które ustawiają ich poziom zgodności na SQL_SC_SQL92_FULL (zgłoszone przez sterownik lub zastąpione ustawieniem Sql92Conformance. Dla wszystkich innych poziomów zgodności ta wartość jest domyślnie ustawiona na false. Jeśli sterownik nie zgłasza poziomu zgodności SQL_SC_SQL92_FULL, ale obsługuje tabele pochodne, ustaw tę wartość na true. Obsługa tabel pochodnych jest wymagana w przypadku wielu scenariuszy trybu DirectQuery. |
SupportsNumericLiterals |
Wartość logiczna wskazująca, czy wygenerowany kod SQL powinien zawierać wartości literałów liczbowych. W przypadku ustawienia wartości false wartości liczbowe są zawsze określane przy użyciu powiązania parametrów. Domyślna: false |
SupportsStringLiterals |
Wartość logiczna wskazująca, czy wygenerowany język SQL powinien zawierać wartości literałów ciągu. W przypadku ustawienia wartości false wartości ciągu są zawsze określane przy użyciu powiązania parametrów. Domyślna: false |
SupportsOdbcDateLiterals |
Wartość logiczna wskazująca, czy wygenerowany program SQL powinien zawierać wartości literałów daty. W przypadku ustawienia wartości false wartości daty są zawsze określane przy użyciu powiązania parametrów. Domyślna: false |
SupportsOdbcTimeLiterals |
Wartość logiczna wskazująca, czy wygenerowany program SQL powinien zawierać wartości literałów czasu. W przypadku ustawienia wartości false wartości czasu są zawsze określane przy użyciu powiązania parametrów. Domyślna: false |
SupportsOdbcTimestampLiterals |
Wartość logiczna wskazująca, czy wygenerowany program SQL powinien zawierać wartości literałów sygnatury czasowej. W przypadku ustawienia wartości false wartości znacznika czasu są zawsze określane przy użyciu powiązania parametrów. Domyślna: false |
SQLColumns
to procedura obsługi funkcji, która odbiera wyniki wywołania ODBC do funkcji SQLColumns. Parametr źródłowy zawiera tabelę z informacjami o typie danych. To zastąpienie jest zwykle używane do naprawiania niezgodności typów danych między wywołaniami do SQLGetTypeInfo
i SQLColumns
.
Aby uzyskać szczegółowe informacje na temat formatu parametru tabeli źródłowej, przejdź do funkcji SQLColumns.
To pole służy do zastępowania SQLFunctions
wartości zwracanych przez sterownik ODBC. Zawiera rekord, którego nazwy pól są równe FunctionId
stałe zdefiniowane dla funkcji ODBC SQLGetFunctions . Stałe liczbowe dla każdego z tych pól można znaleźć w specyfikacji ODBC.
Pole | Szczegóły |
---|---|
SQL_CONVERT_FUNCTIONS |
Wskazuje, które funkcje są obsługiwane podczas konwersji typów. Domyślnie aparat M próbuje użyć funkcji CONVERT. Sterowniki, które preferują użycie funkcji CAST, mogą zastąpić tę wartość, aby zgłosić, że obsługiwana jest tylko SQL_FN_CVT_CAST (wartość liczbowa 0x2). |
SQL_API_SQLBINDCOL |
Wartość logiczna (true/false), która wskazuje, czy aparat mashupu powinien używać interfejsu API SQLBindCol podczas pobierania danych. W przypadku ustawienia wartości false zamiast tego jest używana wartość SQLGetData . Domyślna: false |
Poniższy fragment kodu zawiera przykład jawnego poinformowania aparatu M o użyciu funkcji CAST, a nie KONWERTUJ.
SQLGetFunctions = [
SQL_CONVERT_FUNCTIONS = 0x2 /* SQL_FN_CVT_CAST */
]
To pole służy do zastępowania SQLGetInfo
wartości zwracanych przez sterownik ODBC. Zawiera rekord, którego pola są nazwami równymi InfoType
stałymi zdefiniowanymi dla funkcji ODBC SQLGetInfo . Stałe liczbowe dla każdego z tych pól można znaleźć w specyfikacji ODBC. Pełną listę zaznaczonych InfoTypes
elementów można znaleźć w plikach śledzenia aparatu mashup.
Poniższa tabela zawiera często zastępowane SQLGetInfo
właściwości:
Pole | Szczegóły |
---|---|
SQL_SQL_CONFORMANCE |
Wartość całkowita wskazująca poziom sql-92 obsługiwany przez sterownik: (1) SQL_SC_SQL92_ENTRY: zgodność z programem SQL-92 na poziomie wejścia. (2) SQL_SC_FIPS127_2_TRANSITIONAL: zgodność ze standardem FIPS 127-2 na poziomie przejściowym. (4) SQL_SC_ SQL92_INTERMEDIATE" Zgodne z programem SQL-92 na poziomie pośrednim. (8) SQL_SC_SQL92_FULL: zgodność z pełnym poziomem SQL-92. W scenariuszach dodatku Power Query łącznik jest używany w trybie tylko do odczytu. Większość sterowników chce zgłosić SQL_SC_SQL92_FULL poziom zgodności i zastąpić określone zachowanie generowania sql przy użyciu SQLGetInfo właściwości i SQLGetFunctions . |
SQL_SQL92_PREDICATES |
Maska bitowa wyliczającą predykaty obsługiwane w instrukcji SELECT zgodnie z definicją w języku SQL-92. Przejdź do SQL_SP_* stałych w specyfikacji ODBC. |
SQL_AGGREGATE_FUNCTIONS |
Maska bitów wylicza obsługę funkcji agregacji. SQL_AF_ALL SQL_AF_AVG SQL_AF_COUNT SQL_AF_DISTINCT SQL_AF_MAX SQL_AF_MIN SQL_AF_SUM Przejdź do SQL_AF_* stałych w specyfikacji ODBC. |
SQL_GROUP_BY |
Wartość całkowita określająca relację między kolumnami w klauzuli GROUP BY i niegregowanymi kolumnami na liście wyboru: SQL_GB_COLLATE: Klauzula COLLATE można określić na końcu każdej kolumny grupowania. SQL_GB_NOT_SUPPORTED: klauzule GROUP BY nie są obsługiwane. SQL_GB_GROUP_BY_EQUALS_SELECT: klauzula GROUP BY musi zawierać wszystkie niegregowane kolumny na liście wyboru. Nie może zawierać żadnych innych kolumn. Na przykład WYBIERZ POZYCJĘ DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT (MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT(DEPT). SQL_GB_GROUP_BY_CONTAINS_SELECT: Klauzula GROUP BY musi zawierać wszystkie niegregowane kolumny na liście wyboru. Może zawierać kolumny, które nie znajdują się na liście wyboru. Na przykład WYBIERZ POZYCJĘ DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT, AGE. SQL_GB_NO_RELATION: kolumny w klauzuli GROUP BY i lista wyboru nie są powiązane. Znaczenie niegrupowanych, niegregowanych kolumn na liście wyboru jest zależne od źródła danych. Na przykład WYBIERZ POZYCJĘ DEPT, SALARY FROM EMPLOYEE GROUP BY DEPT, AGE., SELECT DEPT, SALARY FROM EMPLOYEE GROUP BY DEPT( DEPT, AGE). Przejdź do SQL_GB_* stałych w specyfikacji ODBC. |
Następująca funkcja pomocnika może służyć do tworzenia wartości maski bitów na podstawie listy wartości całkowitych:
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
można określić na dwa sposoby:
table
wartość zawierająca te same informacje o typie co wywołanie ODBC do SQLGetTypeInfo
metody .SQLGetTypeInfo
. Implementacja funkcji może modyfikować lub dodawać do tej tabeli.Pierwsze podejście służy do całkowitego zastępowania wartości zwracanych przez sterownik ODBC. Drugie podejście jest używane, jeśli chcesz dodać lub zmodyfikować te wartości.
Aby uzyskać szczegółowe informacje o formacie parametru tabeli typów i oczekiwanej wartości zwracanej, przejdź do dokumentacji funkcji SQLGetTypeInfo.
Poniższy fragment kodu zawiera statyczną implementację programu 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 } }
);
Następujące fragmenty kodu dołączają bpchar
typ do istniejących typów zwracanych przez sterownik.
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;
Parametry połączenia dla sterownika ODBC jest ustawiany przy użyciu pierwszego argumentu funkcji Odbc.DataSource i Odbc.Query. Wartość może być tekstem lub rekordem M. W przypadku korzystania z rekordu każde pole w rekordzie stanie się właściwością w parametry połączenia. Wszystkie parametry połączenia wymagają Driver
pola (lub DSN
pola, jeśli użytkownicy muszą wstępnie skonfigurować nazwę DSN na poziomie systemu). Właściwości związane z poświadczeniami są ustawiane oddzielnie. Inne właściwości są specyficzne dla sterownika.
Poniższy fragment kodu przedstawia definicję nowej funkcji źródła danych, tworzenia rekordu ConnectionString
i wywołania funkcji 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;
Szkolenie
Moduł
Database handling in Power Automate for desktop - Training
Learn about the database actions in Power Automate for desktop.