İngilizce dilinde oku

Aracılığıyla paylaş


Odbc.DataSource parametreleri

Odbc.DataSource işlevi iki parametre alır: sürücünüz için bir connectionString parametre ve çeşitli sürücü davranışlarını geçersiz kılmanızı sağlayan bir options kayıt. Seçenekler kaydı aracılığıyla sürücü tarafından bildirilen özellikleri ve diğer bilgileri geçersiz kılabilir, gezgin davranışını denetleyebilir ve M altyapısı tarafından oluşturulan SQL sorgularını etkileyebilirsiniz.

Desteklenen seçenekler kayıt alanları iki kategoriye ayrılır: ortak ve her zaman kullanılabilir olanlar ve yalnızca genişletilebilirlik bağlamında kullanılabilir olanlar.

Aşağıdaki tabloda, seçenekler kaydındaki genel alanlar açıklanmaktadır.

Alan Açıklama
CommandTimeout Sunucu tarafı sorgusunun iptal edilmeden önce ne kadar süreyle çalışmasına izin verildiğini denetleen bir süre değeri.

Varsayılan: 10 dakika
ConnectionTimeout Sunucuya bağlantı kurma denemesini bırakmadan önce ne kadar beklendiğini denetleen bir süre değeri.

Varsayılan: 15 saniye
CreateNavigationProperties Döndürülen tablolarda gezinti özellikleri oluşturulup oluşturulmayacağını ayarlayan mantıksal bir değer. Gezinti özellikleri, sürücü tarafından bildirilen yabancı anahtar ilişkilerini temel alır. Bu özellikler sorgu düzenleyicisinde genişletilebilen "sanal" sütunlar olarak görünür ve uygun birleştirmeyi oluşturur.

Dış anahtar bağımlılıklarını hesaplamak sürücünüz için pahalı bir işlemse, bu değeri false olarak ayarlamak isteyebilirsiniz.

Varsayılan: doğru
HierarchicalNavigation Tabloların şema adlarına göre gruplandırılmış olarak görüntülenip görüntülenmeyeceğini ayarlayan mantıksal değer. False olarak ayarlandığında, tablolar her veritabanının altında düz bir listede görüntülenir.

Varsayılan: yanlış
SqlCompatibleWindowsAuth Windows Kimlik Doğrulaması kullanılırken SQL Server uyumlu bir bağlantı dizesi üretilip üretmeyeceğini belirleyen mantıksal bir değerdirTrusted_Connection=Yes.

Sürücünüz Windows Kimlik Doğrulaması'nı destekliyorsa ancak bağlantı dizesi ek veya alternatif ayarlar gerektiriyorsa, bu değeri false olarak ayarlamanız ve sonraki tabloda açıklanan seçenekler kaydı alanını kullanmanız CredentialConnectionString gerekir.

Varsayılan: doğru

Aşağıdaki tabloda, yalnızca genişletilebilirlik aracılığıyla kullanılabilen seçenekler kayıt alanları açıklanmaktadır. Basit değişmez değer olmayan alanlar sonraki bölümlerde açıklanmıştır.

Alan Açıklama
AstVisitor SQL sorgu oluşturmayı denetlemek için bir veya daha fazla geçersiz kılma içeren kayıt. Bu alanın en yaygın kullanımı, TOP'ı desteklemeyen sürücüler için LIMIT/OFFSET yan tümcesi oluşturma mantığı sağlamaktır.

Alanlar arasında ve LimitClausebulunurConstant.

Daha fazla bilgi: AstVisitor'ı geçersiz kılma
CancelQueryExplicitly ODBC sunucusuna bağlantıyı sonlandırmadan önce M altyapısına ODBC sürücüsü aracılığıyla çalışan tüm çağrıları açıkça iptal etmelerini belirten mantıksal değer.

