使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

症状

假设您使用的是 Microsoft SQL Server 2012、2014或2016。 将数据库备份到 Microsoft Azure Blob 存储服务 URL 时,操作可能会失败,并且你将在客户端和 SQL Server 错误日志中收到以下错误消息。

SQL Server 客户端错误

消息3271、级别16、状态1、行 LineNumber 文件 "https://" 上出现不可恢复的 i/o 错误:> blob.core.windows.net/sqlbackup/<DB_Backup_Name 的 <> "备份到 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.

如果你的客户端服务器通过以下注册表启用了传输层安全(TLS)协议版本1.2,则会发生此错误。

注册表项名称: 

HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \ 客户端 值0 名称:已启用 类型: REG_DWORD 数据:0x1

解决方案

在 SQL Server 2014 和2016的以下累积更新中修复了此问题:

SQL Server 2016 RTM 的累积更新7

SQL Server 2016 SP1 的累积更新4

SQL Server 2014 SP2 的累积更新5

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL Server 的最新累积更新:

SQL Server 2016 的最新累计更新

SQL Server 2014 的最新累积更新

 

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)存在。 为每个版本添加一个名为 SchUseStrongCrypto 的 DWORD 值,值为 1

  • 在 "HKLM\Software\Microsoft.NetFramework" 下,密钥名称不必正好是4.5 或4.5.1。 大多数情况下,它们将从 v XXX xxx,v 3.0 xxx v 4.0 xxx开始。 应为所有可用版本添加值为1的名为 "SchUseStrongCrypto" 的 DWORD 值。

  • 重新启动 SQL Server 计算机。

提示您也可以尝试安装 .Net Framework 4.8。 默认情况下,.NET Framework 4.7 和更高版本配置为使用 TLS 1.2 并允许使用 TLS 1.1 或 TLS 1.0 的连接。

参考

了解 Microsoft 用于描述软件更新的 术语

状态

Microsoft 已经确认这是一个列于“适用范围”部分的 Microsoft 产品问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×