Ανάγνωση στα Αγγλικά

Κοινή χρήση μέσω


Παράμετροι για Odbc.DataSource

Η συνάρτηση Odbc.DataSource λαμβάνει δύο παραμέτρους, μία connectionString για το πρόγραμμα οδήγησης και μια options εγγραφή που σας επιτρέπει να παρακάμψετε διάφορες συμπεριφορές προγραμμάτων οδήγησης. Μέσω της εγγραφής επιλογών, μπορείτε να παρακάμψετε τις δυνατότητες και άλλες πληροφορίες που αναφέρονται από το πρόγραμμα οδήγησης, να ελέγξετε τη συμπεριφορά της περιήγησης και να επηρεάσετε τα ερωτήματα SQL που δημιουργούνται από τον μηχανισμό M.

Τα πεδία των υποστηριζόμενων εγγραφών επιλογών εμπίπτουν σε δύο κατηγορίες: εκείνες που είναι δημόσιες και πάντα διαθέσιμες, καθώς και εκείνες που είναι διαθέσιμες μόνο σε ένα περιβάλλον επεκτασιμότητας.

Ο παρακάτω πίνακας περιγράφει τα δημόσια πεδία στην εγγραφή επιλογών.

Πεδίο Περιγραφή
CommandTimeout Μια τιμή διάρκειας που ελέγχει τον χρόνο που επιτρέπεται να εκτελείται το ερώτημα στην πλευρά του διακομιστή προτού ακυρωθεί.

Προεπιλογή: 10 λεπτά
ConnectionTimeout Μια τιμή διάρκειας που ελέγχει τον χρόνο αναμονής πριν εγκαταλείψετε μια προσπάθεια σύνδεσης με τον διακομιστή.

Προεπιλογή: 15 δευτερόλεπτα
CreateNavigationProperties Μια λογική τιμή που ορίζει εάν δημιουργούνται ιδιότητες περιήγησης στους πίνακες που επιστρέφονται. Οι ιδιότητες περιήγησης βασίζονται σε σχέσεις εξωτερικού κλειδιού που αναφέρονται από το πρόγραμμα οδήγησης. Αυτές οι ιδιότητες εμφανίζονται ως "εικονικές" στήλες που μπορούν να αναπτυχθούν στο πρόγραμμα επεξεργασίας ερωτημάτων, δημιουργώντας τον κατάλληλο σύνδεσμο.

Εάν ο υπολογισμός εξαρτήσεων εξωτερικού κλειδιού είναι μια δαπανηρή λειτουργία για τον οδηγό σας, μπορεί να θέλετε να ορίσετε αυτήν την τιμή σε false.

Η προεπιλογή είναι true.
HierarchicalNavigation Μια λογική τιμή που ορίζει εάν θα προβάλλονται οι πίνακες ομαδοποιημένοι κατά τα ονόματα σχήματος. Όταν οριστεί σε false, οι πίνακες εμφανίζονται σε μια επίπεδη λίστα κάτω από κάθε βάση δεδομένων.

Προεπιλογή: false
SqlCompatibleWindowsAuth Μια λογική τιμή που καθορίζει αν θα παράγεται μια συμβολοσειρά σύνδεσης συμβατή με SQL Server κατά τη χρήση του ελέγχου ταυτότηταςTrusted_Connection=Yes των Windows.

Εάν το πρόγραμμα οδήγησης υποστηρίζει τον έλεγχο ταυτότητας των Windows, αλλά απαιτεί επιπλέον ή εναλλακτικές ρυθμίσεις στον συμβολοσειρά σύνδεσης σας, θα πρέπει να ορίσετε αυτήν την τιμή σε false και να χρησιμοποιήσετε το CredentialConnectionString πεδίο εγγραφής επιλογών που περιγράφεται στον επόμενο πίνακα.

Η προεπιλογή είναι true.

