KB4046918 - ΕΠΙΔΙΌΡΘΩΣΗ: Η εκτέλεση αποτυγχάνει όταν μια συνάρτηση SQL CLR καλεί προτάσεις Transact-SQL μέσω κλήσεων απομίμησης στο SQL Server 2016 και 2017

Ισχύει για
SQL Server 2017 on Windows (all editions) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use)

Συμπτώματα

Εξετάστε το ακόλουθο σενάριο:

  • Έχετε μια συνάρτηση SQL CLR στο SQL Server 2016 και 2017.
  • Η συνάρτηση CLR καλεί προτάσεις Transact-SQL μέσω κλήσεων απομίμησης, όπως καλώντας την πρόταση EXECUTE AS.

Σε αυτό το σενάριο, η εκτέλεση αποτυγχάνει και λαμβάνετε το ακόλουθο μήνυμα λάθους:

Σημείωση

  • Msg 6522, Επίπεδο 16, Κατάσταση 1, PrcedureName διαδικασίας, Γραμμή 0 [ Batch Start Line LineNumber]
  • Παρουσιάστηκε ένα .NET Framework σφάλμα κατά την εκτέλεση ρουτίνας ή συγκεντρωτικών αποτελεσμάτων που ορίζονται από τον χρήστη "ProcedureName":
  • System.Data.SqlClient.SqlException: Η αρχή διακομιστή "LoginName" δεν μπορεί να αποκτήσει πρόσβαση στη βάση δεδομένων "DatabaseName" στο τρέχον περιβάλλον ασφαλείας.

Επίλυση

Αυτή η ενημέρωση κώδικα περιλαμβάνεται στην αθροιστική ενημερωμένη έκδοση 1 για SQL Server 2017.

Πληροφορίες Service Pack για το SQL Server 2016

Αυτό το πρόβλημα διορθώνεται στο ακόλουθο service pack για SQL Server:

Service Pack 2 για SQL Server 2016

Σχετικά με τις εκδόσεις του SQL Server 2017

Κάθε νέα έκδοση για το SQL Server 2017 περιέχει όλες τις επείγουσες επιδιορθώσεις και τις επιδιορθώσεις ασφαλείας που υπήρχαν στην προηγούμενη δομή. Συνιστούμε να εγκαταστήσετε την πιο πρόσφατη έκδοση για το SQL Server 2017.

Σχετικά με τα service pack για SQL Server:

Τα service pack είναι αθροιστικά. Κάθε νέο service pack περιέχει όλες τις ενημερώσεις κώδικα που βρίσκονται σε προηγούμενα service pack, μαζί με τυχόν νέες ενημερώσεις κώδικα. Η σύσταση μας είναι να εφαρμόσετε το πιο πρόσφατο service pack και την πιο πρόσφατη αθροιστική ενημέρωση για αυτό το service pack. Δεν χρειάζεται να εγκαταστήσετε ένα προηγούμενο service pack πριν να εγκαταστήσετε το πιο πρόσφατο service pack. Χρησιμοποιήστε τον Πίνακα 1 στο παρακάτω άρθρο για να βρείτε περισσότερες πληροφορίες σχετικά με το πιο πρόσφατο service pack και την πιο πρόσφατη αθροιστική ενημέρωση.

Πώς μπορείτε να καθορίσετε την έκδοση, την έκδοση και το επίπεδο ενημέρωσης του SQL Server και των στοιχείων του

Κατάσταση

Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".

Παραπομπές

Ενημερωθείτε για την ορολογία που χρησιμοποιεί η Microsoft για να περιγράφει τις ενημερώσεις λογισμικού.