Symptom
Anta att du använder Microsoft SQL Server 2012, 2014 eller 2016. När du säkerhetskopierar en databas till URL-adressen för Microsoft Azure Blob Storage-tjänsten kan åtgärden Miss lyckas och du får följande fel meddelanden både på klient sidan och i SQL Server-felloggen.
Klient fel i SQL Server
Meddelande 3271, nivå 16, State 1, Line LineNumber Ett oåterkalleligt I/O-fel inträffade i filen "https://<BlobStorageServerName>. blob.core.windows.net/sqlbackup/<DB_Backup_Name. bak>" säkerhets kopiering till URL mottog ett undantag från Fjärrslutpunkten. Undantags meddelande: den underliggande anslutningen stängdes: ett oväntat fel uppstod vid mottagningen. Meddelande 3013, nivå 16, State 1, Line LineNumber Säkerhets kopierings databasen avslutas onormalt.
SQL Server-fellogg
<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.
Det här felet uppstår om klient servern har aktiverat TLS-protokollet ( Transport Layer Security) version 1,2 med följande register.
Namn på register nyckel:
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \ klient Värde 0 Namn: aktiverat Skriv: REG_DWORD Data: 0x1
Lösning
Problemet är åtgärdat i följande kumulativa uppdateringar för SQL Server 2014 och 2016:
Kumulativ uppdatering 7 för SQL Server 2016 RTM
Varje ny kumulativ uppdatering för SQL Server innehåller alla snabb korrigeringar och alla säkerhets korrigeringar som ingick i den föregående kumulativa uppdateringen. Kolla in de senaste kumulativa uppdateringarna för SQL Server:
Lösning för SQL Server 2012
Det här problemet uppstår om det installerade .NET Framework har preferenser för TLS 1,0 trots att det stöder TLS 1,2.
Det finns ingen korrigering för SQL Server 2012. För att lösa det här problemet för SQL Server 2012 för att aktivera stark kryptering kan du göra följande:
-
Säkerhetskopiera registret
-
Öppna Registereditorn och navigera till följande register nycklar: HKLM\software\Wow6432Node\Microsoft.NETFramework\ och HKLM\software\microsoft.NETFramework\
-
Under de här tangenterna finns under nycklar versions nummer (som v 4.5, v 4.5.1). Lägg till ett DWORD-värde med namnet SchUseStrongCrypto med värdet 1 för varje version.
-
Under HKLM\Software\Microsoft.NetFramework behöver inte nycklar namnen vara exakt 4,5 eller 4.5.1. I de flesta kommer de att börja från v 2.0 XXX, v 3.0 XXX och v 4.0 XXX. DWORD-värdet med namnet "SchUseStrongCrypto" och värdet 1 ska läggas till för alla tillgängliga versioner.
-
Starta om SQL Server-datorn.
FotnotDu kan också prova att installera .NET Framework 4,8. .NET Framework 4,7 och senare versioner är som standard konfigurerade för användning av TLS 1,2 och tillåter anslutningar med TLS 1,1 eller TLS 1,0.
Referenser
Lär dig mer om terminologinsom Microsoft använder för att beskriva program varu uppdateringar.
Status
Microsoft har bekräftat att det här är ett problem i Microsoft-produkterna som nämns i "gäller".