Bu alan, sorgu yürütmenin sunucuya ağ bağlantılarından bağımsız olarak yönetildiği durumlarda (örneğin bazı Spark dağıtımlarında) kullanışlıdır. Çoğu durumda, sunucuya ağ bağlantısı sonlandırıldığında sunucudaki sorgu iptal edildiğinden bu değerin ayarlanması gerekmez.

Varsayılan: yanlış
ClientConnectionPooling ODBC sürücüsü için istemci tarafı bağlantı havuzu oluşturmayı etkinleştiren mantıksal değer. Sürücülerin çoğu bu değeri true olarak ayarlamak isteyecektir.

Varsayılan: yanlış
CredentialConnectionString Kimlik bilgileriyle ilgili bağlantı dizesi özelliklerini belirtmek için kullanılan metin veya kayıt değeri.
HideNativeQuery Bağlayıcının Power Query kullanıcı deneyiminde oluşturulan SQL deyimlerini gösterip göstermeyeceğini denetleyen mantıksal değer. Bu, yalnızca arka uç veri kaynağı SQL-92'yi yerel olarak destekliyorsa true olarak ayarlanmalıdır.

Varsayılan: yanlış
ImplicitTypeConversions Sürücünüz veya arka uç sunucunuz tarafından desteklenen örtük tür dönüştürmelerini içeren bir tablo değeri. Bu tablodaki değerler, sürücünün kendisi tarafından bildirilen dönüştürmelere eklenir.

Bu alan genellikle sürücü tarafından bildirilen veri türü bilgileri geçersiz kılınırken alanıyla birlikte SQLGetTypeInfo kullanılır.
OnError türünde recordbir parametre alan hata errorRecord işleme işlevi.

Bu işlevin yaygın kullanım alanları ARASıNDA SSL bağlantı hatalarını işleme, sürücünüz sistemde bulunamazsa indirme bağlantısı sağlama ve kimlik doğrulama hatalarını raporlama yer alır.
SoftNumbers SQL_CONVERT_* özelliklerinde desteklenen iki sayısal tür arasında dönüştürme bildirildiğinde M altyapısının uyumlu bir veri türü seçmesine izin verir.

Varsayılan: yanlış
SqlCapabilities Sürücü özelliklerinin çeşitli geçersiz kılmalarını sağlayan bir kayıt ve ODBC 3.8 aracılığıyla ifade etmeyen özellikleri belirtmenin bir yolu.

Daha fazla bilgi: SqlCapabilities'i geçersiz kılma
SQLColumns İşlev tarafından SQLColumns döndürülen sütun meta verilerini değiştirmenize olanak tanıyan bir işlev.

Daha fazla bilgi: SQLColumns geçersiz kılma
SQLGetFunctions çağrısı SQLGetFunctionstarafından döndürülen değerleri geçersiz kılmanıza olanak tanıyan bir kayıt.

Bu alanın yaygın kullanım alanlarından biri parametre bağlamasının kullanımını devre dışı bırakmak veya oluşturulan sorguların ÇEVİr yerine CAST kullanması gerektiğini belirtmektir.

Daha fazla bilgi: SQLGetFunctions'ı geçersiz kılma
SQLGetInfo çağrısı SQLGetInfotarafından döndürülen değerleri geçersiz kılmanıza olanak tanıyan bir kayıt.

Daha fazla bilgi: SQLGetInfo geçersiz kılma
SQLGetTypeInfo tarafından SQLGetTypeInfodöndürülen tür bilgilerini geçersiz kılan bir tablo veya işlev döndürür.

Değer bir tabloya ayarlandığında, değer sürücü tarafından bildirilen tür bilgilerinin yerini alır. SQLGetTypeInfo çağrılmaz.

Değer bir işleve ayarlandığında, işleviniz özgün çağrısının SQLGetTypeInfosonucunu alır ve tabloyu değiştirmenize olanak tanır.

Bu alan genellikle ve SQLColumnstarafından SQLGetTypeInfo bildirilen veri türleri arasında uyuşmazlık olduğunda kullanılır.

