Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard

Sintomas

Assuma que está a utilizar o Microsoft SQL Server 2012, 2014 ou 2016. Quando fizer uma cópia de segurança de uma base de dados para o URL do serviço de armazenamento Microsoft Azure Blob, a operação poderá falhar e receberá as seguintes mensagens de erro tanto no lado do cliente como no registo de erros do SQL Server.

Erro do cliente do SQL Server

Msg 3271, Nível 16, Estado 1, LineNumber Um erro de I/O não revalorizado ocorreu no ficheiro "https://<BlobStorageServerName>.blob.core.windows.net/sqlbackup/<DB_Backup_Name.bak>" A cópia de segurança para URL recebeu uma exceção do ponto final remoto. Mensagem de Exceção: A ligação subjacente foi encerrada: Ocorreu um erro inesperado numa receção. Msg 3013, Nível 16, Estado 1, LineNumber A BASE DE DADOS de BACKUP está a terminar de forma anormal.

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

Este erro ocorre se o servidor do cliente ativar a versão 1.2 do protocolo de segurança da camada de transporte(TLS) com o seguinte registo.

Nome da chave do registo: 

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

Resolução

Esta emissão é corrigida nas seguintes atualizações cumulativas para o 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 que foram incluídas com a atualização cumulativa anterior. Confira as últimas atualizações cumulativas do SQL Server:

Última atualização cumulativa para SQL Server 2016

Última atualização cumulativa para SQL Server 2014

 

Solução alternativa para SQL Server 2012

Esta questão acontece se o Quadro .Net instalado tiver uma preferência por TLS 1.0, embora suporte TLS 1.2. 

Não existe nenhuma correção disponível para o SQL Server 2012. Para resolver este problema para o SQL Server 2012 para permitir uma criptografia forte, pode fazer o seguinte: 

  • Faça backup do registo

  • Open Registry Editor, e navegue para as seguintes subkeys de registo: HKLM\software\Wow6432Node\Microsoft.NETFramework\ e HKLM\software\microsoft.NETFramework\

  • Em cada uma destas teclas, existem sub-chave os números da versão (como v4.5, v4.5.1). Adicione um valor DWORD chamado SchUseStrongCrypto com o valor 1 para cada versão.

  • De acordo com hKLM\Software\Microsoft.NetFramework, os nomes-chave não têm de ser exatamente 4.5 ou 4.5.1. A maior parte começará a partir de v2.0XXX, v3.0XXX e v4.0XXX. O valor DWORD denominado 'SchUseStrongCrypto' com valor 1 deve ser adicionado para todas as versões disponíveis.

  • Reinicie a máquina do Servidor SQL.

Nota:Também pode tentar instalar .Net Framework 4.8. Por predefinição, as versões .NET Framework 4.7 e posteriores são configuradas para utilizar TLS 1.2 e permitir ligações utilizando TLS 1.1 ou TLS 1.0.

Referências

Conheça a terminologiaque a Microsoft utiliza para descrever atualizações de software.

Estado

A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.