Ο παρακάτω πίνακας περιγράφει τα πεδία εγγραφής επιλογών που είναι διαθέσιμα μόνο μέσω επεκτασιμότητας. Τα πεδία που δεν είναι απλές τιμές λεκτικής σταθεράς περιγράφονται σε μεταγενέστερες ενότητες.

Πεδίο Περιγραφή
AstVisitor Μια εγγραφή που περιέχει μία ή περισσότερες παρακάμψεις για τον έλεγχο της δημιουργίας ερωτημάτων SQL. Η συνηθέστερη χρήση αυτού του πεδίου είναι η παροχή λογικής για τη δημιουργία ενός όρου LIMIT/OFFSET για προγράμματα οδήγησης που δεν υποστηρίζουν TOP.

Τα πεδία περιλαμβάνουν Constant τα και LimitClause.

Περισσότερες πληροφορίες: Παράκαμψη AstVisitor
CancelQueryExplicitly Μια λογική τιμή που καθοδηγεί τον μηχανισμό M να ακυρώσει ρητά τυχόν κλήσεις που εκτελούνται μέσω του προγράμματος οδήγησης ODBC πριν τερματίσει τη σύνδεση με το διακομιστή ODBC.

Αυτό το πεδίο είναι χρήσιμο σε περιπτώσεις όπου η διαχείριση της εκτέλεσης ερωτημάτων πραγματοποιείται ανεξάρτητα από τις συνδέσεις δικτύου στον διακομιστή, για παράδειγμα σε ορισμένες αναπτύξεις Spark. Στις περισσότερες περιπτώσεις, αυτή η τιμή δεν χρειάζεται να οριστεί, επειδή το ερώτημα στο διακομιστή ακυρώνεται όταν τερματιστεί η σύνδεση δικτύου με το διακομιστή.

Προεπιλογή: false
ClientConnectionPooling Μια λογική τιμή που επιτρέπει τη συγκέντρωση συνδέσεων από την πλευρά του προγράμματος-πελάτη για το πρόγραμμα οδήγησης ODBC. Τα περισσότερα προγράμματα οδήγησης θα θέλουν να ορίσουν αυτήν την τιμή σε true.

Προεπιλογή: false
CredentialConnectionString Μια τιμή κειμένου ή εγγραφής που χρησιμοποιείται για τον καθορισμό ιδιοτήτων συμβολοσειρά σύνδεσης που σχετίζονται με διαπιστευτήρια.
HideNativeQuery Μια λογική τιμή που ελέγχει εάν η σύνδεση εμφανίζει προτάσεις SQL που δημιουργήθηκαν στην εμπειρία χρήστη Power Query. Αυτό θα πρέπει να οριστεί σε true μόνο εάν η προέλευση δεδομένων παρασκηνίων υποστηρίζει εγγενώς SQL-92.

Προεπιλογή: false
ImplicitTypeConversions Μια τιμή πίνακα που περιέχει σιωπηρές μετατροπές τύπου που υποστηρίζονται από το πρόγραμμα οδήγησης ή τον διακομιστή παρασκηνίου. Οι τιμές σε αυτόν τον πίνακα είναι προσθετικές στις μετατροπές που αναφέρονται από τον ίδιο τον οδηγό.

Αυτό το πεδίο χρησιμοποιείται συνήθως με το SQLGetTypeInfo πεδίο κατά την αντικατάσταση των πληροφοριών τύπου δεδομένων που αναφέρονται από το πρόγραμμα οδήγησης.
OnError Μια συνάρτηση χειρισμού σφαλμάτων που λαμβάνει μια errorRecord παράμετρο τύπου record.

Συνήθεις χρήσεις αυτής της συνάρτησης είναι ο χειρισμός αποτυχιών σύνδεσης SSL, η παροχή σύνδεσης λήψης εάν το πρόγραμμα οδήγησης δεν βρεθεί στο σύστημα και η αναφορά σφαλμάτων ελέγχου ταυτότητας.
SoftNumbers Επιτρέπει στον μηχανισμό M να επιλέγει συμβατό τύπο δεδομένων όταν η μετατροπή μεταξύ δύο συγκεκριμένων αριθμητικών τύπων δεν δηλώνεται ως υποστηριζόμενη στις δυνατότητες του SQL_CONVERT_*.