Daha fazla bilgi: SQLGetTypeInfo geçersiz kılma
SQLTables çağrısı tarafından döndürülen tablo meta verilerini değiştirmenize SQLTablesolanak tanıyan bir işlev.
TolerateConcatOverflow Sonuç kullanılabilir bir tür aralığına sığacak şekilde kesilse bile metin değerlerinin birleştirilebilir olmasını sağlar.

Örneğin, BIR VARCHAR(4000) alanını 4000 ve CLOB türü olmayan bir VARCHAR boyutunu en üst düzeye çıkarmayı destekleyen bir sistemde VARCHAR(4000) alanıyla birleştirirken, sonuç kesilse bile birleştirme katlanır.

Varsayılan: yanlış
UseEmbeddedDriver (iç kullanım): ODBC sürücüsünün yerel bir dizinden yüklenip yüklenmeyeceğini denetleyebilen mantıksal değerdir (ODBC 4.0 belirtiminde tanımlanan yeni işlevler kullanılarak). Bu değer genellikle yalnızca Microsoft tarafından oluşturulan ve Power Query ile birlikte gelen bağlayıcılar tarafından ayarlanır.

false olarak ayarlandığında, sürücüyü bulmak ve yüklemek için sistem ODBC sürücü yöneticisi kullanılır.

Çoğu bağlayıcının bu alanı ayarlaması gerekmez.

Varsayılan: yanlış

AstVisitor'ı geçersiz kılma

Alanı AstVisitor Odbc.DataSource seçenekleri kaydı aracılığıyla ayarlanır. Belirli sorgu senaryoları için oluşturulan SQL deyimlerini değiştirmek için kullanılır.

Not

LIMIT ve OFFSET yan tümcelerini destekleyen sürücüler (TOP yerine) için AstVisitorbir LimitClause geçersiz kılma sağlamak isteyecektir.

Sabit

Bu değer için geçersiz kılma sağlanması kullanım dışı bırakıldı ve gelecekteki uygulamalardan kaldırılabilir.

LimitClause

Bu alan, iki Int64.Type bağımsız değişken (skip, ) alan ve iki metin alanı (Text, takeLocation) içeren bir kayıt döndüren bir işlevdir.

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

skip parametresi, atlana satır sayısıdır (yani OFFSET bağımsız değişkenidir). Uzaklık belirtilmezse atlama değeri null olur. Sürücünüz LIMIT'i destekliyorsa ancak OFFSET'i desteklemiyorsa, LimitClause atlama 0'dan büyük olduğunda işlevin tanımlanamayan bir hata (...) döndürmesi gerekir.

take parametresi, alınması gereken satır sayısıdır (yani LIMIT bağımsız değişkenidir).

Sonucun Text alanı, oluşturulan sorguya eklenecek SQL metnini içerir.

alanı yan Location tümcesinin nereye ekleyebileceğinizi belirtir. Aşağıdaki tabloda desteklenen değerler açıklanmaktadır.

Değer Açıklama Örnek
AfterQuerySpecification LIMIT yan tümcesi, oluşturulan SQL'in sonuna konur.

Bu, en yaygın desteklenen LIMIT söz dizimidir.
SELECT a, b, c

FROM tablosu

WHERE a > 10

LIMIT 5
BeforeQuerySpecification LIMIT yan tümcesi, oluşturulan SQL deyiminden önce konur. 5 SATIR SINIRLA

SELECT a, b, c

FROM tablosu

WHERE a > 10
AfterSelect LIMIT, SELECT deyiminin ve herhangi bir değiştiricinin (DISTINCT gibi) ardından gelir. SELECT DISTINCT LIMIT 5 a, b, c

FROM tablosu

WHERE a > 10
AfterSelectBeforeModifiers LIMIT SELECT deyiminden sonra gelir, ancak herhangi bir değiştiriciden önce (DISTINCT gibi). SELECT LIMIT 5 DISTINCT a, b, c

FROM tablosu

