Παράμετροι για 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
πεδίο ορίζεται μέσω της εγγραφής επιλογών Odbc.DataSource . Χρησιμοποιείται για την τροποποίηση πρότασης SQL που δημιουργούνται για συγκεκριμένα σενάρια ερωτημάτων.
Σημείωση
Οι οδηγοί που υποστηρίζουν όρους LIMIT και OFFSET (αντί για TOP) θα θέλουν να παρέχουν μια LimitClause
παράκαμψη για AstVisitor
το .
Η παροχή παράκαμψης για αυτή την τιμή έχει καταργηθεί και μπορεί να καταργηθεί από μελλοντικές υλοποιήσεις.
Αυτό το πεδίο είναι μια συνάρτηση που λαμβάνει δύο 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"
]
Πεδίο | Λεπτομέρειες |
---|---|
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
Το είναι ένας χειρισμός συναρτήσεων που λαμβάνει τα αποτελέσματα μιας κλήσης ODBC σε SQLColumns. Η παράμετρος προέλευσης περιέχει έναν πίνακα με τις πληροφορίες τύπου δεδομένων. Αυτή η παράκαμψη χρησιμοποιείται συνήθως για την επιδιόρθωση αναντιστοιχιών τύπου δεδομένων μεταξύ κλήσεων προς SQLGetTypeInfo
και SQLColumns
.
Για λεπτομέρειες σχετικά με τη μορφή της παραμέτρου πίνακα προέλευσης, μεταβείτε στη Συνάρτηση SQLColumns.
Αυτό το πεδίο χρησιμοποιείται για την παράκαμψη 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
τιμών που επιστρέφονται από ένα πρόγραμμα οδήγησης 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
Το μπορεί να καθοριστεί με δύο τρόπους:
- Μια σταθερή
table
τιμή που περιέχει τις ίδιες πληροφορίες τύπου με μια κλήση ODBC στοSQLGetTypeInfo
. - Μια συνάρτηση που αποδέχεται ένα όρισμα πίνακα και επιστρέφει έναν πίνακα. Το όρισμα περιέχει τα αρχικά αποτελέσματα της κλήσης ODBC στο
SQLGetTypeInfo
. Η υλοποίηση της συνάρτησης μπορεί να τροποποιήσει ή να προσθέσει σε αυτόν τον πίνακα.
Η πρώτη προσέγγιση χρησιμοποιείται για να παρακάμψετε πλήρως τις τιμές που επιστρέφονται από το πρόγραμμα οδήγησης ODBC. Η δεύτερη προσέγγιση χρησιμοποιείται εάν θέλετε να προσθέσετε ή να τροποποιήσετε αυτές τις τιμές.
Για λεπτομέρειες σχετικά με τη μορφή της παραμέτρου πίνακα τύπων και την αναμενόμενη τιμή επιστροφής, μεταβείτε στην αναφορά συνάρτησης 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 } }
);
Τα παρακάτω τμήματα κώδικα προσαρτούν τον 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;