Sintomas

Suponha que você esteja usando o Microsoft SQL Server 2012, o 2014 ou o 2016. Ao fazer backup de um banco de dados para a URL do serviço de armazenamento de blob do Microsoft Azure, a operação pode falhar e você receberá as seguintes mensagens de erro no lado do cliente e no log de erros do SQL Server.

Erro de cliente do SQL Server

MSG 3271, nível 16, estado 1, line LineNumber Ocorreu um erro de e/s não recuperável no arquivo "https://<BlobStorageServerName>. blob.core.windows.net/sqlbackup/<DB_Backup_Name. bak>" backup para URL recebeu uma exceção do ponto de extremidade remoto. Mensagem de exceção: a conexão subjacente foi fechada: ocorreu um erro inesperado em um recebimento. MSG 3013, nível 16, estado 1, line LineNumber O banco de dados de BACKUP está terminando anormalmente.

Log de erros do 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.

Esse erro ocorre se seu servidor cliente ativou a versão 1,2 do protocolo TLS ( Transport Layer Security) com o registro a seguir.

Nome da chave do registro: 

HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \ cliente Valor 0 Nome: habilitado Tipo: REG_DWORD Dados: 0x1

Resolução

Esse problema foi corrigido nas seguintes atualizações cumulativas do SQL Server 2014 e 2016:

Atualização cumulativa 7 para SQL Server 2016 RTM

Atualização cumulativa 4 para SQL Server 2016 SP1

Atualização cumulativa 5 para SQL Server 2014 SP2

Cada nova atualização cumulativa do SQL Server contém todos os hotfixes e todas as correções de segurança incluídas na atualização cumulativa anterior. Confira as atualizações cumulativas mais recentes do SQL Server:

Atualização cumulativa mais recente do SQL Server 2016

Atualização cumulativa mais recente do SQL Server 2014

 

Solução alternativa para o SQL Server 2012

Esse problema ocorrerá se o .NET Framework instalado tiver uma preferência para TLS 1,0, embora ofereça suporte a TLS 1,2. 

Não há correção disponível para o SQL Server 2012. Para solucionar esse problema do SQL Server 2012 para habilitar a criptografia forte, você pode fazer o seguinte: 

  • Fazer backup do registro

  • Abra o editor do registro e navegue até as seguintes subchaves do registro: HKLM\software\Wow6432Node\Microsoft.NETFramework\ e HKLM\software\microsoft.NETFramework\

  • Em cada uma dessas teclas, subchaves os números de versão (como v 4,5, v 4.5.1) existem. Adicione um valor DWORD chamado SchUseStrongCrypto com o valor 1 para cada versão.

  • Em HKLM\Software\Microsoft.NetFramework, os nomes de chave não precisam ser exatamente 4,5 ou 4.5.1. Principalmente, eles começarão do v 2.0 xxx, do v 3.0 xxx e do v 4.0 xxx. O valor DWORD chamado ' SchUseStrongCrypto ' com o valor 1 deve ser adicionado a todas as versões disponíveis.

  • Reinicie a máquina do SQL Server.

Observação: Você também pode tentar instalar o .NET Framework 4,8. Por padrão, o .NET Framework 4,7 e versões posteriores são configurados para usar TLS 1,2 e permitir conexões usando TLS 1,1 ou TLS 1,0.

Referências

Saiba mais sobre a terminologiaque a Microsoft usa para descrever atualizações de software.

Status

A Microsoft confirmou que este é um problema nos produtos Microsoft listados na seção "Aplicável a".

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Microsoft Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×