WHERE a > 10

Aşağıdaki kod parçacığı, aşağıdaki biçimde isteğe bağlı OFFSET ile LIMIT yan tümcesi bekleyen bir sürücü için Bir LimitClause uygulaması sağlar: [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"
        ]

Aşağıdaki kod parçacığı, LIMIT'i destekleyen ancak OFFSET'i desteklemeyen bir sürücü için bir uygulama sağlar LimitClause . Biçim: LIMIT <row_count>.

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

SqlCapabilities'i geçersiz kılma

Alan Ayrıntılar
FractionalSecondsScale Milisaniyelik değerler için desteklenen ondalık basamak sayısını gösteren 1 ile 7 arasında bir sayı değeri. Bu değer, tarih saat değerlerine göre sorguyu kaynağa döndürmeyi etkinleştirmek isteyen bağlayıcılar tarafından ayarlanmalıdır.

Varsayılan: null
PrepareStatements Deyimlerin SQLPrepare kullanılarak hazırlanması gerektiğini gösteren mantıksal değer.

Varsayılan: yanlış
SupportsTop Sürücünün döndürülen satır sayısını sınırlamak için TOP yan tümcesini desteklediğini gösteren mantıksal değer.

Varsayılan: yanlış
StringLiteralEscapeCharacters Dize değişmez değerleri ve LIKE ifadelerinden kaçış sırasında kullanılacak karakterleri belirten metin değerlerinin listesi.

Örnek: {""}

Varsayılan: null
SupportsDerivedTable Sürücünün türetilmiş tabloları (alt seçim) desteklediğini gösteren mantıksal değer.

Bu değerin uyumluluk düzeyini SQL_SC_SQL92_FULL (sürücü tarafından bildirilen veya Sql92Conformance ayarıyla geçersiz kılınan) sürücüler için true olduğu varsayılır. Diğer tüm uyumluluk düzeyleri için bu değer varsayılan olarak false olur.

Sürücünüz SQL_SC_SQL92_FULL uyumluluk düzeyini bildirmiyorsa ancak türetilmiş tabloları destekliyorsa, bu değeri true olarak ayarlayın.

Türetilmiş tabloların desteklenmesi birçok DirectQuery senaryosu için gereklidir.
SupportsNumericLiterals Oluşturulan SQL'in sayısal değişmez değer değerleri içermesi gerekip gerekmediğini gösteren mantıksal değer. False olarak ayarlandığında, sayısal değerler her zaman parametre bağlaması kullanılarak belirtilir.

Varsayılan: yanlış
SupportsStringLiterals Oluşturulan SQL'in dize değişmez değerleri içermesi gerekip gerekmediğini gösteren mantıksal değer. false olarak ayarlandığında, dize değerleri her zaman parametre bağlaması kullanılarak belirtilir.

Varsayılan: yanlış
SupportsOdbcDateLiterals Oluşturulan SQL'in tarih değişmez değerleri içermesi gerekip gerekmediğini gösteren mantıksal değer. False olarak ayarlandığında, tarih değerleri her zaman parametre bağlaması kullanılarak belirtilir.

Varsayılan: yanlış
SupportsOdbcTimeLiterals Oluşturulan SQL'in zaman değişmez değerleri içermesi gerekip gerekmediğini gösteren mantıksal değer. false olarak ayarlandığında, zaman değerleri her zaman parametre bağlaması kullanılarak belirtilir.

Varsayılan: yanlış
SupportsOdbcTimestampLiterals Oluşturulan SQL'in zaman damgası değişmez değerleri içermesi gerekip gerekmediğini gösteren mantıksal değer. false olarak ayarlandığında, zaman damgası değerleri her zaman parametre bağlaması kullanılarak belirtilir.

Varsayılan: yanlış

SQLColumns Geçersiz Kılma

