Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Applies to :SQL Server
Azure SQL Managed Instance
Cet article inclut les meilleures pratiques et les conseils de dépannage pour la sauvegarde et la restauration de SQL Server dans Microsoft Stockage Blob Azure.
Pour plus d’informations sur l’utilisation de Stockage Blob Azure pour SQL Server opérations de sauvegarde ou de restauration, consultez :
- SQL Server sauvegarde et restauration avec Stockage Blob Azure
- Démarrage rapide : Sauvegarde et restauration SQL sur Stockage Blob Azure
Gestion des sauvegardes
La liste suivante comprend des recommandations générales sur la gestion des sauvegardes :
Utilisez un nom de fichier unique pour chaque sauvegarde afin d’éviter d’écraser accidentellement les blobs.
Lorsque vous créez un conteneur, définissez le niveau d’accès sur privé afin que seuls les utilisateurs ou les comptes qui peuvent fournir les informations d’authentification requises puissent lire ou écrire les objets blob dans le conteneur.
Pour SQL Server bases de données sur une instance de SQL Server s’exécutant dans une machine virtuelle Azure, utilisez un compte de stockage dans la même région que la machine virtuelle pour éviter les coûts de transfert de données entre les régions. L'utilisation de la même région garantit également des performances optimales pour les opérations de sauvegarde et de restauration.
L'échec d'une activité de sauvegarde peut générer un fichier de sauvegarde non valide. Identifiez régulièrement les sauvegardes ayant échoué et supprimez les fichiers blob. Pour plus d’informations, consultez Supprimer des fichiers blob de sauvegarde avec des baux actifs.
Utilisez l’option
WITH COMPRESSIONpour réduire les coûts de stockage et les coûts de transaction de stockage, et pour réduire le temps de sauvegarde.Définissez les arguments
MAXTRANSFERSIZEetBLOCKSIZEsur les valeurs décrites dans Sauvegarde SQL Server vers une URL pour le Stockage Blob Azure.Vous pouvez sauvegarder vers des objets blob de blocs avec tous les types de redondance du stockage (par exemple, LRS, ZRS, GRS, RA-GRS et RA-GZRS).
Gérer les fichiers volumineux
L’opération de sauvegarde SQL Server utilise plusieurs threads pour optimiser le transfert de données vers Stockage Blob Azure. Toutefois, les performances dépendent de facteurs tels que la bande passante isV et la taille de la base de données. Si vous envisagez de sauvegarder des bases de données volumineuses ou des groupes de fichiers à partir d’une base de données SQL Server locale, testez d’abord le débit. Le SLA Azure pour le stockage définit des durées de traitement maximales pour les blobs à prendre en considération.
Utilisez l’option WITH COMPRESSION recommandée dans la section Gérer les sauvegardes lorsque vous sauvegardez des fichiers volumineux.
Résoudre les problèmes de sauvegarde ou de restauration vers ou depuis une URL
Utilisez les conseils suivants pour résoudre les erreurs lorsque vous sauvegardez ou restaurez à partir de Stockage Blob Azure.
Pour éviter les erreurs liées à des options non prises en charge ou à des limitations, consultez les limitations ainsi que les options prises en charge pour les commandes BACKUP et RESTORE dans Sauvegarde et restauration SQL Server avec le stockage Blob Azure.
Échec de l’initialisation
Les sauvegardes parallèles dans un même blob entraînent l'échec d'une des sauvegardes avec l'erreur Échec de l’initialisation.
Impossible d’effectuer la requête en raison d’une erreur d’appareil d’E/S
Envisagez d’utiliser COMPRESSION, MAXTRANSFERSIZE, BLOCKSIZE et plusieurs arguments d’URL quand vous sauvegardez de grandes bases de données. Consultez Backing up a VLDB to Stockage Blob Azure.
L’erreur :
Msg 3202, Level 16, State 1, Line 1
Write on "https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak" failed:
1117(The request could not be performed because of an I/O device error.)
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.
Un exemple de résolution :
BACKUP DATABASE TestDb
TO URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_1.bak',
URL = 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_2.bak'
WITH COMPRESSION,
MAXTRANSFERSIZE = 4194304,
BLOCKSIZE = 65536;
Le message Filemark sur l’appareil n’est pas aligné
En cas de restauration d'une sauvegarde compressée, vous pouvez rencontrer l'erreur suivante :
SqlException 3284 occurred. Severity: 16 State: 5
Message Filemark on device 'https://mystorage.blob.core.windows.net/mycontainer/TestDbBackupSetNumber2_0.bak' is not aligned.
Re-issue the Restore statement with the same blocksize used to create the backupset: '65536' looks like a possible value.
Pour résoudre cette erreur, réexécutez l’instruction RESTORE avec BLOCKSIZE = 65536.
L’échec d’une activité de sauvegarde peut aboutir à des objets blob avec des baux actifs
Erreur lors de la sauvegarde en raison d’objets blob pour lesquels un bail est actif : Failed backup activity can result in blobs with active leases.
Si vous réessayez une instruction de sauvegarde, l’opération de sauvegarde peut échouer avec une erreur similaire à la sortie suivante :
Backup to URL received an exception from the remote endpoint. Exception Message:
The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request.
Si vous essayez d’exécuter une instruction de restauration sur un fichier blob de sauvegarde ayant un bail actif, l’opération de restauration échoue avec une erreur similaire au message suivant :
Exception Message: The remote server returned an error: (409) Conflict.
Lorsque cette erreur se produit, supprimez les fichiers blob. Pour plus d’informations sur ce scénario et sur la façon de corriger ce problème, consultez Supprimer des fichiers blob de sauvegarde avec des baux actifs.
Erreur de système d’exploitation 50 : la requête n’est pas prise en charge
Lors de la sauvegarde d’une base de données, vous pouvez voir une erreur Operating system error 50(The request is not supported.) pour les raisons suivantes :
- Le compte de stockage spécifié n’est pas Usage général V1/V2.
- Le jeton de signature d’accès partagé (SAS) commence par le symbole
?. Si c’est le cas, supprimez le symbole. - Vous ne pouvez pas vous connecter au compte de stockage à partir de l'ordinateur actuel à l'aide de Explorateur Stockage ou de SQL Server Management Studio (SSMS).
- La stratégie associée au jeton SAS a expiré. Créez une stratégie à l’aide de Explorateur Stockage Azure, puis créez un jeton SAP à l’aide de la stratégie ou modifiez les informations d’identification et réessayez de sauvegarder.
- Le certificat racine est manquant dans le magasin de certification racine de confiance. Pour plus d’informations, consultez Autorités de certification racines Azure.
Erreurs d’authentification
La sauvegarde vers ou la restauration à partir de Stockage Blob Azure nécessite des informations d’identification qui stockent les informations d’authentification. SQL Server 2016 (13.x) et versions ultérieures utilisent un jeton de signature d’accès partagé (SAP), et le Moteur de base de données SQL Server correspond automatiquement aux informations d’identification à l’URL du conteneur.
Les échecs liés aux informations d’identification peuvent produire les messages d’erreur suivants :
| Numéro d’erreur | Message |
|---|---|
| 3288 | Credential name <mycredential> does not exist or user does not have permission to access it. |
| 3289 | A Backup device of type URL was specified without a Credential, Backup/Restore operation cannot proceed. |
Pour éviter ce problème, créez les informations d’identification si elles n’existent pas. Par exemple:
IF NOT EXISTS (SELECT *
FROM sys.credentials
WHERE name = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>')
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<SAS_TOKEN>';
Les informations d’identification existent, mais la connexion qui exécute la commande de sauvegarde n’a pas les autorisations nécessaires pour accéder aux informations d’identification. Utilisez un compte dans le rôle de base de données fixe db_backupoperator avec l’autorisation Modifier n’importe quelle information d’identification.
Les informations stockées dans les informations d'identification doivent correspondre aux valeurs de propriété du compte de stockage Azure que vous utilisez dans les opérations de sauvegarde et de restauration.
Erreurs de proxy
Si vous utilisez des serveurs proxy pour l’accès à Internet, les erreurs suivantes peuvent survenir :
Limitation de la connexion par les serveurs proxy
Les serveurs proxy peuvent avoir des paramètres qui limitent le nombre de connexions par minute. La sauvegarde vers une URL est multithreadée et peut dépasser cette limite. Si cette limite est dépassée, le serveur proxy ferme la connexion. Pour résoudre ce problème, modifiez les paramètres du proxy afin que SQL Server n'utilise pas le proxy. Les exemples suivants montrent les messages d’erreur que vous pouvez voir dans le journal des erreurs :
Write on "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak" failed: Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
A nonrecoverable I/O error occurred on file "https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak:" Error could not be gathered from Remote Endpoint.
Msg 3013, Level 16, State 1, Line 2
BACKUP DATABASE is terminating abnormally.
BackupIoRequest::ReportIoError: write failure on backup device 'https://storageaccount.blob.core.windows.net/container/BackupAzurefile.bak'. Operating system error Backup to URL received an exception from the remote endpoint. Exception Message: Unable to read data from the transport connection: The connection was closed.
Erreurs courantes et solutions
| Problème | Solution |
|---|---|
Erreur 3063 : Write to backup block blob device https://storageaccount/container/name.bak failed. Device has reached its limit of allowed blocks. |
Pour résoudre ce problème lors des sauvegardes complètes ou différentielles, répartissez la sauvegarde sur plusieurs fichiers. Pour tous les types de sauvegarde, utilisez les paramètres suivants dans la commande de sauvegarde : COMPRESSION, MAXTRANSFERSIZE = 4194304, BLOCKSIZE = 65536. Cette erreur peut également se produire si la sauvegarde atteint la taille maximale prise en charge. Par exemple, dans SQL Server 2022 (16.x) et versions antérieures, la taille de sauvegarde maximale est de 12,8 To, calculée en tant que 64 bandes × 50 000 blocs × un 4 Mo MAXTRANSFERSIZE. |
| Erreur 3035 : La sauvegarde différentielle échoue pour une ou plusieurs bases de données. | Cette erreur se produit si vous avez configuré Sauvegarde Azure pour sauvegarder des bases de données SQL ou une capture instantanée de machine virtuelle, qui ne crée pas de sauvegarde de copie uniquement, ce qui entraîne l'échec des sauvegardes à la demande de votre plan de maintenance ou de votre travail sql Agent à la demande. Pour résoudre ce problème, ajoutez ces clés de Registre aux machines virtuelles hébergeant SQL Server instances à la clé [HKEY_LOCAL_MACHINE\SOFTWARE\MICROSOFT\BCDRAGENT] de Registre et ajoutez "USEVSSCOPYBACKUP"="TRUE". |
Erreur 3201 : Cannot open backup device '<url>'. Operating system error 50(The request is not supported.) |
Régénérez le jeton SAP à l’aide de Explorateur Stockage : dans Explorateur Stockage Azure, créez une stratégie et un nouveau jeton SAP à partir de cette stratégie. Recréez les informations d’identification à l’aide du nouveau jeton SAP et réessayez la sauvegarde. Pour plus d’informations, consultez les problèmes connus concernant BACKUP TO URL. Vérifiez que votre groupe de sécurité réseau (NSG) ou pare-feu autorise la connexion entrante et sortante sur les ports 1433 et 443. |
Erreur 3290 : Backup to URL received an exception from the remote endpoint. Exception Message: The remote name could not be resolved. |
Ce message s’affiche si des informations d’identification, un secret ou une clé SAP incorrects ont été utilisés pour configurer la sauvegarde. Supprimez les informations d’identification et recréez-les. Pour SQL Server 2016 (13.x) et versions ultérieures, utilisez SAS. |
Erreur 3290 : Backup to URL received an exception from the remote endpoint. Exception Message: The remote server returned an error: (400) Bad Request. |
Pour résoudre ce problème, remplacez la version TLS minimale du compte de stockage par la version 1.0 (version minimale du protocole TLS de> du > de stockage). |
Message d’exception : The remote server returned an error: (412) There is currently a lease on the blob and no lease ID was specified in the request. |
Dans Explorateur Stockage Azure, identifiez les objets blob de 1 To, arrêtez le bail, supprimez l’objet blob et réessayez l’opération de sauvegarde. |
Erreur : The remote server returned an error: (403) Forbidden. |
Recréez le compte de stockage, les informations d’identification et le jeton SAS pour résoudre le problème. |
| La sauvegarde a échoué lors de l’utilisation d’un plan de maintenance. | Les plans de maintenance peuvent échouer par intermittence. Exécutez la sauvegarde équivalente directement avec T-SQL. Si la sauvegarde T-SQL réussit, planifiez-la en tant que travail SQL Server Agent au lieu d’utiliser un plan de maintenance. |
| La sauvegarde a échoué en raison des limites de machine virtuelle atteintes. | Si vous recevez des erreurs indiquant que la limite d’E/S par seconde de disque/machine virtuelle a été atteinte, les sauvegardes peuvent ralentir ou échouer. Pour surveiller les limites d’IOPS/machine virtuelle, utilisez Azure Monitor Métriques et redimensionnez la machine virtuelle/disque, si nécessaire, pour résoudre le problème. |