MAXTRANSFERSIZE 및 CHECKSUM을 사용하는 경우 TDE 사용 데이터베이스를 복원 할 수 없습니다


10

업데이트 : @AmitBanerjee -Microsoft SQL Server 제품 그룹의 수석 프로그램 관리자는 MS가 결함 으로 문제를 조사 할 것이라고 확인했습니다 .

TDE를 활성화하고 MAXTRANSFERSIZE> 65536을 사용하는 SQL Server 2016에서 백업을 복원하는 데 문제가있는 사람 이 있습니까 (내 경우에는 TDE 데이터베이스를 압축 할 수 있도록 65537을 선택했습니다 ) CHECKSUM.

아래는 재현입니다 :

--- create database 
create database test_restore
go
-- create table
create table test_kin (fname char(10))
go
-- Enable TDE 

use master
GO
CREATE CERTIFICATE test_restore WITH SUBJECT = 'test_restore_cert'
GO
SELECT name, pvt_key_encryption_type_desc, * FROM sys.certificates WHERE name = 'test_restore'
GO
use test_restore
go
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE test_restore
GO 
alter database test_restore set encryption ON

전체 사본 만 백업하십시오. 두 번하십시오.

backup database test_restore 
to disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak' -- change as per your location !!
with init, stats =10  -- overwrite ..using INIT !!
, maxtransfersize = 65537
, compression
,CHECKSUM

이제는 verifyonly...

restore verifyonly from disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak'

에러 메시지 :

메시지 3241, 수준 16, 상태 40, 줄 11 장치 'D : \ temporary-short-term \\ test_restore_KIN_test_restore_1.bak'의 미디어 제품군이 잘못 구성되었습니다. SQL Server는이 미디어 제품군을 처리 할 수 ​​없습니다. 메시지 3013, 수준 16, 상태 1, 줄 11 VERIFY DATABASE가 비정상적으로 종료됩니다.

다른 조합으로 결과 (1 = ON, 0 = OFF) :

+-------------------------+-------------+----------+--------+
| MAXTRANSFERSIZE (65537) | COMPRESSION | CHECKSUM | RESULT |
+-------------------------+-------------+----------+--------+
|                       1 |           1 |        1 | FAIL   |
|                       1 |           1 |        0 | PASS   |
|                       1 |           0 |        1 | FAIL   |
|                       0 |           0 |        0 | PASS   |
|                       0 |           1 |        1 | PASS   |
|                       0 |           1 |        0 | PASS   |
+-------------------------+-------------+----------+--------+

이 문제는 다음에서 발생합니다.

Microsoft SQL Server 2016 (RTM-CU1) (KB3164674)-13.0.2149.0 (X64) 2016 년 7 월 11 일 22:05:22 저작권 (c) Windows Server 2012 R2 Standard 6.3의 Microsoft Corporation Enterprise Edition (64 비트) (빌드 9600 :)

답변:


6

문제를 재현 할 수있었습니다.

추가 FORMAT받는 BACKUP명령은 나를 위해 그것을 해결했다.

구체적인 문서를 찾을 수는 없지만 이것이 새로운 미디어 헤더 INITFORMAT생성하는 동안 백업 세트에 기존 미디어 헤더 를 유지 한다는 사실과 관련이 있다고 생각합니다 .

나는 여전히이 문제를 연구하고 있으며 추가 정보를 찾으면이 답변을 업데이트 할 것입니다.


그래,는 FORMAT헤더를 덮어 쓰며 사용할 때 발생하지 않습니다 FORMAT. INIT MAXTRANSFERSIZECHECKSUM함께 사용할 때 백업 헤더 (또는 전체 백업)가 손상되는 이유는 여전히 미스터리 입니다. 이것은 더 낮은 버전에서는 발생하지 않았지만 더 낮은 버전에서는 발생하지 않았습니다 MAXTRANSFERSIZE. 답변 주셔서 감사합니다. 누군가 더 많은 정보를 가지고 있다면 이것을 열어 두십시오.
Kin Shah

3

다음은 KB 4032200으로 해결 된 것 같습니다.

해당 항목에서 :

조짐