SQLColumns , SQLColumns'a bir ODBC çağrısının sonuçlarını alan bir işlev işleyicidir. Kaynak parametresi, veri türü bilgilerini içeren bir tablo içerir. Bu geçersiz kılma genellikle ve SQLColumnsçağrıları arasındaki veri türü uyuşmazlıklarını düzeltmek için SQLGetTypeInfo kullanılır.

Kaynak tablo parametresinin biçiminin ayrıntıları için SQLColumns İşlevi'ne gidin.

SQLGetFunctions Geçersiz Kılma

Bu alan, ODBC sürücüsü tarafından döndürülen değerleri geçersiz kılmak SQLFunctions için kullanılır. Alan adları ODBC SQLGetFunctions işlevi için tanımlanan sabitlere FunctionId eşit olan bir kayıt içerir. Bu alanların her biri için sayısal sabitler ODBC belirtiminde bulunabilir.

Alan Ayrıntılar
SQL_CONVERT_FUNCTIONS Tür dönüştürmeleri yaparken hangi işlevlerin desteklendiği gösterir. M Altyapısı varsayılan olarak ÇEVİr işlevini kullanmayı dener. CAST kullanımını tercih eden sürücüler, yalnızca SQL_FN_CVT_CAST (0x2 sayısal değeri) desteklendiğini bildirmek için bu değeri geçersiz kılabilir.
SQL_API_SQLBINDCOL Karma altyapısının verileri alırken SQLBindCol API'sini kullanıp kullanmayacağını gösteren mantıksal (true/false) değer. false olarak ayarlandığında, bunun yerine SQLGetData kullanılır.

Varsayılan: yanlış

Aşağıdaki kod parçacığı, M altyapısına DÖNÜŞTÜR yerine CAST kullanmasını açıkça söyleyen bir örnek sağlar.

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

SQLGetInfo'nun geçersiz kılınma

Bu alan, ODBC sürücüsü tarafından döndürülen değerleri geçersiz kılmak SQLGetInfo için kullanılır. Alanları ODBC SQLGetInfo işlevi için tanımlanan sabitlere InfoType eşit adlara sahip bir kayıt içerir. Bu alanların her biri için sayısal sabitler ODBC belirtiminde bulunabilir. denetlenenlerin tam listesi InfoTypes karma altyapısı izleme dosyalarında bulunabilir.

Aşağıdaki tabloda yaygın olarak geçersiz kılınan SQLGetInfo özellikler yer alır:

Alan Ayrıntılar
SQL_SQL_CONFORMANCE Sürücü tarafından desteklenen SQL-92 düzeyini gösteren bir tamsayı değeri:

(1) SQL_SC_SQL92_ENTRY: Giriş düzeyi SQL-92 uyumlu.
(2) SQL_SC_FIPS127_2_TRANSITIONAL: FIPS 127-2 geçiş düzeyi uyumlu.
(4) SQL_SC_ SQL92_INTERMEDIATE" Ara düzey SQL-92 uyumlu.
(8) SQL_SC_SQL92_FULL: Tam düzey SQL-92 uyumlu.

Power Query senaryolarında bağlayıcı Salt Okunur modunda kullanılır. Sürücülerin çoğu SQL_SC_SQL92_FULL uyumluluk düzeyini bildirmek ve ve SQLGetFunctions özelliklerini kullanarak SQLGetInfo belirli SQL oluşturma davranışını geçersiz kılmak isteyecektir.
SQL_SQL92_PREDICATES SQL-92'de tanımlandığı gibi SELECT deyiminde desteklenen koşullarını numaralandıran bit maskesi.

ODBC belirtimindeki SQL_SP_* sabitlerine gidin.
SQL_AGGREGATE_FUNCTIONS Toplama işlevleri için bir bit maskesi numaralandırma desteği.

SQL_AF_ALL
SQL_AF_AVG
SQL_AF_COUNT
SQL_AF_DISTINCT
SQL_AF_MAX
SQL_AF_MIN
SQL_AF_SUM

