Mise à jour : @AmitBanerjee - Responsable de programme principal pour le groupe de produits Microsoft SQL Server a confirmé que MS examinera le problème car il s'agit d'un défaut.
Quelqu'un a-t-il rencontré un problème de restauration des sauvegardes effectuées sur SQL Server 2016 avec TDE activé et en utilisant MAXTRANSFERSIZE
> 65536 (dans mon cas, j'ai choisi 65537 pour pouvoir compresser la base de données TDE ) et CHECKSUM
?
Ci-dessous une 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
Prendre une copie de sauvegarde complète seulement .. faites-le deux fois ..
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
Maintenant, faites un verifyonly
...
restore verifyonly from disk = 'D:\temporary-short-term\test_restore_KIN_test_restore_1.bak'
Message d'erreur :
Msg 3241, niveau 16, état 40, ligne 11 La famille de supports sur le périphérique «D: \ temporaire-à court terme \ test_restore_KIN_test_restore_1.bak» est incorrectement formée. SQL Server ne peut pas traiter cette famille de supports. Msg 3013, niveau 16, état 1, ligne 11 VERIFY DATABASE se termine anormalement.
Résultats (1 = ON, 0 = OFF) avec différentes combinaisons:
+-------------------------+-------------+----------+--------+
| 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 |
+-------------------------+-------------+----------+--------+
Le problème se produit sur:
Microsoft SQL Server 2016 (RTM-CU1) (KB3164674) - 13.0.2149.0 (X64) 11 juillet 2016 22:05:22 Copyright (c) Microsoft Corporation Enterprise Edition (64 bits) sur Windows Server 2012 R2 Standard 6.3 (Build 9600 :)
FORMAT
-tête remplacera également l'en-tête et cela ne se produit pas lors de l'utilisationFORMAT
. C'est toujours un mystère pour savoir pourquoi l'en-tête de sauvegarde (ou la sauvegarde dans son ensemble) est corrompu lors de l'utilisationMAXTRANSFERSIZE
etCHECKSUM
avec INIT. Cela n'est jamais arrivé sur les versions inférieures, mais dans celles-ci, il n'y en avait pasMAXTRANSFERSIZE
. Merci pour votre réponse. Gardera cela ouvert si quelqu'un a plus d'informations.Il semble que cela aurait pu être résolu avec KB 4032200:
De cette entrée:
la source
Il semblerait que ce soit le même problème que le billet de blog auquel vous avez fait référence dans votre question a été mis à jour par la suite pour faire référence à:
Malgré cette note, le blog n'a pas été mis à jour avec plus d'informations depuis lors.
Cependant, KB 4019893 peut également résoudre ce problème:
Bien que le message d'erreur signalé dans cet article de la base de connaissances soit différent de celui que vous signalez, les facteurs contributifs semblent très similaires. SQL Server 2016 SP1 CU3 a tout d'abord inclus le correctif, comme indiqué dans sa liste de correctifs . Cependant, selon certaines informations , cela n'a pas résolu le problème dans toutes les situations.
SQL Server 2016 SP1 CU4 comprend également un correctif (vraisemblablement mis à jour) pour cela , et KB 4019893 a depuis été mis à jour pour afficher SP1 CU4 comme la version dans laquelle le problème a été résolu.
Malheureusement, je peux confirmer de ma propre expérience que même le correctif dans SP1 CU4 ne résout pas complètement ce problème. J'ai actuellement une base de données compatible TDE qui produit toujours des sauvegardes systématiquement corrompues, même sur SP1 CU4 lors de l'utilisation
COMPRESSION
(viaMAXTRANSFERSIZE
> 64 Ko) etCHECKSUM
. J'ai également plusieurs dizaines d'autres bases de données compatibles TDE dans cet environnement qui ne produisent pas systématiquement de sauvegardes corrompues sous ces paramètres, dont une qui est une variante de celle qui le fait, avec un schéma presque identique mais un ensemble de données plus petit. Cela semblerait indiquer que Microsoft réduit en effet les scénarios qui peuvent provoquer cela, mais ne les a pas encore tous résolus.Je n'ai pas encore essayé d'utiliser
FORMAT
pour contourner ce problème, comme référencé dans une autre réponse et le billet de blog SQLCAT , mais je fournirai une mise à jour ici si je peux essayer cela et cela résout le problème. La seule base de données que je possède qui le reproduit est malheureusement assez volumineuse (~ 1 To) et réside dans un cluster de développement / AQ qui n'a pas beaucoup d'espace de stockage supplémentaire disponible (au moins à cette échelle), donc tester des variations de cela a s'est avéré être un défi logistique et chronophage.la source