Notes
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.
S’applique à : SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
L'analyse du code de votre base de données vous permet d'éliminer les problèmes potentiels de conception et de dénomination et d'éviter les écueils en matière de performances. Les concepts sont très similaires à ceux de l'analyse statique visant à détecter et à corriger les défauts dans le code managé. Vous configurez les règles d'analyse que vous souhaitez appliquer au code de votre base de données, analysez le code, puis corrigez ou ignorez les problèmes que vous avez identifiés. Avant de pouvoir analyser le code de votre base de données, vous devez d'abord importer votre schéma de base de données dans un projet de base de données. Pour plus d'informations, voir Débuter à partir d'une base de données existante.
En effectuant une analyse statique à l'aide des règles fournies, vous pouvez identifier les problèmes qui s'inscrivent dans les catégories suivantes :
Problèmes de conception T-SQL Les problèmes de conception comprennent le code qui pourrait ne pas se comporter comme vous l'attendez, la syntaxe déconseillée et les problèmes qui pourraient survenir lorsque la conception de votre base de données est modifiée.
Problèmes de dénomination T-SQL Les problèmes de dénomination surviennent lorsque le nom d'un objet de base de données risque de provoquer des problèmes inattendus ou de violer les conventions généralement acceptées.
Problèmes de performance T-SQL Les problèmes de performance comprennent le code qui peut réduire sensiblement la vitesse à laquelle les opérations de la base de données sont terminées. La plupart de ces problèmes identifient un code qui provoquera une analyse de table lors de son exécution.
Les règles d’analyse du code sont extensibles. Vous pouvez créer vos règles pour faire respecter vos normes de codage. Pour plus d'informations, consultez Vue d'ensemble de l'extensibilité des règles d'analyse de code.
Exemple et syntaxe de fichier projet SQL
Un fichier projet SQL peut contenir deux propriétés : RunSqlCodeAnalysis
et SqlCodeAnalysisRules
. L'élément RunSqlCodeAnalysis
indique si l'analyse de code est exécutée lors de la génération du projet. Par défaut, toutes les règles incluses sont exécutées et la détection d'un modèle de règle déclenche un avertissement de génération.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
</PropertyGroup>
...
L'élément SqlCodeAnalysisRules
spécifie les règles et leur comportement en cas d'erreur ou d'avertissement. Dans l'exemple suivant, les règles Microsoft.Rules.Data.SR0006 et Microsoft.Rules.Data.SR0007 sont désactivées et la détection de la règle Microsoft.Rules.Data.SR0008 entraînera une erreur de construction.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="0.2.0-preview" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
<SqlCodeAnalysisRules>-Microsoft.Rules.Data.SR0006;-Microsoft.Rules.Data.SR0007;+!Microsoft.Rules.Data.SR0008</SqlCodeAnalysisRules>
</PropertyGroup>
...
Un fichier StaticCodeAnalysis.SuppressMessages.xml
peut être ajouté au projet pour supprimer des résultats d'analyse de code spécifiques. L'exemple suivant supprime l'avertissement SR0001
pour la procédure stockée dans le fichier StoredProcedures/uspGetEmployeeManagers.sql
.
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="StoredProcedures/uspGetEmployeeManagers.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
Règles fournies
Problèmes de conception T-SQL
Lorsque vous analysez le code T-SQL de votre projet de base de données, un ou plusieurs avertissements peuvent être classés comme des problèmes de conception. Vous devez résoudre les problèmes de conception pour éviter les situations suivantes :
- Les modifications ultérieures apportées à votre base de données risquent de compromettre les applications qui en dépendent.
- Le code peut ne pas produire le résultat attendu.
- Le code risque de ne pas fonctionner si vous l'exécutez avec des versions ultérieures de SQL Server.
En général, vous ne devez pas supprimer un problème de conception parce qu'il risque de compromettre votre application, aujourd'hui ou à l'avenir.
Les règles fournies identifient les problèmes de conception suivants :
- SR0001 : Éviter SELECT * dans les procédures stockées, les vues et les fonctions table
- SR0008 : envisager d'utiliser SCOPE_IDENTITY au lieu de @@IDENTITY
- SR0009 : éviter d’utiliser des types de longueur variable de taille 1 ou 2
- SR0010 : évitez d’utiliser la syntaxe déconseillée lorsque vous joignez des tables ou des vues
- SR0013 : Le paramètre de sortie (paramètre) n’est pas peuplé dans tous les chemins du code
- SR0014 : La perte de données peut se produire lors d’une projection de {Type1} vers {Type2}
Problèmes de dénomination T-SQL
Lorsque vous analysez le code T-SQL de votre projet de base de données, un ou plusieurs avertissements peuvent être classés comme des problèmes de dénomination. Vous devez résoudre les problèmes de dénomination pour éviter les situations suivantes :
- Le nom que vous avez spécifié pour un objet peut entrer en conflit avec le nom d'un objet système.
- Le nom que vous avez spécifié devra toujours être entouré de caractères d'échappement (dans SQL Server, « [ » et « ] »).
- Le nom que vous avez spécifié peut prêter à confusion pour les personnes qui essaient de lire et de comprendre votre code.
- Le code risque de ne pas fonctionner si vous l'exécutez avec des versions ultérieures de SQL Server.
En général, vous pouvez supprimer un problème de dénomination si d'autres applications que vous ne pouvez pas modifier dépendent du nom actuel.
Les règles fournies identifient les problèmes de conception suivants :
- SR0011 : éviter d’utiliser des caractères spéciaux dans les noms d’objets
- SR0012 : éviter d’utiliser des mots réservés pour les noms de types
- SR0016 : évitez d’utiliser sp_ comme préfixe pour les procédures stockées
Problèmes de performances T-SQL
Lorsque vous analysez le code T-SQL de votre projet de base de données, un ou plusieurs avertissements peuvent être classés comme des problèmes de performance. Vous devez résoudre les problèmes de performance afin d'éviter la situation suivante :
- Une analyse de table se produit lorsque le code est exécuté.
En général, vous pouvez supprimer un problème de performance si la table contient si peu de données qu'une analyse n'entraînera pas de baisse significative des performances.
Les règles fournies identifient les problèmes de conception suivants :
- SR0004 : évitez d’utiliser des colonnes qui n’ont pas d’index en tant qu’expressions de test dans les prédicats IN
- SR0005 : évitez d'utiliser des modèles commençant par « % » dans les prédicats LIKE
- SR0006 : déplacer une référence de colonne d’un côté d’un opérateur de comparaison pour utiliser un index de colonne
- SR0007 : utiliser ISNULL(column, default_value) sur les colonnes nullables dans les expressions
- SR0015 : extraire les appels de fonction déterministes à partir des prédicats WHERE
Activer et désactiver l'analyse de code
Pour activer ou désactiver l'analyse du code SQL dans Visual Studio, cliquez avec le bouton droit sur le projet dans l'Explorateur de solutions et sélectionnez Propriétés. Dans l'onglet Analyse du code de la fenêtre propriétés, sélectionnez les paramètres d'analyse du code souhaités.
Pour désactiver ou activer une règle spécifique, sélectionnez-la dans la table. Pour modifier la gravité d'une règle, cochez la case Traiter l'avertissement comme une erreur pour cette règle dans la liste.
Pour activer ou désactiver Code Analysis SQL dans les projets SQL de style SDK (préversion), modifiez le fichier .sqlproj
directement. Ouvrez le fichier .sqlproj
dans l’affichage de l’Explorateur de solutions en double-cliquant sur le projet.
Dans l'éditeur de texte, ajoutez un élément <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
au premier bloc <PropertyGroup>
pour permettre l'analyse du code. Pour désactiver l'analyse du code, remplacez la valeur de l'élément RunSqlCodeAnalysis
par True
ou False
ou supprimez complètement l'élément.
Pour activer ou désactiver l'analyse du code SQL dans l'extension SQL Database Projects, modifiez le fichier .sqlproj
directement. Ouvrez le fichier .sqlproj
à partir de la vue Explorateur ou en cliquant avec le bouton droit sur le projet dans la vue Projets de base de données et en sélectionnant Modifier le fichier .sqlproj.
Dans l'éditeur de texte, ajoutez un élément <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
au premier bloc <PropertyGroup>
pour permettre l'analyse du code. Pour désactiver l'analyse du code, remplacez la valeur de l'élément RunSqlCodeAnalysis
par True
ou False
ou supprimez complètement l'élément.
Pour remplacer les paramètres d'analyse du code dans le fichier projet, vous pouvez utiliser les propriétés /p:RunSqlCodeAnalysis
et /p:SqlCodeAnalysisRules
avec la commande dotnet build
. Par exemple, pour générer avec l'analyse de code désactivée :
dotnet build /p:RunSqlCodeAnalysis=False
Pour générer avec des paramètres spécifiques des règles d'analyse du code SQL :
dotnet build /p:RunSqlCodeAnalysis=True /p:SqlCodeAnalysisRules="+!Microsoft.Rules.Data.SR0001;+!Microsoft.Rules.Data.SR0008"