Συμπτώματα
Όταν συμπληρώνετε μια μεταβλητή πίνακα με πολλές γραμμές και, στη συνέχεια, συμμετέχετε σε αυτήν με άλλους πίνακες, η βελτιστοποίηση ερωτήματος μπορεί να επιλέξει ένα πρόγραμμα ερωτήματος που δεν είναι αποδοτικό, το οποίο μπορεί να οδηγήσει σε αργές επιδόσεις ερωτημάτων.
Επίλυση
Μετά την εφαρμογή αυτής της επείγουσας επιδιόρθωσης, μπορείτε να ενεργοποιήσετε τη σημαία ανίχνευσης 2453, για να επιτρέψετε σε μια μεταβλητή πίνακα να ενεργοποιεί την μεταγλωττίση όταν έχουν αλλάξει αρκετοί αριθμοί γραμμών. Αυτό μπορεί να επιτρέψει στη βελτιστοποίηση ερωτημάτων να επιλέξει ένα πιο αποδοτικό πρόγραμμα. Το πρόβλημα διορθώθηκε για πρώτη φορά με την παρακάτω αθροιστική ενημερωμένη έκδοση ή/και Service Pack για τον SQL Server.
Αθροιστική ενημερωμένη έκδοση 3 για τον SQL Server 2014 /en-us/help/2984923
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Τα Service Pack είναι αθροιστικά. Κάθε νέο Service Pack περιέχει όλες τις επιδιορθώσεις που υπάρχουν σε προηγούμενα Service Pack, μαζί με τυχόν νέες επιδιορθώσεις. Η σύστασή μας είναι να εφαρμόσουμε το πιο πρόσφατο Service Pack και την πιο πρόσφατη αθροιστική ενημέρωση για το συγκεκριμένο Service Pack. Δεν χρειάζεται να εγκαταστήσετε ένα προηγούμενο Service Pack πριν από την εγκατάσταση του πιο πρόσφατου Service Pack. Χρησιμοποιήστε τον πίνακα 1 στο ακόλουθο άρθρο για να βρείτε περισσότερες πληροφορίες σχετικά με το πιο πρόσφατο Service Pack και την πιο πρόσφατη αθροιστική ενημερωμένη έκδοση:
Περισσότερες πληροφορίες
Όταν χρησιμοποιείτε μια μεταβλητή πίνακα σε μια δέσμη ή διαδικασία, το ερώτημα καταρτίζεται και βελτιστοποιείται για την αρχική κενή κατάσταση της μεταβλητής πίνακα. Εάν αυτή η μεταβλητή πίνακα συμπληρώνεται με πολλές γραμμές κατά το χρόνο εκτέλεσης, το προ-μεταγλωττισμένο σχέδιο ερωτήματος μπορεί να μην είναι πλέον το βέλτιστο. Για παράδειγμα, το ερώτημα μπορεί να συνδέεται με μια μεταβλητή πίνακα με ένθετο βρόχο, επειδή είναι συνήθως πιο αποτελεσματική για μικρό αριθμό γραμμών. Αυτό το σχέδιο ερωτήματος μπορεί να μην είναι αποδοτικό εάν η μεταβλητή πίνακα έχει εκατομμύρια γραμμές. Ένας σύνδεσμος κατακερματισμού μπορεί να είναι μια καλύτερη επιλογή σε αυτή την κατάσταση. Για να λάβετε ένα νέο πρόγραμμα ερωτήματος, πρέπει να μεταγλωττιστεί ξανά. Σε αντίθεση με άλλους χρήστες ή προσωρινούς πίνακες, ωστόσο, η αλλαγή πλήθους γραμμών σε μια μεταβλητή πίνακα δεν ενεργοποιεί ένα ερώτημα μεταγλωττίστε. Συνήθως, μπορείτε να επιλύσετε αυτό το πρόβλημα με την επιλογή (ΜΕΤΑΓΛΩΤΤΊΣτε), η οποία έχει το δικό της κόστος ΓΒΕ. Η σημαία παρακολούθησης 2453 επιτρέπει το όφελος της μεταγλώττισης του Query χωρίς επιλογή (ΜΕΤΑΓΛΩΤΤΊΣτε). Αυτή η σημαία παρακολούθησης διαφέρει από την επιλογή (ΜΕΤΑΓΛΩΤΤΊΣτε) σε δύο κύριες πτυχές. (1) χρησιμοποιεί το ίδιο όριο πλήθους γραμμών με άλλους πίνακες. Το ερώτημα δεν χρειάζεται να μεταγλωττιστεί για κάθε εκτέλεση, σε αντίθεση με την επιλογή (ΜΕΤΑΓΛΩΤΤΊΣτε). Θα προκαλέσει μεταγλωττίστε μόνο όταν η αλλαγή της αρίθμησης γραμμών υπερβεί το προκαθορισμένο όριο. (2) η επιλογή (ΜΕΤΑΓΛΩΤΤΊΣτε) αναγκάζει το ερώτημα να κρυφοκοιτάζει τις παραμέτρους και να βελτιστοποιήσει το ερώτημα για αυτά. Αυτή η σημαία παρακολούθησης δεν επιβάλλει την παραμέτρου peeking.Σημείωση αυτή η σημαία παρακολούθησης πρέπει να είναι ενεργοποιημένη κατά το χρόνο εκτέλεσης. Δεν μπορείτε να χρησιμοποιήσετε αυτήν τη σημαία ανίχνευσης με το QUERYTRACEON. Αυτή η σημαία παρακολούθησης πρέπει να χρησιμοποιείται με προσοχή, επειδή μπορεί να αυξήσει τον αριθμό των μεταγλωττίσεων ερωτημάτων που θα μπορούσαν να κοστίσουν περισσότερο από την εξοικονόμηση από την καλύτερη βελτιστοποίηση ερωτημάτων.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".