Συμπτώματα
Ας υποθέσουμε ότι χρησιμοποιείτε τον Microsoft SQL Server 2014. Όταν προσπαθείτε να χρησιμοποιήσετε το DatePart (εργάσιμη ημέρα) σε μια εγγενώς μεταγλωττισμένη αποθηκευμένη διαδικασία, υπάρχει παραβίαση πρόσβασης και η σύνδεση έληξε. Επιπλέον, λαμβάνετε το ακόλουθο μήνυμα σφάλματος:
Παρουσιάστηκε σοβαρό σφάλμα στην τρέχουσα εντολή. Τα αποτελέσματα, εάν υπάρχουν, θα πρέπει να απορρίπτονται.
Αιτία
Το πρόβλημα παρουσιάζεται επειδή ένα ελάττωμα στον SQL Server 2014. η χρήση του DatePart με ένα όρισμα char εισάγει μια σιωπηρή μετατροπή στο DateTimeOffset. Η εγγενής αποθηκευμένη διαδικασία δεν υποστηρίζει το DateTimeOffset.
Επίλυση
Μετά την εφαρμογή της επείγουσας επιδιόρθωσης, ο SQL Server θα κάνει μια αλλαγή για να εισαγάγει νέα λογική για τη μετατροπή του ορίσματος char σε datetime2 για εγγενή αποθηκευμένη διαδικασία και DateTimeOffset για κανονική αποθηκευμένη διαδικασία και σταθερά πτυσσόμενα. Το πρόβλημα διορθώθηκε για πρώτη φορά με την ακόλουθη αθροιστική ενημέρωση του SQL Server.
Αθροιστική ενημερωμένη έκδοση 1 για τον SQL Server 2014 /en-us/help/2931693
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Λύση
Για να επιλύσετε αυτό το ζήτημα, μετατρέψτε ρητά σε έναν υποστηριζόμενο τύπο ημερομηνίας/ώρας .
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".