ODBC belirtiminde SQL_AF_* sabitlerine gidin.
SQL_GROUP_BY GROUP BY yan tümcesindeki sütunlar ile seçme listesindeki toplanmamış sütunlar arasındaki ilişkiyi belirten bir tamsayı değeri:

SQL_GB_COLLATE: Her gruplandırma sütununun sonunda bir COLLATE yan tümcesi belirtilebilir.

SQL_GB_NOT_SUPPORTED: GROUP BY yan tümceleri desteklenmez.

SQL_GB_GROUP_BY_EQUALS_SELECT: GROUP BY yan tümcesi, seçme listesindeki tüm toplanmamış sütunları içermelidir. Başka sütun içeremez. Örneğin SELECT DEPT, MAX(MAAŞ) FROM EMPLOYEE GROUP BY DEPT.

SQL_GB_GROUP_BY_CONTAINS_SELECT: GROUP BY yan tümcesi, seçme listesindeki tüm toplanmamış sütunları içermelidir. Seçme listesinde olmayan sütunlar içerebilir. Örneğin SELECT DEPT, MAX(MAAŞ) FROM EMPLOYEE GROUP BY DEPT, AGE.

SQL_GB_NO_RELATION: GROUP BY yan tümcesindeki ve seçme listesindeki sütunlar ilişkili değildir. Seçim listesindeki gruplandırılmamış, toplanmamış sütunların anlamı veri kaynağına bağımlıdır. Örneğin SELECT DEPT, EMPLOYEE GROUP BY DEPT, AGE ÜCRETİ.

ODBC belirtiminde SQL_GB_* sabitlerine gidin.

Aşağıdaki yardımcı işlevi, bir tamsayı değerleri listesinden bit maskesi değerleri oluşturmak için kullanılabilir:

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'nun geçersiz kılınma

SQLGetTypeInfo iki şekilde belirtilebilir:

  • odbc çağrısıyla SQLGetTypeInfoaynı tür bilgilerini içeren sabit table bir değer.
  • Tablo bağımsız değişkenlerini kabul eden ve tablo döndüren bir işlev. bağımsız değişkeni, odbc SQLGetTypeInfoçağrısının özgün sonuçlarını içerir. İşlev uygulamanız bu tabloyu değiştirebilir veya tabloya ekleyebilir.

İlk yaklaşım, ODBC sürücüsü tarafından döndürülen değerleri tamamen geçersiz kılmak için kullanılır. bu değerlere eklemek veya bunları değiştirmek istiyorsanız ikinci yaklaşım kullanılır.

Tablo parametresi ve beklenen dönüş değeri türlerinin biçiminin ayrıntıları için SQLGetTypeInfo işlev başvurusuna gidin.

Statik tablo kullanarak SQLGetTypeInfo

Aşağıdaki kod parçacığı için SQLGetTypeInfostatik bir uygulama sağlar.

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                } }
);

İşlev kullanarak SQLGetTypeInfo

Aşağıdaki kod parçacıkları, türü sürücü tarafından döndürülen mevcut türlerin sonuna ekler bpchar .

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;

bağlantı dizesi ayarlama

ODBC sürücünüzün bağlantı dizesi Odbc.DataSource ve Odbc.Query işlevlerinin ilk bağımsız değişkeni kullanılarak ayarlanır. Değer metin veya M kaydı olabilir. Kaydı kullanırken, kayıttaki her alan bağlantı dizesi bir özellik haline gelir. Tüm bağlantı dizesi bir Driver alan (veya DSN kullanıcıların sistem düzeyinde DSN'yi önceden yapılandırmasını istiyorsanız alan) gerektirir. Kimlik bilgileriyle ilgili özellikler ayrı olarak ayarlanır. Diğer özellikler sürücüye özeldir.

Aşağıdaki kod parçacığında yeni bir veri kaynağı işlevinin tanımı, kaydın ConnectionString oluşturulması ve Odbc.DataSource işlevinin çağrılması gösterilmektedir.

[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;

Sonraki adımlar