Συμπτώματα
Ας υποθέσουμε ότι χρησιμοποιείτε τον Microsoft SQL Server 2012, 2014 ή 2016. Κατά τη δημιουργία αντιγράφων ασφαλείας μιας βάσης δεδομένων στη διεύθυνση URL της υπηρεσίας αποθήκευσης αντικειμένων BLOB Azure της Microsoft, η λειτουργία ενδέχεται να αποτύχει και θα λάβετε τα ακόλουθα μηνύματα σφάλματος τόσο στην πλευρά του προγράμματος-πελάτη όσο και στο αρχείο ΚΑΤΑΓΡΑΦΉς σφαλμάτων του SQL Server.
Σφάλμα προγράμματος-πελάτη SQL Server
MSG 3271, επίπεδο 16, κατάσταση 1, LineNumber line Παρουσιάστηκε ένα μη ανακτήσιμο σφάλμα εισόδου/εξόδου στο αρχείο "https://<BlobStorageServerName>. blob.core.windows.net/sqlbackup/<DB_Backup_Name. bak>" το αντίγραφο ασφαλείας της διεύθυνσης URL έλαβε μια εξαίρεση από το απομακρυσμένο τελικό σημείο. Μήνυμα εξαίρεσης: η υποκείμενη σύνδεση έκλεισε: Παρουσιάστηκε μη αναμενόμενο σφάλμα σε μια λήψη. MSG 3013, επίπεδο 16, κατάσταση 1, LineNumber line Η βάση δεδομένων αντιγράφων ασφαλείας τερματίζεται με μη φυσιολογικό τρόπο.
Αρχείο καταγραφής σφαλμάτων του SQL Server
<DateTime> ======== BackupToUrl Initiated =========
<DateTime> Inputs: Backup = True, PageBlob= True, URI = https://<BlobStorageServerName>.blob.core.windows.net/sqlbackup/<DB_Backup_Name.bak>, Acct= lbtesting2096, Key= KeyValue, FORMAT= False, Instance Name = MSSQLSERVER, DBName = <DB_Name> LogPath = C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log
<DateTime> Process Id: 3668
<DateTime> Time for Initialization = 202.7451 ms
<DateTime> BackupToUrl Client is getting configuration from SqlServr
<DateTime> Time for Handshake and VDI config = 31.2507 ms
<DateTime> Time for Get BlobRef = 15.6263 ms
<DateTime> Time for - EXCEPTION Get Fetchattributes = 45364.4979 ms
<DateTime> An exception occurred during communication with Azure Storage, exception information follows
<DateTime> Exception Info: The underlying connection was closed: An unexpected error occurred on a receive.
<DateTime> Stack: at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](StorageCommandBase`1 cmd, IRetryPolicy policy, OperationContext operationContext)
at BackupToUrl.Program.MainInternal(String[] args)
<DateTime> The Active queue had 1 requests until we got a clear error.
Αυτό το σφάλμα παρουσιάζεται εάν ο διακομιστής-πελάτης σας έχει ενεργοποιήσει το πρωτόκολλο Transport Layer Security (TLS) έκδοση 1,2 με το ακόλουθο μητρώο.
Όνομα κλειδιού μητρώου:
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1,2 \ πρόγραμμα-πελάτης Τιμή 0 Όνομα: ενεργοποιημένο Τύπος: REG_DWORD Δεδομένα: 0x1
Επίλυση
Αυτό το πρόβλημα διορθώνεται με τις ακόλουθες αθροιστικές ενημερώσεις για τον SQL Server 2014 και το 2016:
Αθροιστική ενημερωμένη έκδοση 7 για SQL Server 2016 RTM
Κάθε νέα αθροιστική ενημέρωση για τον SQL Server περιέχει όλες τις επείγουσες επιδιορθώσεις και όλες τις επιδιορθώσεις ασφαλείας που συμπεριλήφθηκαν στην προηγούμενη αθροιστική ενημέρωση. Ανάληψη ελέγχου των πιο πρόσφατων αθροιστικών ενημερώσεων για τον SQL Server:
Λύση για τον SQL Server 2012
Αυτό το πρόβλημα συμβαίνει εάν το εγκατεστημένο .NET Framework έχει μια προτίμηση για το TLS 1,0, παρόλο που υποστηρίζει το TLS 1,2.
Δεν υπάρχει διαθέσιμη επιδιόρθωση για τον SQL Server 2012. Για να επιλύσετε αυτό το πρόβλημα για τον SQL Server 2012 για να ενεργοποιήσετε την ισχυρή κρυπτογραφία, μπορείτε να κάνετε τα εξής:
-
Δημιουργία αντιγράφου ασφαλείας του μητρώου
-
Ανοίξτε τον επεξεργαστή μητρώου και μεταβείτε στα ακόλουθα δευτερεύοντα κλειδιά μητρώου: HKLM\software\Wow6432Node\Microsoft.NETFramework\ και HKLM\software\microsoft.NETFramework\
-
Κάτω από κάθε ένα από αυτά τα πλήκτρα, υπάρχουν τα δευτερεύοντα κλειδιά που έχουν οι αριθμοί έκδοσης (όπως v 4.5, v 4.5.1). Προσθέστε μια τιμή DWORD με το όνομα SchUseStrongCrypto με την τιμή 1 για κάθε έκδοση.
-
Στην περιοχή HKLM\Software\Microsoft.NetFramework, τα ονόματα κλειδιών δεν χρειάζεται να είναι ακριβώς 4,5 ή 4.5.1. Κυρίως θα ξεκινήσουν από το v 2.0 XXX, το v 3.0 XXX και το v 4.0 XXX. Η τιμή DWORD με το όνομα "SchUseStrongCrypto" με την τιμή 1 θα πρέπει να προστεθεί για όλες τις διαθέσιμες εκδόσεις.
-
Επανεκκινήστε τον υπολογιστή SQL Server.
ΣημείωσηΜπορείτε επίσης να δοκιμάσετε να εγκαταστήσετε το .NET Framework 4,8. Από προεπιλογή, το .NET Framework 4,7 και οι νεότερες εκδόσεις έχουν ρυθμιστεί ώστε να χρησιμοποιούν το TLS 1,2 και να επιτρέπουν συνδέσεις με τη χρήση TLS 1,1 ή TLS 1,0.
Αναφορές
Μάθετε περισσότερα σχετικά με την ορολογίαπου χρησιμοποιεί η Microsoft για την περιγραφή ενημερώσεων λογισμικού.
Κατάσταση
Η Microsoft έχει επιβεβαιώσει ότι πρόκειται για ένα πρόβλημα στα προϊόντα της Microsoft που παρατίθενται στην ενότητα "ισχύει για".