Symptômes
Dans Microsoft SQL Server 2019, la restauration de la base de données compressée ou des sauvegardes de journaux des bases de données pour lesquelles le chiffrement transparent des données (TDE) est activé peut entraîner l’erreur suivante :
Remarque
- Msg 3241, Niveau 16, État 18, Ligne <LineNumber>
- La famille de médias sur l’appareil « Nom >du fichier de sauvegarde » n’est< pas correctement formée. SQL Server ne peut pas traiter cette famille de médias.
Solution de contournement
Pour contourner ce problème, n’effectuez aucune compression des sauvegardes de bases de données compatibles TDE à l’aide de l’une ou l’autre des méthodes suivantes :
- Utilisez WITH COMPRESSION comme décrit dans BACKUP (Transact-SQL).
- Faites confiance à la compression de sauvegarde par défaut comme décrit dans Afficher ou configurer l’option de configuration du serveur par défaut de compression de sauvegarde.
Résolution
Informations sur les mises à jour cumulatives
Ce problème est résolu dans la mise à jour cumulative suivante pour SQL Server :
Mise à jour cumulative 16 pour SQL Server 2019
Remarque Vous devez créer les sauvegardes avec ce correctif pour éviter ce problème. L’installation de la mise à jour cumulative fixe sur l’instance cible et la tentative de restauration de la même sauvegarde créée sans le correctif ne fonctionneront pas.
Informations complémentaires
Important
À partir de SQL Server 2019 CU16, la création de sauvegardes compressées (base de données ou journal) de bases de données compatibles TDE utilisera un nouveau format de sauvegarde qui ne peut être restauré que sur une instance sur laquelle CU16 ou une version ultérieure est installée.
La restauration d’une sauvegarde compressée d’une base de données compatible TDE créée sur CU16 ou version ultérieure sur une instance SQL Server 2019 de la version CU15 ou antérieure échoue et provoque les erreurs suivantes :
RESTAURER LA BASE DE DONNÉES
Remarque
- Msg 3013, Niveau 16, État 1, Ligne <LineNumber>
- La base de données de restauration se termine anormalement.
- Msg 9004, Niveau 21, État 1, Ligne <LineNumber>
- Une erreur s’est produite lors du traitement du journal pour la base de données « TDE_DB ». Si possible, restaurez à partir d’une sauvegarde. Si aucune sauvegarde n’est disponible, il peut être nécessaire de reconstruire le journal.
RESTAURER LE JOURNAL
Remarque
- Emplacement : mediaRead.cpp :1018
- Expression : readSize <= m_Demand
- SPID : 84
- ID processus : ProcessID
- Msg 3013, Niveau 16, État 1, Ligne <LineNumber>
- Le journal de restauration se termine anormalement.
- Msg 3624, Niveau 20, État 1, Ligne <LineNumber>
- Une case activée d’assertion système a échoué. Pour plus d’informations, consultez le journal des erreurs de SQL Server. En règle générale, un échec d’assertion est causé par un bogue logiciel ou une altération des données. Pour vérifier la case activée pour la base de données endommagée, envisagez d’exécuter DBCC CHECKDB. Si vous avez accepté d’envoyer des vidages à Microsoft pendant l’installation, un mini-vidage sera envoyé à Microsoft. Une mise à jour peut être disponible auprès de Microsoft dans le dernier Service Pack ou dans un correctif du Support technique.
Remarque RESTORE HEADERONLY et RESTORE FILELISTONLY ne sont pas affectés par le problème et fonctionneront dans tous les cas.
RESTORE VERIFYONLY peut retourner avec succès une sauvegarde COMPLÈTE non valide selon le scénario ci-dessus : ne vous fiez pas à RESTORE VERIFYONLY pour établir que la sauvegarde peut être restaurée sans rencontrer le problème ci-dessus. RESTORE VERIFYONLY par rapport à une sauvegarde de journal échoue généralement avec la même erreur qu’un RESTORE LOG réel décrit ci-dessus.
Par conséquent, il est important de s’assurer que dans un contexte où TDE et la compression de sauvegarde peuvent être activées, toutes les instances de SQL Server 2019 consommant des sauvegardes à partir d’autres instances de SQL Server 2019 reçoivent CU16 (ou version ultérieure) avant les instances qui génèrent le matériel de sauvegarde. Les architectures de copie des journaux de transaction seraient un excellent exemple d’une telle situation : mettez d’abord à niveau les instances secondaires.
Une fois qu’une sauvegarde du journal des transactions a été créée avec compression, il n’est généralement pas possible de la recréer sans compression. Par conséquent, la mise à niveau du serveur principal de copie des journaux de transaction vers SQL Server 2019 CU16 ou version ultérieure dans un tel contexte interromprait les tâches de restauration jusqu’à ce que le serveur secondaire soit également mis à niveau.
Une sauvegarde non compressée d’une base de données compatible TDE, la sauvegarde compressée d’une base de données qui n’est pas activée pour MDE ou la sauvegarde non compressée d’une base de données qui n’est pas activée pour TDE n’utilisera pas le nouveau format de sauvegarde introduit dans CU16 et peut être restaurée sur une instance de SQL Server 2019, quelle que soit la version.
Par conséquent, il est nécessaire de désactiver la compression de sauvegarde si vous envisagez de restaurer un matériel de base de données compatible TDE (sauvegarde complète ou sauvegarde du journal des transactions) vers des instances SQL Server des versions antérieures antérieures à SQL Server 2019 CU16.
À propos des mises à jour cumulatives pour SQL Server
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et correctifs de sécurité qui se trouvaient dans la version précédente. Nous vous recommandons d’installer la version la plus récente pour votre version de SQL Server :
Dernière mise à jour cumulative pour SQL Server 2019
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Références
En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.