Atualização : @AmitBanerjee - Gerente de Programa Sênior do Grupo de Produtos Microsoft SQL Server confirmou que a MS analisará o problema por ser um defeito.
Alguém encontrou um problema ao restaurar backups feitos no SQL Server 2016 com o TDE ativado e usando MAXTRANSFERSIZE
> 65536 (no meu caso, eu escolhi 65537 para compactar o banco de dados TDE ) e CHECKSUM
?
Abaixo está uma reprodução:
--- 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
Faça backup completo da cópia completa .. faça-o duas vezes ..
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
Agora faça um verifyonly
...
restore verifyonly from disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak'
Mensagem de erro :
Mensagem 3241, nível 16, estado 40, linha 11 A família de mídia no dispositivo 'D: \ temporário-curto-prazo \ test_restore_KIN_test_restore_1.bak' está formada incorretamente. O SQL Server não pode processar esta família de mídia. A mensagem 3013, nível 16, estado 1, linha 11 VERIFY DATABASE está sendo finalizada de maneira anormal.
Resultados (1 = ON, 0 = OFF) com diferentes combinações:
+-------------------------+-------------+----------+--------+
| 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 |
+-------------------------+-------------+----------+--------+
O problema ocorre em:
Microsoft SQL Server 2016 (RTM-CU1) (KB3164674) - 13.0.2149.0 (X64) 11 de julho de 2016 22:05:22 Copyright (c) Microsoft Corporation Enterprise Edition (64 bits) no Windows Server 2012 R2 Standard 6.3 (Build 9600 :)
FORMAT
cabeçalho também sobrescreverá e isso não acontece quando o usoFORMAT
. Ainda assim, é um mistério o motivo pelo qual o cabeçalho do backup (ou o backup como um todo) é corrompido ao usarMAXTRANSFERSIZE
eCHECKSUM
junto com o INIT. Isso nunca aconteceu nas versões inferiores, mas naquelas não haviaMAXTRANSFERSIZE
. Obrigado pela sua resposta. Manterá isso aberto se alguém tiver mais informações.Parece que isso pode ter sido resolvido com o KB 4032200:
A partir dessa entrada:
fonte
Parece ser o mesmo problema em que a postagem do blog que você mencionou na sua pergunta foi atualizada posteriormente para se referir a:
Apesar dessa nota, a postagem do blog não foi atualizada com mais informações desde então.
No entanto, o KB 4019893 também pode solucionar isso:
Embora a mensagem de erro relatada nesse artigo da Base de Dados seja diferente da que você está relatando, os fatores contribuintes parecem muito semelhantes. O SQL Server 2016 SP1 CU3 incluiu primeiro a correção, como visto em sua lista de hotfix . No entanto, houve relatos de que ele não resolveu o problema em todas as situações.
O SQL Server 2016 SP1 CU4 também inclui uma correção (presumivelmente atualizada) para isso , e o KB 4019893 foi atualizado para mostrar o SP1 CU4 como a versão em que o problema foi corrigido.
Infelizmente, posso confirmar por minha própria experiência que mesmo a correção no SP1 CU4 não resolve completamente esse problema. Atualmente, tenho um banco de dados habilitado para TDE que ainda produz backups corrompidos consistentemente, mesmo no SP1 CU4 ao usar
COMPRESSION
(viaMAXTRANSFERSIZE
> 64 KB) eCHECKSUM
. Também tenho várias dezenas de outros bancos de dados habilitados para TDE neste ambiente que consistentemente não produzem backups corrompidos nessas configurações, incluindo um que é uma variação do que ocorre, com um esquema quase idêntico, mas com um conjunto de dados menor. Isso parece indicar que a Microsoft está realmente esquecendo os cenários que podem causar isso, mas ainda não resolveu todos eles.Ainda não tentei usá-lo
FORMAT
para solucionar esse problema, conforme mencionado em outra resposta e na postagem do blog SQLCAT , mas fornecerei uma atualização aqui se puder tentar e resolver o problema. Infelizmente, o único banco de dados que eu reproduz isso é bastante grande (~ 1 TB) e reside em um cluster de Desenvolvimento / QA que não possui muito espaço de armazenamento extra disponível (pelo menos nessa escala), portanto, testar variações disso provado ser logisticamente desafiador e demorado.fonte