Partager via


Sauvegarde et restauration vers une URL à l’aide d’identités managées

S’applique à :SQL Server sur une machine virtuelle Azure (Windows uniquement)

Cet article explique comment sauvegarder et restaurer des bases de données SQL Server sur des machines virtuelles Azure à partir d’une URL à l’aide d’identités managées Microsoft Entra.

Aperçu

À compter de SQL Server 2022 Cumulative Update 17 (CU17), vous pouvez utiliser des identités managées avec des informations d’identification SQL Server pour sauvegarder et restaurer des bases de données SQL Server sur des machines virtuelles Azure depuis le stockage Blob Azure. Les identités gérées fournissent une identité que les applications peuvent utiliser lors de la connexion à des ressources prenant en charge l’authentification Microsoft Entra.

Conditions préalables

  • Un serveur SQL Server sur une machine virtuelle Azure avec SQL Server 2022 CU17 ou version ultérieure inscrite auprès de l’extension SQL IaaS Agent.
  • L’instance SQL Server qui sauvegarde ou restaure à partir de l’URL doit être configurée avec l’authentification Microsoft Entra, qu’il s’agisse ou non de l’instance inscrite auprès de l’extension.
  • Un compte de stockage Blob Azure.
  • Accès réseau valide au stockage Blob Azure, autorisations du Pare-feu Windows sur l'hôte pour autoriser la connexion sortante, et points de terminaison valides des services de compte de stockage.
  • L'identité managée principale pour SQL Server sur la machine virtuelle Azure a besoin de :
    • Pour se voir attribuer une identité managée assignée par l'utilisateur ou une identité managée assignée par le système. Pour plus d’informations, consultez Configurer des identités managées sur des machines virtuelles Azure.
    • Pour avoir le rôle Storage Blob Data Contributor de l'identité managée principale assignée au compte de stockage.

Créer des informations d’identification de serveur à l’aide d’identités managées

Pour utiliser les commandes T-SQL et BACKUP DATABASE <database name> TO URL avec des identités RESTORE <database name> FROM URL managées, vous devez créer des informations d’identification de serveur qui utilisent l’identité managée. Le nom des informations d’identification représente l’URL de stockage Azure et indique où la sauvegarde de la base de données est stockée.

L’exemple suivant montre comment créer des informations d’identification pour une identité managée :

