KB4581882 - CORRECTIF : Échec de la restauration de la base de données en raison de l’expiration d’une commande de sauvegarde en SQL Server 2019

S’applique à
SQL Server 2019 on Linux

Symptômes

Dans Microsoft SQL Server 2019, vous essayez de restaurer une base de données volumineuse en exécutant la commande suivante :

USE [master]

RESTAURER LA BASE DE DONNÉES [DatabaseName]

FROM DISK = N'/var/opt/mssql/data/FileName'

WITH FILE = 1, MOVE N’Archive_HR' TO N'/var/opt/mssql/data/FileName', MOVE N’DatabaseName' TO N'/var/opt/mssql/data/FileName', NOUNLOAD, STATS = 5

Cette commande renvoie le message d’erreur suivant :

Début d’exécution de requête au niveau de Line LineNumber

Msg 42019, Niveau 16, État 4, Ligne LineNumber

L’opération de restauration de base de données managée a échoué. Erreur de service interne.

Msg 3013, Niveau 16, État 1, Ligne LineNumber

La base de données de restauration se termine anormalement.

Durée totale d’exécution : 00:01:51.093

É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ésolution

Ce problème est résolu dans la mise à jour cumulative suivante pour SQL Server :

À propos des mises à jour cumulatives pour SQL Server :

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :

Solution de contournement

Pour contourner le problème, vous pouvez utiliser l’adresse IP du service Kubernetes créé ci-dessous et vous connecter au SQL Server instance :

      

Exposez le port 1533 :

kubectl -n <namespaceName> expose pod <podName> --port=1533 --name=<serviceName> --type=NodePort

      

Vous pouvez ensuite exécuter manuellement les quatre instructions suivantes :

  1. Restaurer la base de données
  2. ALTER DATABASE <databaseName> DÉFINIR LA RÉCUPÉRATION COMME TERMINÉE
  3. SAUVEGARDER LA BASE DE DONNÉES <databaseName> TO DISK='NUL'
  4. ALTER AVAILABILITY GROUP containedag ADD DATABASE <databaseName>

Références

En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.