Simptome
Să presupunem că utilizați Microsoft SQL Server 2012, 2014 sau 2016. Atunci când faceți backup unei baze de date la URL-ul serviciului de stocare blob Microsoft Azure, operațiunea poate să nu reușească și veți primi următoarele mesaje de eroare atât în partea client, cât și în Jurnalul de erori SQL Server.
Eroare client SQL Server
MSG 3271, nivel 16, stat 1, linie LineNumber A apărut o eroare I/O nerecuperabilă la fișierul "https://<BlobStorageServerName>. blob.core.windows.net/sqlbackup/<DB_Backup_Name. bak>" backup la URL a primit o excepție de la punctul final la distanță. Mesaj de excepție: conexiunea subiacentă a fost închisă: s-a produs o eroare neașteptată la primire. MSG 3013, nivel 16, stat 1, linie LineNumber BAZA de date BACKUP se încheie anormal.
Jurnal de erori 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.
Această eroare apare dacă serverul client enabled Transport Layer Security (TLS) Protocol versiunea 1,2 cu următorul registry.
Nume cheie de registry:
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \ client Valoarea 0 Nume: activat Type: REG_DWORD Date: 0x1
Rezolvare
Această problemă este remediată în următoarele actualizări cumulative pentru SQL Server 2014 și 2016:
Actualizarea cumulativă 7 pentru SQL Server 2016 RTM
Fiecare nouă actualizare cumulativă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Cea mai recentă actualizare cumulativă pentru SQL Server 2016
Cea mai recentă actualizare cumulativă pentru SQL Server 2014
Soluție pentru SQL Server 2012
Această problemă se întâmplă dacă .NET Framework instalat are o preferință pentru TLS 1,0, deși acceptă TLS 1,2.
Nu există nicio remediere disponibilă pentru SQL Server 2012. Pentru a evita această problemă pentru SQL Server 2012 pentru a activa criptografia puternică, puteți face următoarele:
-
Copierea de rezervă a registry
-
Deschideți Registry Editor și navigați la următoarele subchei de registry: HKLM\software\Wow6432Node\Microsoft.NETFramework\ și HKLM\software\microsoft.NETFramework\
-
Sub fiecare dintre aceste taste, subcheile numerelor de versiune (cum ar fi v 4.5, v 4.5.1) există. Adăugați o valoare DWORD denumită SchUseStrongCrypto cu valoarea 1 pentru fiecare versiune.
-
Sub HKLM\Software\Microsoft.NetFramework, numele de cheie nu trebuie să fie exact 4,5 sau 4.5.1. Majoritatea vor începe de la v 2.0 XXX, v 3.0 xxx și v 4.0 xxx. Valoarea DWORD denumită ' SchUseStrongCrypto ' cu valoarea 1 ar trebui să fie adăugată pentru toate versiunile disponibile.
-
Reporniți computerul SQL Server.
NotăDe asemenea, puteți încerca să instalați .NET Framework 4,8. În mod implicit, .NET Framework 4,7 și versiunile mai recente sunt configurate să utilizeze TLS 1,2 și permit conexiuni utilizând TLS 1,1 sau TLS 1,0.
Referințe
Aflați despre terminologiape care o utilizează Microsoft pentru a descrie actualizările de software.
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.