Microsoft SQL Server 2016의 데이터베이스에 대해 TDE (투명한 데이터 암호화)를 사용한다고 가정 합니다. 및 옵션 BACKUP DATABASE이 모두 지정된 T-SQL 문을 사용하여 데이터베이스를 백업하려고 합니다. 이 시나리오에서는 기존 백업 파일을 새 백업 파일로 덮어 쓰고 새 백업 파일이 압축되지 않은 것을 알 수 있습니다.COMPRESSIONINIT

해결

이 문제는 다음 SQL Server 누적 업데이트에서 해결되었습니다.


1

이것은 잠재적으로 귀하의 질문에 언급 한 블로그 게시물 이 나중에 참조하도록 업데이트 된 것과 동일한 문제 인 것으로 보입니다 .

2017 년 4 월 6 일 업데이트

최근 SQL Server 2016에서 TDE 및 백업 압축 사용과 관련된 몇 가지 문제가 발견되었습니다. 문제를 해결하는 동안 알려진 문제가 발생하지 않도록하는 데 도움이되는 몇 가지 팁이 있습니다.

  • 현재 TDE 및 백업 압축과 함께 스트라이프 백업을 사용하지 않는 것이 좋습니다

  • 데이터베이스에 4GB보다 큰 VLF (가상 로그 파일)가있는 경우 로그 백업에 TDE와 함께 백업 압축을 사용하지 마십시오. VLF가 무엇인지 모르는 경우 여기 에서 시작 하십시오 .

  • TDE 및 백업 압축에 대해 작업 할 때는 지금 WITH INIT을 사용하지 마십시오. 대신 지금은 WITH FORMAT을 사용할 수 있습니다.

SQL 엔지니어링은 SQL Server 2016에서 이러한 문제를 해결하기 위해 노력하고 있습니다. 공유 할 추가 정보가 있으면이 블로그 게시물을 다시 한 번 업데이트합니다.

그럼에도 불구하고 블로그 게시물은 이후 추가 정보로 업데이트되지 않았습니다.

그러나 KB 4019893에서도이 문제를 해결할 수 있습니다.

해당 KB 기사에보고 된 오류 메시지는보고하는 오류 메시지와 다르지만 기여 요인은 매우 비슷하게 들립니다. SQL Server 2016 SP1 CU3에는 핫픽스 목록에 나와 있는 것처럼 수정 프로그램이 처음 포함되었습니다 . 그러나 모든 상황에서 문제가 해결되지 않았다는 보고 가있었습니다.

SQL Server 2016 SP1 CU4 에는 또한 이 업데이트에 대한 (아마도 업데이트 된) 수정 프로그램이 포함 되어 있으며 KB 4019893 은 문제가 해결 된 버전으로 SP1 CU4를 표시하도록 업데이트되었습니다.

불행히도 SP1 CU4의 수정조차도 그 문제를 완전히 해결하지 못한다는 것을 본인의 경험으로 확인할 수 있습니다. 현재 COMPRESSION( MAXTRANSFERSIZE64KB 이상) 및를 사용할 때 SP1 CU4에서도 지속적으로 손상된 백업을 생성하는 하나의 TDE 사용 데이터베이스가 있습니다 CHECKSUM. 또한이 환경에는 수십 개의 다른 TDE 가능 데이터베이스가 있는데,이 설정에서 스키마가 거의 동일하지만 더 작은 데이터 세트를 가진 데이터베이스를 포함하여 해당 설정에서 손상된 백업 을 일관되게 생성 하지 않습니다 . 이것은 Microsoft가 실제로이 문제를 일으킬 수있는 시나리오를 없애버 렸지만 아직 모두 해결하지는 않았 음을 나타냅니다.

FORMAT다른 답변과 SQLCAT 블로그 게시물 에서 참조 된 것처럼이 문제를 해결하기 위해 아직 사용하지 않았지만 시도 할 수 있으면 여기에서 업데이트를 제공하고 문제를 해결합니다. 내가 가지고있는 하나의 데이터베이스는 불행히도 다소 큰 (1TB) 크기이며 사용 가능한 추가 저장 공간이 적어도 (최소한 규모로) 부족한 Development / QA 클러스터에 상주 하므로이의 변형 테스트는 논리적으로 도전적이고 시간 소모적 인 것으로 입증되었습니다.


이 문제는 여전히 SQL 2017에 존재합니다.
swaroopa는
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.