Sintomi
Si supponga di usare Microsoft SQL Server 2012, 2014 o 2016. Quando si effettua il backup di un database in un URL del servizio di archiviazione BLOB di Microsoft Azure, l'operazione potrebbe non riuscire e verranno visualizzati i messaggi di errore seguenti sia sul lato client che nel log degli errori di SQL Server.
Errore client di SQL Server
Msg 3271, livello 16, stato 1, riga lineNumber Si è verificato un errore di I/O non recuperabile nel file "https://<BlobStorageServerName>. blob.core.windows.net/sqlbackup/<DB_Backup_Name. bak>" il backup in URL ha ricevuto un'eccezione dall'endpoint remoto. Messaggio di eccezione: la connessione sottostante è stata chiusa: si è verificato un errore imprevisto in una ricezione. Msg 3013, livello 16, stato 1, riga lineNumber Il DATABASE di BACKUP viene terminato in modo anomalo.
Log degli errori di 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.
Questo errore si verifica se nel server client è abilitato il protocollo TLS ( Transport Layer Security) versione 1,2 con il registro di sistema seguente.
Nome chiave del registro di sistema:
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \ client Valore 0 Nome: abilitato Digitare: REG_DWORD Dati: 0x1
Risoluzione
Questo problema è stato risolto negli aggiornamenti cumulativi seguenti per SQL Server 2014 e 2016:
Aggiornamento cumulativo 7 per SQL Server 2016 RTM
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Soluzione alternativa per SQL Server 2012
Questo problema si verifica se .NET Framework installato ha una preferenza per TLS 1,0, anche se supporta TLS 1,2.
Non è disponibile alcuna correzione per SQL Server 2012. Per risolvere questo problema per SQL Server 2012 per abilitare la crittografia avanzata, è possibile eseguire le operazioni seguenti:
-
Eseguire il backup del registro di sistema
-
Aprire l'editor del registro di sistema e passare alle sottochiavi del registro di sistema seguenti: HKLM\software\Wow6432Node\Microsoft.NETFramework\ e HKLM\software\microsoft.NETFramework\
-
In ognuno di questi tasti sono presenti i numeri di versione (ad esempio v 4.5, v 4.5.1). Aggiungere un valore DWORD denominato SchUseStrongCrypto con il valore 1 per ogni versione.
-
In HKLM\Software\Microsoft.NetFramework i nomi di tasti non devono essere esattamente 4,5 o 4.5.1. Prevalentemente inizieranno da v 2.0 xxx, v 3.0 xxx e v 4.0 xxx. Il valore DWORD denominato ' SchUseStrongCrypto ' con il valore 1 deve essere aggiunto per tutte le versioni disponibili.
-
Riavviare il computer SQL Server.
NotaÈ anche possibile provare a installare .NET Framework 4,8. Per impostazione predefinita, .NET Framework 4,7 e versioni successive sono configurate per l'uso di TLS 1,2 e consentono connessioni tramite TLS 1,1 o TLS 1,0.
Riferimenti
Informazioni sulla terminologiautilizzata da Microsoft per descrivere gli aggiornamenti software.
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".