CREATE CREDENTIAL [https://<storage-account-name>.blob.core.windows.net/<container-name>]
    WITH IDENTITY = 'Managed Identity'

La WITH IDENTITY = 'Managed Identity' clause nécessite une identité managée principale affectée à SQL Server sur une machine virtuelle Azure.

Pour plus d’informations sur les messages d’erreur qui peuvent se produire si l’identité managée principale n’est pas affectée ou n’a pas reçu d’autorisations appropriées, consultez la section Messages d’erreur .

BACKUP vers l’URL à l’aide d’une identité managée

Après avoir créé les informations d’identification, vous pouvez l’utiliser pour sauvegarder et restaurer des bases de données dans le stockage Blob Azure. Assurez-vous que l'identité managée principale pour SQL Server dans la machine virtuelle Azure a le rôle Storage Blob Data Contributor attribué au compte de stockage.

L’exemple suivant montre comment sauvegarder une base de données dans le stockage Blob Azure à l’aide des informations d’identification d’identité gérée :

BACKUP DATABASE [AdventureWorks]
    TO URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'

RESTORE à partir de l’URL à l’aide d’une identité gérée

L’exemple suivant montre comment restaurer une base de données à partir du stockage Blob Azure à l’aide de l’identité managée :

RESTORE DATABASE [AdventureWorks]
    FROM URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'

Messages d’erreur

Utilisez l’indicateur de trace 4675 pour vérifier les informations d’identification créées avec une identité managée. Si vous exécutez l’instruction sans activer l’indicateur CREATE CREDENTIAL de trace 4675, aucun message d’erreur n’est retourné si l’identité managée principale n’est pas définie pour le serveur. Pour résoudre ce scénario, vous devez supprimer et recréer les informations d’identification une fois l’indicateur de trace activé.

Aucune identité gérée principale n'est affectée

Si vous n’affectez pas d’identité managée principale à sql Server sur une machine virtuelle Azure, les opérations de sauvegarde et de restauration échouent avec un message d’erreur indiquant que l’identité managée n’est pas sélectionnée.

Msg 37563, Level 16, State 2, Line 14
The primary managed identity is not selected for this server. Enable the primary managed identity for Microsoft Entra authentication for this server. For more information see (https://aka.ms/sql-server-managed-identity-doc).`

Aucun Storage Blob Data Contributor rôle attribué

Si vous n’affectez pas le Storage Blob Data Contributor rôle à l’identité managée principale pour la machine virtuelle SQL Server sur Azure, l’opération échoue avec un message d’erreur indiquant que l’accès BACKUP est refusé.

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
BACKUP DATABASE is terminating abnormally.

Si vous n’affectez pas le Storage Blob Data Contributor rôle à l’identité managée pour la machine virtuelle SQL Server sur Azure, l’opération échoue avec un message d’erreur indiquant que l’accès RESTORE est refusé.

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
RESTORE DATABASE is terminating abnormally.

Problèmes de réseau ou de pare-feu

Si vous ne configurez pas l’accès réseau valide au stockage Blob Azure et les autorisations du Pare-feu Windows sur l’hôte, pour autoriser la connexion sortante et les points de terminaison de service de compte de stockage valides ne sont pas configurés, l’opération BACKUP échoue avec un message d’erreur indiquant que l’accès est refusé.

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
BACKUP DATABASE is terminating abnormally.

Si vous ne configurez pas l’accès réseau valide au stockage Blob Azure et les autorisations du Pare-feu Windows sur l’hôte, pour autoriser la connexion sortante et les points de terminaison de service de compte de stockage valides ne sont pas configurés, l’opération RESTORE échoue avec un message d’erreur indiquant que l’accès est refusé.

Msg 3201, Level 16, State 1, Line 31
Cannot open backup device 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 31
RESTORE DATABASE is terminating abnormally.

Nom de la base de données en double

Lorsque la base de données d’origine portant le même nom existe dans le stockage, la restauration d’une nouvelle base de données sur le même chemin de stockage échoue avec l’erreur suivante :

Msg 1834, Level 16, State 1, Line 35
RESTORE DATABASE AdventureWorks
FROM URL = 'https://<storage-account-name>.blob.core.windows.net/<container-name>/AdventureWorks.bak';
Msg 1834, Level 16, State 1, Line 35
The file 'C:\Server\sqlservr\data\AdventureWorks.mdf' cannot be overwritten.  It is being used by the database 'AdventureWorks'.
Msg 3156, Level 16, State 4, Line 35
File 'AdventureWorks' cannot be restored to 'C:\Server\sqlservr\data\AdventureWorks.mdf'. Use WITH MOVE to identify a valid location for the file.

Pour résoudre ce problème, supprimez la base de données d’origine ou déplacez les fichiers utilisés vers un autre emplacement avant de restaurer la base de données. Pour plus d’informations, consultez Restaurer une base de données à un nouvel emplacement (SQL Server).

Limites

  • SQL Server sur une machine virtuelle Azure prend en charge l’identité managée au niveau du serveur, mais SQL Server local ne le fait pas. Linux ne prend pas en charge l’identité managée au niveau du serveur.

  • SQL Server sur une machine virtuelle Azure prend en charge BACKUP TO URL et RESTORE FROM URL avec une identité managée à partir de SQL Server 2022 CU17. SQL Server local prend en charge BACKUP TO URL ou RESTORE FROM URL avec une identité managée à partir de SQL Server 2025.

  • L’instance de cluster de basculement (FCI) ne prend pas en charge les identités managées.

  • Vous ne pouvez exécuter BACKUP TO URL qu'en utilisant la même identité managée que celle que vous utilisez pour SQL Server sur une machine virtuelle Azure, que le serveur dispose d'une ou de plusieurs instances de SQL Server sur la machine virtuelle.