Προεπιλογή: false
SqlCapabilities Μια εγγραφή που παρέχει διάφορες παρακάμψεις των δυνατοτήτων προγραμμάτων οδήγησης και ένας τρόπος για να καθορίσετε δυνατότητες που δεν εκφράζονται μέσω του ODBC 3.8.

Περισσότερες πληροφορίες: Παράκαμψη sqlCapabilities
SQLColumns Μια συνάρτηση που σας επιτρέπει να τροποποιήσετε μετα-δεδομένα στήλης που επιστρέφονται από τη SQLColumns συνάρτηση.

Περισσότερες πληροφορίες: Παράκαμψη SQLColumns
SQLGetFunctions Μια εγγραφή που σας επιτρέπει να παρακάμψετε τιμές που επιστρέφονται από κλήσεις στο SQLGetFunctions.

Μια συνήθης χρήση αυτού του πεδίου είναι η απενεργοποίηση της χρήσης της σύνδεσης παραμέτρων ή ο καθορισμός ότι τα ερωτήματα που δημιουργούνται θα πρέπει να χρησιμοποιούν cast αντί για CONVERT.

Περισσότερες πληροφορίες: Παράκαμψη SQLGetFunctions
SQLGetInfo Μια εγγραφή που σας επιτρέπει να παρακάμψετε τιμές που επιστρέφονται από κλήσεις στο SQLGetInfo.

Περισσότερες πληροφορίες: Παράκαμψη SQLGetInfo
SQLGetTypeInfo Ένας πίνακας ή συνάρτηση που επιστρέφει έναν πίνακα που παρακάμπτει τις πληροφορίες τύπου που επιστρέφονται από SQLGetTypeInfoτο .

Όταν η τιμή οριστεί σε έναν πίνακα, η τιμή αντικαθιστά πλήρως τις πληροφορίες τύπου που αναφέρονται από το πρόγραμμα οδήγησης. SQLGetTypeInfo δεν θα κληθεί.

Όταν η τιμή οριστεί σε μια συνάρτηση, η συνάκρισή σας θα λάβει το αποτέλεσμα της αρχικής κλήσης στο SQLGetTypeInfo, το οποίο σας επιτρέπει να τροποποιήσετε τον πίνακα.

Αυτό το πεδίο χρησιμοποιείται συνήθως όταν υπάρχει ασυμφωνία μεταξύ των τύπων δεδομένων που αναφέρονται από SQLGetTypeInfo το και SQLColumnsτο .

Περισσότερες πληροφορίες: Παράκαμψη SQLGetTypeInfo
SQLTables Μια συνάρτηση που σας επιτρέπει να τροποποιήσετε τα μετα-δεδομένα πίνακα που επιστρέφονται από μια κλήση στο SQLTables.
TolerateConcatOverflow Επιτρέπει τη συνένωση των τιμών κειμένου, ακόμη και αν το αποτέλεσμα μπορεί να περικοπεί ώστε να χωράει στην περιοχή ενός διαθέσιμου τύπου.

Για παράδειγμα, κατά τη συνένωση ενός πεδίου VARCHAR(4000) με ένα πεδίο VARCHAR(4000) σε ένα σύστημα που υποστηρίζει μεγιστοποίηση του μεγέθους VARCHAR 4000 και χωρίς τύπο CLOB, η συνένωση αναδιπλώνεται παρόλο που το αποτέλεσμα μπορεί να περικοπεί.

