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

徵狀

假設您使用的是 Microsoft SQL Server 2012、2014或2016。 當您將資料庫備份到 Microsoft Azure Blob 儲存服務 URL 時,該作業可能失敗, 而且您會在用戶端和 SQL Server 錯誤記錄中收到下列錯誤訊息。

SQL Server 用戶端錯誤

Msg 3271、Level 16、State 1、Line LineNumber 在檔案「HTTPs://<> BlobStorageServerName 上發生無法恢復的 i/o 錯誤。 blob.core.windows.net/sqlbackup/<DB_Backup_Name .bak> "備份到 URL 收到來自遠端端點的例外狀況。 例外狀況訊息:基礎連線已關閉:接收時發生意外的錯誤。 Msg 3013、Level 16、State 1、Line 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 名稱: Enabled 類型: 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 2.0 xxx、v 3.0 xxx v 4.0 xxx開始。 必須針對所有可用的版本,新增名為「SchUseStrongCrypto」的 DWORD 值(值為1)。

  • 重新開機 SQL Server 電腦。

您也可以嘗試安裝 .Net Framework 4.8。 根據預設,.NET Framework 4.7 及更新版本會設定為使用 TLS 1.2,並允許使用 TLS 1.1 或 TLS 1.0 的連線。

參考

瞭解 Microsoft 用於描述軟體更新的 詞彙

狀態

Microsoft 已確認<適用於>一節所列的 Microsoft 產品確實有上述問題。

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。