Проблемы
Предположим, что вы используете Microsoft SQL Server 2012, 2014 или 2016. При резервном копировании базы данных в URL-адрес службы хранилища больших двоичных объектов Microsoft Azure может произойти сбой, и на стороне клиента и в журнале ошибок сервера SQL Server будут отображаться указанные ниже сообщения об ошибках.
Ошибка клиента SQL Server
Сообщение 3271, уровень 16, состояние 1, строка LineNumber Произошла неустранимая ошибка ввода-вывода в файле "https://<BlobStorageServerName>. blob.core.windows.net/sqlbackup/<DB_Backup_Name. bak>" резервное копирование по URL-адресу получило исключение из удаленной конечной точки. Сообщение об исключении: основное соединение было закрыто: произошла непредвиденная ошибка во время приема. Сообщение 3013, уровень 16, состояние 1, строка LineNumber РЕЗЕРВная копия базы данных аварийно завершает работу.
Журнал ошибок сервера 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.
Эта ошибка возникает в том случае, если Transport Layer Securityпротокол TLS версии 1,2,установленной на сервере клиентского доступа, имеет следующий реестр.
Имя раздела реестра:
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \ клиент Значение 0 Имя: включено Тип: REG_DWORD Данные: 0x1
Решение
Эта проблема исправлена в перечисленных ниже накопительных обновлениях для SQL Server 2014 и 2016.
Накопительное обновление 7 для SQL Server 2016 RTM
Накопительное обновление 4 для SQL Server 2016 с пакетом обновления 1 (SP1)
Накопительное обновление 5 для SQL Server 2014 с пакетом обновления 2 (SP2)
Все новые накопительные обновления для SQL Server содержат все исправления и все исправления для системы безопасности, которые были включены в предыдущий накопительный пакет обновления. Ознакомьтесь с самыми последними накопительными обновлениями для SQL Server.
Временное решение для SQL Server 2012
Эта проблема возникает в том случае, если установленная платформа .NET Framework имеет приоритет для TLS 1,0, хотя она поддерживает TLS 1,2.
Для SQL Server 2012 не предусмотрено исправление. Чтобы устранить эту проблему в SQL Server 2012 для включения усиленной криптографической возможности, выполните указанные ниже действия.
-
Создание резервной копии реестра
-
Откройте редактор реестра и перейдите к следующим подразделам реестра: HKLM\software\Wow6432Node\Microsoft.NETFramework\ и HKLM\software\microsoft.NETFramework\
-
В каждом из этих разделов подключают номера версий (например, v 4.5, v 4.5.1). Добавьте параметр DWORD с именем SchUseStrongCrypto и значением 1 для каждой версии.
-
В разделе HKLM\Software\Microsoft.NetFramework имена ключей не обязательно должны быть ровно 4,5 или 4.5.1. В основном они будут начинаться с v 2.0 XXX, v 3.0 XXX и v 4.0 XXX. Параметр DWORD с именем "SchUseStrongCrypto" и значением 1 следует добавить для всех доступных версий.
-
Перезагрузите компьютер SQL Server.
Примечание. Вы также можете попытаться установить .NET Framework 4,8. По умолчанию .NET Framework 4,7 и более поздние версии настроены на использование TLS 1,2 и разрешают подключения с помощью TLS 1,1 или TLS 1,0.
Ссылки
Ознакомьтесь с терминологией, которую корпорация Майкрософт использует для описания обновлений программного обеспечения.
Статус
Корпорация Майкрософт подтверждает наличие этой проблемы в своих продуктах, которые перечислены в разделе "Применяется к".