Προεπιλογή: false
UseEmbeddedDriver (εσωτερική χρήση): Μια λογική τιμή που ελέγχει εάν το πρόγραμμα οδήγησης ODBC πρέπει να φορτωθεί από έναν τοπικό κατάλογο (χρησιμοποιώντας νέα λειτουργικότητα που ορίζεται στην προδιαγραφή ODBC 4.0). Αυτή η τιμή ορίζεται γενικά μόνο από συνδέσεις που δημιουργήθηκαν από τη Microsoft και παρέχονται με το Power Query.

Όταν οριστεί σε false, χρησιμοποιείται η διαχείριση προγραμμάτων οδήγησης ODBC συστήματος για τον εντοπισμό και τη φόρτωση του προγράμματος οδήγησης.

Οι περισσότερες συνδέσεις δεν θα πρέπει να ορίζουν αυτό το πεδίο.

Προεπιλογή: false

Παράκαμψη του AstVisitor

Το AstVisitor πεδίο ορίζεται μέσω της εγγραφής επιλογών Odbc.DataSource . Χρησιμοποιείται για την τροποποίηση πρότασης SQL που δημιουργούνται για συγκεκριμένα σενάρια ερωτημάτων.

Σημείωση

Οι οδηγοί που υποστηρίζουν όρους LIMIT και OFFSET (αντί για TOP) θα θέλουν να παρέχουν μια LimitClause παράκαμψη για AstVisitorτο .

Σταθερά

Η παροχή παράκαμψης για αυτή την τιμή έχει καταργηθεί και μπορεί να καταργηθεί από μελλοντικές υλοποιήσεις.

LimitClause

Αυτό το πεδίο είναι μια συνάρτηση που λαμβάνει δύο Int64.Type ορίσματα (skip, take) και επιστρέφει μια εγγραφή με δύο πεδία κειμένου (Text, Location).

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

Η skip παράμετρος είναι ο αριθμός των γραμμών προς παράλειψη (δηλαδή, το όρισμα για OFFSET). Εάν δεν έχει καθοριστεί μετατόπιση, η τιμή παράλειψης θα είναι null. Εάν το πρόγραμμα οδήγησης υποστηρίζει limit, αλλά δεν υποστηρίζει OFFSET, η συνάρτηση θα πρέπει να επιστρέψει ένα μη υλοποιημένο σφάλμα (...) όταν η LimitClause συνάρτηση skip είναι μεγαλύτερη από 0.

Η take παράμετρος είναι ο αριθμός των γραμμών που θα πραγματοποιηθούν (δηλαδή, το όρισμα για το LIMIT).

Το Text πεδίο του αποτελέσματος περιέχει το κείμενο SQL που θα προστεθεί στο ερώτημα που δημιουργείται.

Το Location πεδίο καθορίζει πού θα εισαχθεί ο όρος . Ο παρακάτω πίνακας περιγράφει τις υποστηριζόμενες τιμές.

Τιμή Περιγραφή Παράδειγμα
AfterQuerySpecification Ο όρος LIMIT τίθεται στο τέλος της SQL που δημιουργείται.

Αυτή είναι η πιο συχνά υποστηριζόμενη σύνταξη LIMIT.
ΕΠΙΛΕΞΤΕ a, b, c

Πίνακας FROM

ΠΟΥ α > 10

ΠΕΡΙΟΡΙΟ 5
BeforeQuerySpecification Ο όρος LIMIT τοποθετείται πριν από την πρόταση SQL που δημιουργείται. ΠΕΡΙΟΡΊΣΤΕ 5 ΓΡΑΜΜΈς

ΕΠΙΛΕΞΤΕ a, b, c

Πίνακας FROM

ΠΟΥ α > 10
AfterSelect Η LIMIT ακολουθεί την πρόταση SELECT και μετά από τυχόν τροποποιητές (όπως η DISTINCT). ΕΠΙΛΕΞΤΕ ΔΙΑΚΡΙΤΟ ΠΕΡΙΟΡΙΟ 5 a, b, c

Πίνακας FROM

