증상
Microsoft SQL Server 2012, 2014 또는 2016을 사용 하 고 있다고 가정 합니다. Microsoft Azure Blob 저장소 서비스 URL에 데이터베이스를 백업 하면 작업이 실패할 수 있으며 클라이언트 쪽 및 SQL Server 오류 로그에 다음과 같은 오류 메시지가 표시 됩니다.
SQL Server 클라이언트 오류
메시지 3271, 수준 16, 상태 1, 줄 LineNumber "Https://<BlobStorageServerName>에서 nonrecoverable I/o 오류가 발생 했습니다. 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.
이 오류는 클라이언트 서버가 다음 레지스트리를 사용 하 여 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에 대 한 최신 누적 업데이트를 확인 하세요.
SQL Server 2012에 대 한 해결 방법
이 문제는 설치 된 .Net Framework에서 tls 1.2를 지원 하지만 TLS 1.0에 대 한 기본 설정이 있는 경우에 발생 합니다.
SQL Server 2012에는 사용할 수 있는 해결 방법이 없습니다. SQL Server 2012에서 강력한 암호화를 사용 하도록 설정 하기 위해이 문제를 해결 하려면 다음을 수행 하면 됩니다.
-
레지스트리 백업
-
레지스트리 편집기를 열고 다음 레지스트리 하위 키로 이동 합니다. HKLM\software\Wow6432Node\Microsoft.NETFramework\ 및 HKLM\software\microsoft.NETFramework\
-
이러한 키 각각 아래에 하위 키가 있는 버전 번호 (예: v 4.5, v 4.5.1)가 있습니다. 각 버전에 대해 값 1 을 사용 하 여 SchUseStrongCrypto 이라는 DWORD 값을 추가 합니다.
-
HKLM\Software\Microsoft.NetFramework에서 키 이름이 정확히 4.5 또는 4.5.1 일 필요는 없습니다. 대부분의 경우 v 2.0 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 제품에서 이 문제를 확인했습니다.