Règles d’évaluation pour la migration de SQL Server vers Azure SQL Database
S’applique à : Azure SQL Database
Les outils de migration valident votre instance SQL Server source en exécutant un certain nombre de règles d’évaluation afin d’identifier les problèmes à résoudre avant la migration de votre base de données SQL Server vers Azure SQL Database.
Cet article fournit la liste des règles utilisées pour évaluer la faisabilité de la migration de votre base de données SQL Server vers Azure SQL Database.
Résumé des règles
BULK INSERT
Titre : L’instruction BULK INSERT avec une source de données blob non-Azure n’est pas prise en charge dans Azure SQL Database.
Catégorie: Problème
Description
Azure SQL Database ne peut pas accéder à des partages de fichiers ou à des dossiers Windows. Consultez la section « Objets affectés » pour connaître les utilisations spécifiques des instructions BULK INSERT
qui ne font pas référence à un blob Azure. Les objets avec l’instruction BULK INSERT
, dont la source n’est pas le Stockage Blob Azure, ne fonctionnent pas après la migration vers Azure SQL Database.
Recommandation
Vous devez convertir les instructions BULK INSERT
qui utilisent des fichiers locaux ou des partages de fichiers de sorte qu’elles utilisent plutôt des fichiers de Stockage Blob Azure lors de la migration vers Azure SQL Database. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Clause COMPUTE
La clause COMPUTE n’est plus prise en charge et a été supprimée.
Catégorie : Avertissement
Description
La clause COMPUTE génère des totaux qui s’affichent sous la forme de colonnes de résumé supplémentaires à la fin du jeu de résultats. Toutefois, cette clause n’est plus prise en charge dans Azure SQL Database.
Recommandation
Le module T-SQL doit être réécrit en utilisant l’opérateur ROLLUP à la place. Le code ci-dessous montre comment remplacer COMPUTE
par ROLLUP
:
USE AdventureWorks2022;
GO
SELECT SalesOrderID,
UnitPrice,
UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID COMPUTE SUM(UnitPrice),
SUM(UnitPriceDiscount) BY SalesOrderID;
GO
SELECT SalesOrderID,
UnitPrice,
UnitPriceDiscount,
SUM(UnitPrice) AS UnitPrice,
SUM(UnitPriceDiscount) AS UnitPriceDiscount
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID,
UnitPrice,
UnitPriceDiscount
WITH ROLLUP;
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server.
Assemblys CLR
Titre : Les assemblys SQL CLR ne sont pas pris en charge dans Azure SQL Database
Catégorie: Problème
Description
Azure SQL Database ne prend pas en charge les assemblys SQL CLR.
Recommandation
Actuellement, il n’y a aucun moyen d’y parvenir dans Azure SQL Database. Les solutions alternatives recommandées requièrent un code d’application et des modifications de base de données pour utiliser uniquement les assemblys pris en charge par Azure SQL Database. Vous pouvez également migrer vers Azure SQL Managed Instance ou SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, consultez Différences Transact-SQL non prises en charge dans SQL Database.
Fournisseur de chiffrement
Titre : Nous avons identifié une utilisation de CREATE CRYPTOGRAPHIC PROVIDER ou ALTER CRYPTOGRAPHIC PROVIDER, ce qui n’est pas pris en charge dans Azure SQL Database
Catégorie: Problème
Description
Azure SQL Database ne prend pas en charge les instructions CRYPTOGRAPHIC PROVIDER, car elles ne peuvent pas accéder aux fichiers. Consultez la section sur les Objets affectés pour connaître les utilisations spécifiques des instructions CRYPTOGRAPHIC PROVIDER. Les objets adotés de CREATE CRYPTOGRAPHIC PROVIDER
ou ALTER CRYPTOGRAPHIC PROVIDER
ne fonctionneront pas correctement après la migration vers Azure SQL Database.
Recommandation
Passez en revue les objets avec CREATE CRYPTOGRAPHIC PROVIDER
ou ALTER CRYPTOGRAPHIC PROVIDER
. Dans tous les objets de ce type requis, supprimez les utilisations de ces fonctionnalités. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Références des bases de données croisées
Titre : Les requêtes de bases de données croisées ne sont pas prises en charge dans Azure SQL Database
Catégorie: Problème
Description
Les bases de données sur ce serveur utilisent des requêtes de bases de données croisées qui ne sont pas prises en charge dans Azure SQL Database.
Recommandation
Azure SQL Database ne prend pas en charge les requêtes entre bases de données. Les actions suivantes sont recommandées :
- Migrez la ou les bases de données dépendantes vers Azure SQL Database, et utilisez la fonctionnalité Requête de base de données élastique (actuellement en préversion) pour interroger les bases de données Azure SQL.
- Déplacez les jeux de données dépendants d’autres bases de données dans la base de données en cours de migration.
- Migrez vers Azure SQL Managed Instance.
- Migrez vers SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, consultez Vue d’ensemble de la requête élastique Azure SQL Database (préversion).
Compatibilité de base de données
Titre : Azure SQL Database ne prend pas en charge les niveaux de compatibilité inférieurs à 100.
Catégorie : Avertissement
Description
Le Niveau de compatibilité de la base de données est un outil précieux quand il s’agit de moderniser une base de données. Il permet en effet de mettre à niveau le Moteur de base de données SQL Server tout en continuant de connecter l’état opérationnel des applications en conservant le niveau de compatibilité de la base de données antérieur à la mise à niveau. Azure SQL Database ne prend pas en charge les niveaux de compatibilité inférieurs à 100.
Recommandation
Évaluez si la fonctionnalité de l’application est intacte quand le niveau de compatibilité de la base de données est porté à 100 sur Azure SQL Database. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Messagerie de base de données
Titre : Database Mail n’est pas pris en charge dans Azure SQL Database.
Catégorie : Avertissement
Description
Ce serveur utilise la fonctionnalité Database Mail, qui n’est pas prise en charge dans Azure SQL Database.
Recommandation
Envisagez de migrer vers Azure SQL Database qui prend en charge Database Mail. Vous pouvez également songer à utiliser Azure Functions et Sendgrid pour obtenir la fonctionnalité de courrier sur Azure SQL Database.
Alias principal de base de données
Titre : SYS.DATABASE_PRINCIPAL_ALIASES n’est plus pris en charge et a été supprimé.
Catégorie: Problème
Description
sys.database_principal_aliases
n’est plus pris en charge et a été supprimé dans Azure SQL Database.
Recommandation
Utilisez des rôles à la place d'alias.
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server.
Option DISABLE_DEF_CNST_CHK
Titre : L’option SET DISABLE_DEF_CNST_CHK n’est plus disponible et a été supprimée.
Catégorie: Problème
Description
L’option SET DISABLE_DEF_CNST_CHK n’est plus disponible et a été supprimée dans Azure SQL Database.
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server.
FASTFIRSTROW, indicateur
L’indicateur de requête FASTFIRSTROW n’est plus pris en charge et a été supprimé.
Catégorie : Avertissement
Description
L’indicateur de requête FASTFIRSTROW n’est plus pris en charge et a été supprimé dans Azure SQL Database.
Recommandation
Au lieu de l’indicateur de requête FASTFIRSTROW, utilisez OPTION (FAST n).
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server.
FILESTREAM
Titre : FILESTREAM n’est pas pris en charge dans Azure SQL Database
Catégorie: Problème
Description
La fonctionnalité Filestream, qui permet de stocker des données non structurées telles que des documents texte, des images et des vidéos dans le système de fichiers NTFS, n’est pas prise en charge dans Azure SQL Database.
Recommandation
Chargez les fichiers non structurés dans le service Stockage Blob Azure et stockez les métadonnées associées à ces fichiers (nom, type, adresse URL, clé de stockage, etc.) dans Azure SQL Database. Il se peut que vous deviez remanier votre application pour activer la diffusion en continu d’objets blob vers et depuis Azure SQL Database. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, consultez Blog sur la diffusion en continu d’objets blob vers et depuis Azure SQL.
Serveur lié
Titre : La fonctionnalité de serveur lié n’est pas prise en charge dans Azure SQL Database
Catégorie: Problème
Description
Des serveurs liés permettent au Moteur de base de données SQL Server d’exécuter des commandes sur des sources de données OLE DB en dehors de l’instance de SQL Server.
Recommandation
Azure SQL Database ne prend pas en charge la fonctionnalité de serveur lié. Les actions suivantes sont recommandées pour éliminer le besoin de serveurs liés :
- Identifiez les jeux de données dépendants à partir de serveurs SQL distants et envisagez de les déplacer dans la base de données en cours de migration.
- Migrez la ou les bases de données dépendantes vers Azure, et utilisez la fonctionnalité Requête de base de données élastique (préversion) pour interroger les bases de données dans Azure SQL Database.
Pour plus d’informations, consultez Vue d’ensemble de la requête élastique Azure SQL Database (préversion).
MS DTC
Titre : BEGIN DISTRIBUTED TRANSACTION n’est pas pris en charge dans Azure SQL Database.
Catégorie: Problème
Description
La transaction distribuée BEGIN DISTRIBUTED TRANSACTION démarrée par Transact-SQL et gérée par Microsoft Distributed Transaction Coordinator (MS DTC) n’est pas prise en charge dans Azure SQL Database.
Recommandation
Examinez la section sur les Objets affectés dans Azure Migrate pour voir tous les objets utilisant la transaction BEGIN DISTRUBUTED TRANSACTION. Envisagez de migrer les bases de données participantes vers Azure SQL Managed Instance où les transactions distribuées sur plusieurs instances sont prises en charge.
Pour plus d’informations, consultez Transactions sur plusieurs serveurs pour Azure SQL Managed Instance.
Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
OPENROWSET (en bloc)
Titre : L’élément OpenRowSet utilisé dans une opération en bloc avec une source de données de stockage blob non-Azure n’est pas pris en charge dans Azure SQL Database.
Catégorie: Problème
Description OPENROWSET prend en charge les opérations en bloc par l’intermédiaire d’un fournisseur BULK intégré qui permet de lire les données d’un fichier et de les retourner sous la forme d’un ensemble de lignes. OPENROWSET avec une source de données de stockage blob non-Azure n’est pas pris en charge dans Azure SQL Database.
Recommandation
Azure SQL Database ne peut pas accéder aux partages de fichiers et dossiers Windows. Les fichiers doivent donc être importés à partir de Stockage Blob Azure. Par conséquent, seul le type de blob DATASOURCE est pris en charge dans la fonction OPENROWSET. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure
Pour plus d’informations, voir Résolution des différences de Transact-SQL durant la migration vers SQL Database.
OPENROWSET (fournisseur)
Titre : L’élément OpenRowSet avec un fournisseur SQL ou non-SQL n’est pas pris en charge dans Azure SQL Database.
Catégorie: Problème
Description
OpenRowSet avec un fournisseur SQL ou non-SQL est une autre façon d’accéder à des tables dans un serveur lié et constitue une méthode efficace pour vous connecter et accéder à des données distantes en utilisant OLE DB. L’élément OpenRowSet avec un fournisseur SQL ou non-SQL n’est pas pris en charge dans Azure SQL Database.
Recommandation
Azure SQL Database prend en charge OPENROWSET uniquement pour l’importation à partir du service Stockage Blob Azure. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, voir Résolution des différences de Transact-SQL durant la migration vers SQL Database.
Jointure externe gauche non ANSI
Titre : La jonction externe gauche de style non-ANSI n’est plus prise en charge et a été supprimée.
Catégorie : Avertissement
Description
La jonction externe gauche de style non-ANSI n’est plus prise en charge et a été supprimée dans Azure SQL Database.
Recommandation
Utilisez la syntaxe de jointure ANSI.
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server.
Jointure externe droite non ANSI
Titre : La jonction externe droite de style non-ANSI n’est plus prise en charge et a été supprimée.
Catégorie : Avertissement
Description
La jonction externe droite de style non-ANSI n’est plus prise en charge et a été supprimée dans Azure SQL Database.
Recommandation
Utilisez la syntaxe de jointure ANSI.
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server.
Colonne Next
Titre : les tables et colonnes nommées NEXT provoquent une erreur dans Azure SQL Database.
Catégorie: Problème
Description
Des tables ou colonnes nommées NEXT ont été détectées. Les séquences introduites dans Microsoft SQL Server utilisent la fonction ANSI standard NEXT VALUE FOR. Si une table ou une colonne est nommée NEXT, que la colonne a pour alias VALUE et que l'ANSI standard AS est omis, l'instruction obtenue peut provoquer une erreur.
Recommandation
Réécrivez les instructions pour inclure le mot clé ANSI standard AS lors de l'utilisation d'alias pour une table ou une colonne. Par exemple, quand une colonne est nommée NEXT et que cette colonne a pour alias VALUE, la requête SELECT NEXT VALUE FROM TABLE
provoque une erreur et doit être réécrite sous la forme SELECT NEXT AS VALUE FROM TABLE. De même, quand une table est nommée NEXT et que cette table a pour alias VALUE, la requête SELECT Col1 FROM NEXT VALUE
provoque une erreur et doit être réécrite sous la forme SELECT Col1 FROM NEXT AS VALUE
.
RAISERROR
Titre : Les appels de RAISERROR de style hérité doivent être remplacés par des équivalents récents.
Catégorie : Avertissement
Description
Les appels RAISERROR comme dans l’exemple ci-dessous sont dits de style hérité parce qu’ils n’incluent pas les virgules et les parenthèses. RAISERROR 50001 'this is a test'
. Cette méthode d’appel de RAISERROR n’est plus prise en charge et a été supprimée dans Azure SQL Database.
Recommandation
Réécrivez l’instruction en utilisant la syntaxe de RAISERROR actuelle ou vérifiez si l’approche moderne de BEGIN TRY { } END TRY BEGIN CATCH { THROW; } END CATCH
est applicable.
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server.
Audits du serveur
Titre : Utiliser les fonctionnalités d’audit d’Azure SQL Database pour remplacer les audits du serveur
Catégorie : Avertissement
Description
Les audits de serveur ne sont pas pris en charge dans Azure SQL Database.
Recommandation
Envisagez les fonctionnalités d’audit d’Azure SQL Database pour remplacer les audits du serveur. Azure SQL prend en charge l’audit, et les fonctionnalités sont plus riches que celles de SQL Server. Azure SQL Database peut auditer divers événements et actions de base de données, dont l’accès aux données, les modifications de schéma (DDL), les modifications de données (DML), les comptes, les rôles et les autorisations (DCL, exceptions de sécurité). L’audit Azure SQL Database augmente la capacité de votre organisation à acquérir une compréhension approfondie des événements et modifications qui se produisent au sein de la base de données, dont les mises à jour et les requêtes sur les données. Vous pouvez également migrer vers Azure SQL Managed Instance ou SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, consultez Audit pour base de données Azure SQL et Azure Synapse Analytics.
Informations d’identification du serveur
Titre : Les informations d’identification incluses dans l’étendue du serveur ne sont pas prises en charge dans Azure SQL Database
Catégorie : Avertissement
Description
Les informations d’identification correspondent à un enregistrement qui contient les informations d’authentification requises pour la connexion à une ressource en dehors de SQL Server. Azure SQL Database prend en charge les informations d’identification de base de données, mais pas celles créées dans l’étendue de SQL Server.
Recommandation
Azure SQL Database prend en charge les informations d’identification incluses dans l’étendue de la base de données. Convertissez les informations d’identification incluses dans l’étendue du serveur en informations d’identification incluses dans l’étendue de la base de données. Vous pouvez également migrer vers Azure SQL Managed Instance ou SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, consultez CREATE DATABASE SCOPED CREDENTIAL
Service Broker
Titre : La fonctionnalité Service Broker n’est pas prise en charge dans Azure SQL Database
Catégorie: Problème
Description
SQL Server Service Broker assure la prise en charge native des applications de messagerie et de mise en file d’attente dans le Moteur de base de données SQL Server. La fonctionnalité Service Broker n’est pas prise en charge dans Azure SQL Database.
Recommandation
La fonctionnalité Service Broker n’est pas prise en charge dans Azure SQL Database. Envisagez de migrer vers Azure SQL Managed Instance qui prend en charge Service Broker au sein de la même instance. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Déclencheurs inclus dans l’étendue du serveur
Titre : Le déclencheur inclus dans l’étendue du serveur n’est pas pris en charge dans Azure SQL Database
Catégorie : Avertissement
Description
Un déclencheur est un type spécial de procédure stockée qui s’exécute en réponse à certaines actions sur une table, telles que l’insertion, la suppression ou la mise à jour de données. Les déclencheurs inclus dans l’étendue du serveur ne sont pas pris en charge dans Azure SQL Database. Azure SQL Database ne prend pas en charge les options suivantes pour les déclencheurs : FOR LOGON, ENCRYPTION, WITH APPEND, NOT FOR REPLICATION, l’option EXTERNAL NAME (pas de prise en charge de méthode externe), l’option ALL SERVER (déclencheur DDL), Déclencheur sur un événement LOGON (déclencheur Logon), Azure SQL Database ne prend pas en charge les déclencheurs CLR.
Recommandation
Utilisez plutôt des déclencheurs de niveau base de données. Vous pouvez également migrer vers Azure SQL Managed Instance ou SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, voir Résolution des différences de Transact-SQL durant la migration vers SQL Database.
Travaux SQL Agent
Titre : Les travaux SQL Server Agent ne sont pas disponibles dans Azure SQL Database
Catégorie : Avertissement
Description
SQL Server Agent est un service Microsoft Windows qui exécute des tâches d’administration planifiées, qui sont appelées travaux dans SQL Server. Les travaux SQL Server Agent ne sont pas disponibles dans Azure SQL Database.
Recommandation
Utilisez des tâches élastiques, qui remplacent les travaux SQL Server Agent dans Azure SQL Database. Les tâches élastiques pour Azure SQL Database vous permettent d’exécuter de manière fiable des scripts T-SQL qui s’étendent sur plusieurs bases de données, tout en effectuant automatiquement de nouvelles tentatives et en apportant des garanties d’accomplissement final. Vous pouvez également envisager de migrer vers Azure SQL Managed Instance ou SQL Server sur des machines virtuelles Azure. Pour plus d’informations, consultez Tâches élastiques dans Azure SQL Database.
Taille de base de données SQL
Titre : Azure SQL Database ne prend pas en charge les tailles de base de données supérieures à 100 To.
Catégorie: Problème
Description
La taille de la base de données est supérieure à la taille maximale prise en charge de 100 To.
Recommandation
Évaluez si les données peuvent être archivées compressées ou partitionnées dans plusieurs bases de données. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, consultez Limites des ressources vCore.
SQL Mail
Titre : SQL Mail n’est plus disponible.
Catégorie : Avertissement
Description
SQL Mail n’est plus disponible et a été supprimé dans Azure SQL Database.
Recommandation
Envisagez de migrer vers Azure SQL Managed Instance ou SQL Server sur des machines virtuelles Azure, et d’utiliser Database Mail.
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server
SystemProcedures110
Titre : Instructions détectées qui référencent des procédures stockées système supprimées qui ne sont pas disponibles dans Azure SQL Database.
Catégorie : Avertissement
Description
Les procédures stockées étendues et les système non pris en charge suivants ne peuvent pas être utilisés dans Azure SQL Database :sp_dboption
, sp_addserver
, sp_dropalias
, sp_activedirectory_obj
, sp_activedirectory_scp
et sp_activedirectory_start
.
Recommandation
Supprimez les références aux procédures système non prises en charge qui ont été supprimées dans Azure SQL Database.
Pour plus d’informations, consultez la fonctionnalité du moteur de base de données supprimées dans SQL Server
Indicateurs de trace
Titre : Azure SQL Database ne prend pas en charge les indicateurs de trace
Catégorie : Avertissement
Description
Les indicateurs de trace permettent de définir temporairement des caractéristiques de serveur spécifiques ou de désactiver un comportement particulier. Les indicateurs de trace servent le plus souvent à diagnostiquer des problèmes de performances et à déboguer des procédures stockées ou des systèmes informatiques complexes. Azure SQL Database ne prend pas en charge les indicateurs de trace.
Recommandation
Consultez la section sur les Objets affectés dans Azure Migrate pour afficher tous les indicateurs de trace qui ne sont pas pris en charge dans Azure SQL Database et évaluer s’ils peuvent être supprimés. Vous pouvez également migrer vers Azure SQL Managed Instance qui prend en charge un nombre limité d’indicateurs de trace globaux, ou vers SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, voir Résolution des différences de Transact-SQL durant la migration vers SQL Database.
Authentification Windows
Titre : Les utilisateurs de base de données mappés avec l’authentification Windows (sécurité intégrée) ne sont pas pris en charge dans Azure SQL Database.
Catégorie : Avertissement
Description
Azure SQL Database prend en charge deux types d’authentification :
- L’authentification SQL utilise un nom d’utilisateur et un mot de passe.
- L’authentification Microsoft Entra utilise des identités gérées par Microsoft Entra ID (anciennement Azure Active Directory), et est prise en charge pour les domaines managés et intégrés.
Les utilisateurs de base de données mappés avec l’authentification Windows (sécurité intégrée) ne sont pas pris en charge dans Azure SQL Database.
Recommandation
Fédérer le répertoire local Active Directory avec Microsoft Entra ID. L’identité Windows peut ensuite être remplacée par les identités Microsoft Entra équivalentes. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Pour plus d’informations, consultez les Capacités de sécurité de SQL Database.
xp_cmdshell
Titre : xp_cmdshell n’est pas pris en charge dans Azure SQL Database.
Catégorie: Problème
Description
xp_cmdshell
, qui génère une interface de commande Windows et transmet une chaîne pour exécution, n’est pas pris en charge dans Azure SQL Database.
Recommandation
Consultez la section sur les Objets affectés dans Azure Migrate pour voir tous les objets qui utilisent xp_cmdshell
, et évaluer si la référence à xp_cmdshell
ou l’objet affecté peuvent être supprimés. Envisagez aussi d’explorer Azure Automation qui fournit un service d’automatisation et de configuration basé sur le cloud. Vous pouvez également migrer vers SQL Server sur des machines virtuelles Azure.
Contenu connexe
- Guide de migration : de SQL Server vers Azure SQL Database
- Services et outils disponibles pour les scénarios de migration de données
- Qu’est-ce qu’Azure SQL Database ?
- Outil de calcul du coût total de possession Azure
- Cloud Adoption Framework pour Azure
- Meilleures pratiques pour l’évaluation des coûts et le dimensionnement des charges de travail migrées vers Azure
- Data Access Migration Toolkit (Préversion)
- Vue d’ensemble de l’Assistant Expérimentation de base de données