ΠΟΥ α > 10
AfterSelectBeforeModifiers Η LIMIT ακολουθεί την πρόταση SELECT, αλλά πριν από οποιονδήποτε τροποποιητή (όπως η DISTINCT). ΕΠΙΛΕΞΤΕ ΠΕΡΙΟΡΙΟ 5 ΔΙΑΚΡΙΤΟ a, b, c

Πίνακας FROM

ΠΟΥ α > 10

Το ακόλουθο τμήμα κώδικα παρέχει μια υλοποίηση LimitClause για έναν παράγοντα που αναμένει έναν όρο LIMIT, με προαιρετική OFFSET, στην ακόλουθη μορφή: [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"
        ]

Το ακόλουθο τμήμα κώδικα παρέχει μια LimitClause υλοποίηση για ένα πρόγραμμα οδήγησης που υποστηρίζει LIMIT, αλλά όχι OFFSET. Μορφή: 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

Πεδίο Λεπτομέρειες
FractionalSecondsScale Μια αριθμητική τιμή που κυμαίνεται από 1 έως 7, η οποία υποδεικνύει τον αριθμό των δεκαδικών ψηφίων που υποστηρίζονται για τιμές χιλιοστού του δευτερολέπτου. Αυτή η τιμή πρέπει να οριστεί με συνδέσεις που θέλουν να ενεργοποιήσουν την αναδίπλωση ερωτήματος σε τιμές ημερομηνίας/ώρας.

Προεπιλογή: null
PrepareStatements Μια λογική τιμή που υποδεικνύει ότι οι προτάσεις πρέπει να προετοιμάζονται με χρήση SQLPrepare.

Προεπιλογή: false
SupportsTop Μια λογική τιμή που υποδεικνύει ότι το πρόγραμμα οδήγησης υποστηρίζει τον όρο TOP για τον περιορισμό του αριθμού των γραμμών που επιστρέφονται.

Προεπιλογή: false
StringLiteralEscapeCharacters Μια λίστα τιμών κειμένου που καθορίζουν τους χαρακτήρες που θα χρησιμοποιηθούν κατά τη διαφυγή των λεκτικών σταθερών συμβολοσειρών και των παραστάσεων LIKE.

Παράδειγμα: {""}

Προεπιλογή: null
SupportsDerivedTable Μια λογική τιμή που υποδεικνύει ότι το πρόγραμμα οδήγησης υποστηρίζει παραγόμενους πίνακες (δευτερεύουσες επιλογές).

