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

Aggiornamento cumulativo 4 per SQL Server 2016 SP1

Aggiornamento cumulativo 5 per SQL Server 2014 SP2

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:

Ultimo aggiornamento cumulativo per SQL Server 2016

Ultimo aggiornamento cumulativo per SQL Server 2014

 

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".

Serve aiuto?

Amplia le tue competenze

Esplora i corsi di formazione >

Ottieni in anticipo le nuove caratteristiche

Partecipa a Microsoft Insider >

Queste informazioni sono risultate utili?

Come valuti la qualità della lingua?
Cosa ha influito sulla tua esperienza?

Grazie per il feedback!

×