Simptomi
Pretpostavimo da koristite Microsoft SQL Server 2012, 2014 ili 2016. Kada napravite rezervnu kopiju baze podataka na URL adresi Microsoft Azure Blob usluge skladištenja, operacija može da ne uspe i dobićete sledeće poruke o greškama kako na strani klijenta, tako i u evidenciji grešaka sistema SQL Server.
Greška KLIJENTA SQL servera
Msg 3271, nivo 16, država 1, broj linije U datoteci "https://<BlobStorageServerName>.blob.core.windows.net/sqlbackup/<DB_Backup_Name.bak>" rezervna kopija na URL adresu dobila je izuzetak od udaljene krajnje tačke. Poruka o izuzetku: Osnovna veza je prekinuta: došlo je do neočekivane greške prilikom prijema. Msg 3013, nivo 16, država 1, broj linije BACKUP DATABASE se nepravilno prekida.
Evidencija grešaka SQL servera
<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.
Do ove greške dolazi ako je vaš klijentski server omogućio Transport Layer Security (TLS) protokol verzije 1.2 sa sledećim registratorom.
Ime ključa registratora:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client Vrednost 0 Ime: omogućeno Tip: REG_DWORD Podaci: 0x1
Rešenje
Ovaj problem je rešen u sledećim kumulativnim ispravkama za SQL Server 2014 i 2016:
Kumulativna ispravka 7 za SQL Server 2016 RTM
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Zaobilazno rešenje za SQL Server 2012
Do ovog problema može doći ako instalirani .Net Framework ima željenu opciju za TLS 1.0 iako podržava TLS 1.2.
Nema dostupne ispravke za SQL Server 2012. Da biste zaobilazno objavili ovaj problem za SQL Server 2012 da biste omogućili jaku šifrovanje, možete da uradite sledeće:
-
Pravljenje rezervne kopije registratora
-
Otvorite alatku "Uređivač registratora" i dođite do sledećih potključeva registratora: HKLM\software\Wow6432Node\Microsoft.NETFramework\ i HKLM\software\microsoft.NETFramework\
-
Ispod svakog od ovih tastera postoje potključevi brojevi verzija (kao v4.5, v4.5.1). Dodajte DWORD vrednost pod imenom SchUseStrongCrypto sa vrednošću1 za svaku verziju.
-
U okviru HKLM\Software\Microsoft.NetFramework imena ključeva ne moraju biti tačno 4,5 ili 4,5.1. Uglavnom će početi od v2.0XXX, v3.0XXX i v4.0XXX. DWORD vrednost pod imenom 'SchUseStrongCrypto' sa vrednošću 1 treba dodati za sve dostupne verzije.
-
Ponovo pokrenite SQL Server računar.
Beleške:Takođe možete pokušati da instalirate .Net Framework 4.8. Podrazumevano, .NET Framework 4.7 i novije verzije su konfigurisane da koriste TLS 1.2 i dozvoljavaju veze pomoću TLS 1.1 ili TLS 1.0.
Reference
Saznajte više o terminologijikoju Microsoft koristi za opisivanje softverskih ispravki.
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".