Αυτή η τιμή θεωρείται ότι είναι true για τους οδηγούς που ορίζουν το επίπεδο συμμόρφωσης σε SQL_SC_SQL92_FULL (αναφέρεται από το πρόγραμμα οδήγησης ή παρακάμπτεται με τη ρύθμιση Sql92Conformance. Για όλα τα άλλα επίπεδα συμμόρφωσης, αυτή η τιμή ισχύει από προεπιλογή ως false.

Εάν το πρόγραμμα οδήγησης δεν αναφέρει το SQL_SC_SQL92_FULL επίπεδο συμμόρφωσης, αλλά διαθέτει πίνακες που προέρχονται από την υποστήριξη, ορίστε αυτήν την τιμή σε true.

Η υποστήριξη παραγόμενων πινάκων απαιτείται για πολλά σενάρια DirectQuery.
SupportsNumericLiterals Μια λογική τιμή που υποδεικνύει εάν το SQL που δημιουργείται θα πρέπει να περιλαμβάνει τιμές αριθμητικών λεκτικών σταθερών. Όταν οριστεί σε false, οι αριθμητικές τιμές καθορίζονται πάντα με χρήση σύνδεσης παραμέτρων.

Προεπιλογή: false
SupportsStringLiterals Μια λογική τιμή που υποδεικνύει εάν το SQL που δημιουργείται θα πρέπει να περιλαμβάνει τιμές λεκτικών σταθερών συμβολοσειρών. Όταν οριστεί σε false, οι τιμές συμβολοσειράς καθορίζονται πάντα με χρήση σύνδεσης παραμέτρων.

Προεπιλογή: false
SupportsOdbcDateLiterals Μια λογική τιμή που υποδεικνύει εάν το SQL που δημιουργείται θα πρέπει να περιλαμβάνει τιμές λεκτικών σταθερών ημερομηνίας. Όταν οριστεί σε false, οι τιμές ημερομηνίας καθορίζονται πάντα με χρήση σύνδεσης παραμέτρων.

Προεπιλογή: false
SupportsOdbcTimeLiterals Μια λογική τιμή που υποδεικνύει εάν το SQL που δημιουργείται θα πρέπει να περιλαμβάνει τιμές λεκτικών σταθερών χρόνου. Όταν οριστεί σε false, οι τιμές ώρας καθορίζονται πάντα με χρήση σύνδεσης παραμέτρων.

Προεπιλογή: false
SupportsOdbcTimestampLiterals Μια λογική τιμή που υποδεικνύει εάν το SQL που δημιουργείται θα πρέπει να περιλαμβάνει τιμές λεκτικών σταθερών χρονικής σήμανσης. Όταν οριστεί σε false, οι τιμές χρονικής σήμανσης καθορίζονται πάντα με χρήση σύνδεσης παραμέτρων.

Προεπιλογή: false

Παράκαμψη sqlColumns

SQLColumns Το είναι ένας χειρισμός συναρτήσεων που λαμβάνει τα αποτελέσματα μιας κλήσης ODBC σε SQLColumns. Η παράμετρος προέλευσης περιέχει έναν πίνακα με τις πληροφορίες τύπου δεδομένων. Αυτή η παράκαμψη χρησιμοποιείται συνήθως για την επιδιόρθωση αναντιστοιχιών τύπου δεδομένων μεταξύ κλήσεων προς SQLGetTypeInfo και SQLColumns.

Για λεπτομέρειες σχετικά με τη μορφή της παραμέτρου πίνακα προέλευσης, μεταβείτε στη Συνάρτηση SQLColumns.

Παράκαμψη SQLGetFunctions

Αυτό το πεδίο χρησιμοποιείται για την παράκαμψη SQLFunctions τιμών που επιστρέφονται από ένα πρόγραμμα οδήγησης ODBC. Περιέχει μια εγγραφή της οποίας τα ονόματα πεδίων είναι ίσα με τις FunctionId σταθερές που ορίζονται για τη συνάρτηση ODBC SQLGetFunctions . Μπορείτε να βρείτε αριθμητικές σταθερές για κάθε ένα από αυτά τα πεδία στην προδιαγραφή ODBC.

Πεδίο Λεπτομέρειες
SQL_CONVERT_FUNCTIONS Υποδεικνύει ποιες συναρτήσεις υποστηρίζονται όταν γίνονται μετατροπές τύπου. Από προεπιλογή, ο μηχανισμός M επιχειρεί να χρησιμοποιήσει τη συνάρτηση CONVERT. Οι οδηγοί που προτιμούν τη χρήση της CAST μπορούν να παρακάμψουν αυτή την τιμή για να αναφέρουν ότι υποστηρίζεται μόνο SQL_FN_CVT_CAST (αριθμητική τιμή 0x2).
SQL_API_SQLBINDCOL Μια λογική τιμή (true/false) που υποδεικνύει εάν η μηχανή συνδυασμού δεδομένων θα πρέπει να χρησιμοποιεί το API SQLBindCol κατά την ανάκτηση δεδομένων. Όταν οριστεί σε false, αντί για αυτό χρησιμοποιείται το SQLGetData .

Προεπιλογή: false

Το παρακάτω τμήμα κώδικα παρέχει ένα παράδειγμα που ενημερώνει ρητά τον μηχανισμό M να χρησιμοποιεί cast αντί για CONVERT.

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

Παράκαμψη SQLGetInfo

Αυτό το πεδίο χρησιμοποιείται για την παράκαμψη SQLGetInfo τιμών που επιστρέφονται από ένα πρόγραμμα οδήγησης ODBC. Περιέχει μια εγγραφή της οποίας τα πεδία είναι ονόματα ίσα με τις InfoType σταθερές που ορίστηκαν για τη συνάρτηση ODBC SQLGetInfo . Μπορείτε να βρείτε αριθμητικές σταθερές για κάθε ένα από αυτά τα πεδία στην προδιαγραφή ODBC. Μπορείτε να βρείτε την πλήρη λίστα των επιλεγμένων InfoTypes στοιχείων στα αρχεία ανίχνευσης της μηχανής συνδυασμού δεδομένων.

Ο παρακάτω πίνακας περιέχει συνήθεις SQLGetInfo ιδιότητες:

Πεδίο Λεπτομέρειες
SQL_SQL_CONFORMANCE Μια ακέραια τιμή που υποδεικνύει το επίπεδο του SQL-92 που υποστηρίζεται από το πρόγραμμα οδήγησης:

(1) SQL_SC_SQL92_ENTRY: Συμβατό με SQL-92 επιπέδου εισόδου.
(2) SQL_SC_FIPS127_2_TRANSITIONAL: συμβατό με το μεταβατικό επίπεδο FIPS 127-2.
(4) SQL_SC_ SQL92_INTERMEDIATE" Συμβατό με SQL-92 ενδιάμεσου επιπέδου.
(8) SQL_SC_SQL92_FULL: Συμβατό με SQL-92 πλήρους επιπέδου.

Στα σενάρια Power Query, η σύνδεση χρησιμοποιείται σε λειτουργία μόνο για ανάγνωση. Τα περισσότερα προγράμματα οδήγησης θα θέλουν να αναφέρουν ένα SQL_SC_SQL92_FULL επίπεδο συμμόρφωσης και να παρακάμπτουν συγκεκριμένη συμπεριφορά δημιουργίας SQL χρησιμοποιώντας τις SQLGetInfo ιδιότητες και SQLGetFunctions .
SQL_SQL92_PREDICATES Μια μάσκα bit που απαριθμεί τα κατηγορήματα που υποστηρίζονται σε μια πρόταση SELECT, όπως ορίζεται στην SQL-92.

Μεταβείτε στις σταθερές SQL_SP_* στην προδιαγραφή ODBC.
SQL_AGGREGATE_FUNCTIONS Υποστήριξη απαρίθμησης bit για συναρτήσεις συνάθροισης.

SQL_AF_ALL
SQL_AF_AVG
SQL_AF_COUNT
SQL_AF_DISTINCT
SQL_AF_MAX
SQL_AF_MIN
SQL_AF_SUM

Μεταβείτε στις σταθερές SQL_AF_* στην προδιαγραφή ODBC.
SQL_GROUP_BY Μια ακέραια τιμή που καθορίζει τη σχέση μεταξύ των στηλών στον όρο GROUP BY και των μη συγκεντρωτικών στηλών στη λίστα επιλογής:

SQL_GB_COLLATE: Ένας όρος COLLATE μπορεί να καθοριστεί στο τέλος κάθε στήλης ομαδοποίησης.

SQL_GB_NOT_SUPPORTED: Οι όροι GROUP BY δεν υποστηρίζονται.

SQL_GB_GROUP_BY_EQUALS_SELECT: Ο όρος GROUP BY πρέπει να περιέχει όλες τις μη συγκεντρωτικές στήλες στη λίστα επιλογής. Δεν μπορεί να περιέχει άλλες στήλες. Για παράδειγμΑ, ΕΠΙΛΈΞΤΕ DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT.

SQL_GB_GROUP_BY_CONTAINS_SELECT: Ο όρος GROUP BY πρέπει να περιέχει όλες τις μη συγκεντρωτικές στήλες στη λίστα επιλογής. Μπορεί να περιέχει στήλες που δεν βρίσκονται στη λίστα επιλογής. ΓΙΑ ΠΑΡΆΔΕΙΓΜΑ, ΕΠΙΛΈΞΤΕ DEPT, MAX(SALARY) FROM EMPLOYEE GROUP BY DEPT, AGE.

SQL_GB_NO_RELATION: Οι στήλες στον όρο GROUP BY και στη λίστα επιλογής δεν σχετίζονται. Η έννοια των μη ομαδοποιημένων, μη συγκεντρωτικών στηλών στη λίστα επιλογής εξαρτάται από την προέλευση δεδομένων. ΓΙΑ ΠΑΡΆΔΕΙΓΜΑ, SELECT DEPT, SALARY FROM EMPLOYEE GROUP BY DEPT, AGE.

Μεταβείτε στις σταθερές SQL_GB_* στην προδιαγραφή ODBC.

Η ακόλουθη συνάρτηση βοηθητικής εφαρμογής μπορεί να χρησιμοποιηθεί για τη δημιουργία τιμών bit από μια λίστα ακέραιων τιμών:

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

SQLGetTypeInfo Το μπορεί να καθοριστεί με δύο τρόπους:

  • Μια σταθερή table τιμή που περιέχει τις ίδιες πληροφορίες τύπου με μια κλήση ODBC στο SQLGetTypeInfo.
  • Μια συνάρτηση που αποδέχεται ένα όρισμα πίνακα και επιστρέφει έναν πίνακα. Το όρισμα περιέχει τα αρχικά αποτελέσματα της κλήσης ODBC στο SQLGetTypeInfo. Η υλοποίηση της συνάρτησης μπορεί να τροποποιήσει ή να προσθέσει σε αυτόν τον πίνακα.

Η πρώτη προσέγγιση χρησιμοποιείται για να παρακάμψετε πλήρως τις τιμές που επιστρέφονται από το πρόγραμμα οδήγησης ODBC. Η δεύτερη προσέγγιση χρησιμοποιείται εάν θέλετε να προσθέσετε ή να τροποποιήσετε αυτές τις τιμές.

Για λεπτομέρειες σχετικά με τη μορφή της παραμέτρου πίνακα τύπων και την αναμενόμενη τιμή επιστροφής, μεταβείτε στην αναφορά συνάρτησης SQLGetTypeInfo.

SQLGetTypeInfo χρησιμοποιώντας έναν στατικό πίνακα

Το ακόλουθο τμήμα κώδικα παρέχει μια στατική υλοποίηση για SQLGetTypeInfoτο .

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

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

Χρήση συνάρτησης SQLGetTypeInfo

Τα παρακάτω τμήματα κώδικα προσαρτούν τον 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;

Ρύθμιση του συμβολοσειρά σύνδεσης

Η συμβολοσειρά σύνδεσης για το πρόγραμμα οδήγησης ODBC ορίζεται χρησιμοποιώντας το πρώτο όρισμα στις συναρτήσεις Odbc.DataSource και Odbc.Query. Η τιμή μπορεί να είναι κείμενο ή εγγραφή M. Όταν χρησιμοποιείτε την εγγραφή, κάθε πεδίο στην εγγραφή θα γίνει μια ιδιότητα στον συμβολοσειρά σύνδεσης. Όλες οι συμβολοσειρά σύνδεσης απαιτούν ένα Driver πεδίο (ή DSN πεδίο, εάν απαιτείται από τους χρήστες να ρυθμίσουν εκ των προτέρων ένα DSN σε επίπεδο συστήματος). Οι ιδιότητες που σχετίζονται με διαπιστευτήρια ορίζονται ξεχωριστά. Άλλες ιδιότητες αφορούν συγκεκριμένο πρόγραμμα οδήγησης.

Το παρακάτω τμήμα κώδικα εμφανίζει τον ορισμό μιας νέας συνάρτησης προέλευσης δεδομένων, τη δημιουργία της εγγραφής και την ConnectionStringκλήση της συνάρτησης 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;

Επόμενα βήματα