Update : @AmitBanerjee - Senior Program Manager für die Microsoft SQL Server-Produktgruppe hat bestätigt, dass MS das Problem untersuchen wird, da es sich um einen Defekt handelt.
Hat jemand Probleme beim Wiederherstellen von Sicherungen festgestellt, die auf SQL Server 2016 mit aktiviertem TDE und unter Verwendung von MAXTRANSFERSIZE
> 65536 erstellt wurden (in meinem Fall habe ich 65537 ausgewählt, damit ich die TDE-Datenbank komprimieren kann ) und CHECKSUM
?
Unten ist ein Repro:
--- 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
Nehmen Sie nur eine vollständige Sicherungskopie. Machen Sie es zweimal.
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
Jetzt mach ein verifyonly
...
restore verifyonly from disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak'
Fehlermeldung :
Meldung 3241, Ebene 16, Status 40, Zeile 11 Die Medienfamilie auf Gerät 'D: \ temporär-kurzfristig \ test_restore_KIN_test_restore_1.bak' ist falsch gebildet. SQL Server kann diese Medienfamilie nicht verarbeiten. Meldung 3013, Ebene 16, Status 1, Zeile 11 VERIFY DATABASE wird abnormal beendet.
Ergebnisse (1 = EIN, 0 = AUS) mit verschiedenen Kombinationen:
+-------------------------+-------------+----------+--------+
| 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 |
+-------------------------+-------------+----------+--------+
Das Problem tritt auf:
Microsoft SQL Server 2016 (RTM-CU1) (KB3164674) - 13.0.2149.0 (X64) 11. Juli 2016 22:05:22 Copyright (c) Microsoft Corporation Enterprise Edition (64-Bit) unter Windows Server 2012 R2 Standard 6.3 (Build 9600) :)
FORMAT
Header wird auch überschrieben und es passiert nicht, wenn er verwendet wirdFORMAT
. Dies ist jedoch ein Rätsel, warum der Backup-Header (oder das Backup als Ganzes) bei der Verwendung vonMAXTRANSFERSIZE
undCHECKSUM
zusammen mit INIT beschädigt wird . Dies geschah nie bei niedrigeren Versionen, aber bei diesen gab es keineMAXTRANSFERSIZE
. Danke für deine Antwort. Wird dies offen halten, wenn jemand mehr Informationen hat.Anscheinend wurde dies mit KB 4032200 behoben:
Aus diesem Eintrag:
quelle
Dies scheint möglicherweise dasselbe Problem zu sein, auf das der Blog-Beitrag, auf den Sie in Ihrer Frage verwiesen haben, später aktualisiert wurde, um auf Folgendes zu verweisen:
Trotz dieses Hinweises wurde der Blog-Beitrag seitdem nicht mehr mit weiteren Informationen aktualisiert.
Allerdings KB 4019893 können auch diese Adresse:
Obwohl sich die in diesem KB-Artikel gemeldete Fehlermeldung von der von Ihnen gemeldeten unterscheidet, klingen die beitragenden Faktoren sehr ähnlich. SQL Server 2016 SP1 CU3 enthielt zuerst den Fix, wie in seiner Hotfix-Liste zu sehen . Allerdings gibt es Berichte, dass es nicht das Problem in allen Situationen zu lösen hat.
SQL Server 2016 SP1 CU4 enthält auch einen (vermutlich aktualisierten) Fix dafür , und KB 4019893 wurde seitdem aktualisiert, um SP1 CU4 als die Version anzuzeigen, in der das Problem behoben wurde.
Leider kann ich aus eigener Erfahrung bestätigen, dass selbst das Update in SP1 CU4 dieses Problem nicht vollständig behebt. Ich habe derzeit eine TDE-fähige Datenbank, die auch unter SP1 CU4 bei Verwendung
COMPRESSION
(überMAXTRANSFERSIZE
> 64 KB) und immer noch konsistent beschädigte Backups erstelltCHECKSUM
. Ich habe auch mehrere Dutzend andere TDE-fähige Datenbanken in dieser Umgebung, die unter diesen Einstellungen durchweg keine beschädigten Sicherungen erstellen, einschließlich einer, die eine Variation derjenigen ist, die dies tut, mit einem nahezu identischen Schema, aber einem kleineren Datensatz. Dies scheint darauf hinzudeuten, dass Microsoft zwar die Szenarien, die dies verursachen können, abschneidet, aber noch nicht alle gelöst hat.Ich habe noch nicht versucht,
FORMAT
dieses Problem zu umgehen, wie in einer anderen Antwort und im SQLCAT- Blogbeitrag erwähnt , aber ich werde hier ein Update bereitstellen, wenn ich das versuchen kann, und es behebt das Problem. Die eine Datenbank, die ich habe, die dies reproduziert, ist leider ziemlich groß (~ 1 TB) und befindet sich in einem Entwicklungs- / QS-Cluster, in dem nicht viel zusätzlicher Speicherplatz verfügbar ist (zumindest in dieser Größenordnung) hat sich als logistisch herausfordernd und zeitaufwändig erwiesen.quelle