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 vous apprend à 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 vers ou restaure depuis l’URL doit être configurée avec l’authentification Microsoft Entra, qu’il s’agisse ou non de l’instance enregistrée 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é gérée désignée par l'utilisateur ou une identité gérée désigné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 BACKUP DATABASE <database name> TO URL et RESTORE <database name> FROM URL avec des identités managées, vous devez créer un identifiant de serveur qui utilise 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 reçoit des autorisations appropriées, consultez la section Messages d’erreur .

BACKUP vers l’URL avec 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 de l’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 avec une identité gérée

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

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

Messages d’erreur

'indicateur de trace 4675 pouvez être utilisé pour vérifier les informations d’identification créées avec une identité managée. Si l’instruction CREATE CREDENTIAL a été exécutée sans indicateur de trace 4675 activé, aucun message d’erreur n’est émis si l’identité managée principale n’est pas définie pour le serveur. Pour résoudre ce scénario, les informations d’identification doivent être supprimées et recréées une fois l’indicateur de trace activé.

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

Si une identité managée principale n’est pas affectée à sql Server sur la 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 l’identité managée principale pour la machine virtuelle SQL Server sur Azure n’est pas attribuée au Storage Blob Data Contributor rôle au compte de stockage, 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 l’identité managée pour la machine virtuelle SQL Server sur Azure n’est pas attribuée au Storage Blob Data Contributor rôle au compte de stockage, 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 n’avez pas configuré d’accès réseau valide au stockage Blob Azure et aux autorisations de 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 n’avez pas configuré d’accès réseau valide au stockage Blob Azure et aux autorisations de 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 sauvegarde d’une nouvelle base de données vers 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

  • L’identité managée au niveau du serveur est prise en charge uniquement pour SQL Server sur une machine virtuelle Azure, et non sur SQL Server localement. L’identité managée au niveau du serveur n’est pas prise en charge pour Linux.

  • BACKUP TO URL ou RESTORE FROM URL avec une identité managée est uniquement prise en charge pour SQL Server sur une machine virtuelle Azure. BACKUP TO URL ou RESTORE FROM URL n’est pas pris en charge par SQL Server localement.

  • Les identités gérées ne sont pas prises en charge avec l’instance de cluster de basculement (FCI).

  • BACKUP TO URL ne peut être exécuté qu’avec la même identité managée utilisée pour la machine virtuelle SQL Server sur Azure, que le serveur dispose d’une ou de plusieurs instances de SQL Server sur la machine virtuelle.