Συμπτώματα
Κατά την εκκίνηση του Microsoft SQL Server 2016 και 2017, εάν ένας χρήστης προσπαθήσει να συνδεθεί σε μια βάση δεδομένων πριν ξεκινήσει, η περίοδος λειτουργίας χρήστη μπορεί να προκαλέσει την αυτόματη επανεκκίνηση της βάσης δεδομένων. Όταν συμβεί αυτό, εάν η βάση δεδομένων περιέχει έναν FileTable και έχει ενεργοποιημένο το FILESTREAM non_transacted_access , τότε ο κατάλογος FileTable επιπέδου βάσης δεδομένων δεν είναι προσβάσιμος μετά την εκκίνηση της βάσης δεδομένων. Εάν προσπαθήσετε να αποκτήσετε πρόσβαση στο φάκελο μέσω Εξερεύνηση αρχείων, αυτό μπορεί να σημαίνει ότι ο φάκελος δεν είναι διαθέσιμος. Όταν εκτελείτε μια εντολή "dir" από τη γραμμή εντολών, επιστρέφει "Δεν είναι δυνατή η εύρεση του καθορισμένου αρχείου από το σύστημα".
Επιπλέον, ενδέχεται να δείτε τα ακόλουθα σφάλματα στο αρχείο καταγραφής σφαλμάτων που υποδεικνύουν ότι μια περίοδος λειτουργίας χρήστη ενεργοποίησε την αυτόματη εκκίνηση της βάσης δεδομένων:
Ημερομηνία/Ώρα Σφάλμα σύνδεσης: 18456, σοβαρότητα: 14, κατάσταση: 38.
Ημερομηνία/Ώρα Η σύνδεση απέτυχε για το User 'UserName'. Αιτία: Απέτυχε το άνοιγμα της ρητά καθορισμένης βάσης δεδομένων 'DatabaseName'. [ΠΕΛΆΤΗΣ: IPNumber]
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα ζήτημα που αφορά τα προϊόντα της Microsoft που παρατίθενται στην ενότητα "Ισχύει για".
Επίλυση
Αυτό το πρόβλημα διορθώνεται στις ακόλουθες αθροιστικές ενημερώσεις για SQL Server:
- Αθροιστική ενημέρωση 15 για το SQL Server 2017
- Αθροιστική ενημερωμένη έκδοση 6 για SQL Server 2016 SP2
Πληροφορίες σχετικά με τις συγκεντρωτικές ενημερώσεις για SQL Server:
Κάθε νέα αθροιστική ενημερωμένη έκδοση για SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις ενημερώσεις κώδικα ασφαλείας που συμπεριλήφθηκαν με την προηγούμενη αθροιστική ενημερωμένη έκδοση. Δείτε τις πιο πρόσφατες αθροιστικές ενημερώσεις για SQL Server:
- Τελευταία αθροιστική ενημέρωση για το SQL Server 2017
- Τελευταία αθροιστική ενημέρωση για το SQL Server 2016
Λύση
Η λύση για αυτό το πρόβλημα είναι να απενεργοποιήσετε και να ενεργοποιήσετε ξανά το non_transacted_access FILESTREAM της βάσης δεδομένων.
ALTER DATABASE [DatabaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [Όνομα_βάσης δεδομένων] SET FILESTREAM ( NON_TRANSACTED_ACCESS = OFF )
ALTER DATABASE [Όνομα_βάσης δεδομένων] SET FILESTREAM ( NON_TRANSACTED_ACCESS = FULL )
ALTER DATABASE [DatabaseName] SET MULTI_USER WITH ROLLBACK IMMEDIATE
Παραπομπές
Ενημερωθείτε για την ορολογία που χρησιμοποιεί η Microsoft για να περιγράφει τις ενημερώσεις λογισμικού.