徵狀
假設您使用的是 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 累計更新都包含所有的修正程式,以及前一個累積更新中所包含的所有安全性修正程式。 查看 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)都存在。 針對每個版本,新增一個名為 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 產品確實有上述問題。