Analysieren von T-SQL-Code zum Auffinden von Fehlern
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance
Sie können die Qualität des Transact-SQL-Codes in einem Datenbankschema verbessern, indem Sie ihn in ein Datenbankprojekt importieren und den Code anhand einer Reihe von Regeln analysieren. Sie können beispielsweise Fehler in einem Schema finden, das Sie nicht entwickelt haben und deren Qualität nicht überprüft wurde. Weitere Informationen finden Sie unter Code Analysis-Übersicht.
Für diese anfängliche Bewertung möchten Sie alle potenziellen Probleme im Datenbankcode ermitteln. Sie überprüfen die Warnungen und den Code, der diese Warnungen verursacht hat. Um den T-SQL-Code zu verbessern, korrigieren Sie Warnungen, unterdrücken eventuell eine Warnung und analysieren Sie das Datenbankprojekt iterativ.
Voraussetzungen
Bevor Sie den Code in einem Datenbankprojekt analysieren können, müssen Sie bereits über ein SQL-Projekt verfügen. Weitere Informationen zur Verwendung einer vorhandenen Datenbank zum Erstellen eines Projekts finden Sie im Lernprogramm: Starten aus einer vorhandenen Datenbank.
Aktivieren der SQL-Codeanalyse im Projekt-Build
Um die SQL-Codeanalyse in Visual Studio zu aktivieren, klicken Sie mit der rechten Maustaste auf das Projekt in Projektmappen-Explorer, und wählen Sie Eigenschaften aus. Aktivieren Sie auf der Registerkarte Code Analysis des Eigenschaftenfensters das Kontrollkästchen für Code Analysis auf Build aktivieren.
Speichern Sie das Projekteigenschaftenfenster und kehren Sie zum Projektmappen-Explorer zurück.
Bearbeiten Sie die .sqlproj
-Datei direkt, um die SQL-Codeanalyse in einem SQL-Projekt zu aktivieren. Öffnen Sie die .sqlproj
-Datei, und fügen Sie dem ersten <PropertyGroup>
-Block ein Element <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
hinzu, um die Codeanalyse zu aktivieren.
Um die SQL-Codeanalyse in der Erweiterung SQL Database Projects zu aktivieren, bearbeiten Sie die .sqlproj
-Datei direkt. Öffnen Sie die .sqlproj
-Datei aus der Explorer-Ansicht oder klicken Sie mit der rechten Maustaste auf das Projekt in der Ansicht Datenbankprojekte und wählen Sie SQLPROJ-Datei bearbeiten aus.
Fügen Sie im Text-Editor ein Element <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
zum ersten <PropertyGroup>
-Block hinzu, um die Codeanalyse zu aktivieren.
Bearbeiten Sie die .sqlproj
-Datei direkt, um die SQL-Codeanalyse in einem SQL-Projekt zu aktivieren. Öffnen Sie die .sqlproj
-Datei, und fügen Sie dem ersten <PropertyGroup>
-Block ein Element <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
hinzu, um die Codeanalyse zu aktivieren.
Analysieren des Codes
Um den Code in einem Datenbankprojekt mit aktivierter Codeanalyse im Build zu analysieren, klicken Sie mit der rechten Maustaste auf das Projekt in Projektmappen-Explorer und wählen Sie Erstellen aus.
Im Fenster Ausgabe wird das Ergebnis des gesamten Build-Prozesses angezeigt.
Der T-SQL-Code in Ihrem Datenbankprojekt wird während des Builds analysiert. Fehler und Warnungen aus der Codeanalyse werden in der Fehlerliste angezeigt. Wenn die Fehlerliste nicht angezeigt wird, öffnen Sie das Menü „Ansicht“ und wählen Sie Fehlerliste aus. Sie können auf eine Warnung doppelklicken, um zur Codezeile zu navigieren, die die Warnung verursacht hat.
Um den Code in einem Datenbankprojekt mit aktivierter Codeanalyse im Build zu analysieren, klicken Sie mit der rechten Maustaste auf das Projekt in Projektmappen-Explorer und wählen Sie Erstellen aus.
Im Fenster Ausgabe wird das Ergebnis des gesamten Build-Prozesses angezeigt.
Der T-SQL-Code in Ihrem Datenbankprojekt wird während des Builds analysiert. Fehler und Warnungen aus der Codeanalyse werden in der Fehlerliste angezeigt. Wenn die Fehlerliste nicht angezeigt wird, öffnen Sie das Menü „Ansicht“ und wählen Sie Fehlerliste aus. Sie können auf eine Warnung doppelklicken, um zur Codezeile zu navigieren, die die Warnung verursacht hat.
Um den Code in einem Datenbankprojekt mit aktivierter Codeanalyse im Build zu analysieren, klicken Sie mit der rechten Maustaste auf das Projekt in der Anzeige Datenbankprojekte und wählen Sie Erstellen aus.
Im Ausgabefenster werden die Ergebnisse des gesamten Build-Prozesses sowie alle Fehler oder Warnungen aus der Codeanalyse angezeigt. Die in den einzelnen Warnungen oder Fehlern angegebenen Dateien sind interaktive Links, die zu der Codezeile navigieren, die die Warnung verursacht hat.
Führen Sie den dotnet build
-Befehl über die Befehlszeile im Projektverzeichnis aus, um den Code in einem Datenbankprojekt mit aktivierter Codeanalyse zu analysieren.
dotnet build MyDatabaseProject.sqlproj
In der Ausgabe des Befehls werden die Ergebnisse des gesamten Build-Prozesses sowie alle Fehler oder Warnungen aus der Codeanalyse angezeigt.
Konfigurieren von Codeanalyseregeln
Um eine spezifische Regel in Visual Studio zu aktivieren oder zu deaktivieren, klicken Sie mit der rechten Maustaste auf das Projekt in Projektmappen-Explorer, und wählen Sie Eigenschaften aus. Wählen Sie auf der Registerkarte Codeanalyse des Eigenschaftenfensters die Regel aus der Tabelle aus. Um den Schweregrad einer Regel zu ändern, wählen Sie das Kontrollkästchen Warnung als Fehler behandeln für diese Regel aus der Liste aus.
Speichern Sie das Projekteigenschaftenfenster und kehren Sie zum Projektmappen-Explorer zurück.
Um eine bestimmte Regel in einem SQL-Projekt zu deaktivieren oder zu aktivieren, bearbeiten Sie die .sqlproj
-Datei direkt. Öffnen Sie die .sqlproj
-Datei, und fügen Sie das Element für SqlCodeAnalysisRules
im ersten <PropertyGroup>
-Block hinzu, um die zu aktivierenden oder deaktivierenden Regeln anzugeben. Die folgende Beispielkonfiguration deaktiviert zwei Regeln (SR0007 und SR0006) und wechselt SR0008, um zu einem Build-Fehler zu führen. Die restlichen Regeln werden standardmäßig aktiviert.
<?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>
...
Um eine bestimmte Regel in der Erweiterung SQL Database Projects zu deaktivieren oder zu aktivieren, bearbeiten Sie die .sqlproj
-Datei direkt. Öffnen Sie die .sqlproj
-Datei aus der Explorer-Ansicht oder klicken Sie mit der rechten Maustaste auf das Projekt in der Ansicht Datenbankprojekte und wählen Sie SQLPROJ-Datei bearbeiten aus.
Fügen Sie das Element SqlCodeAnalysisRules
im ersten <PropertyGroup>
-Block hinzu, oder ändern Sie es, um die Regeln anzugeben, die aktiviert oder deaktiviert werden sollen. Die folgende Beispielkonfiguration deaktiviert zwei Regeln (SR0007 und SR0006) und wechselt SR0008, um zu einem Build-Fehler zu führen. Die restlichen Regeln werden standardmäßig aktiviert.
<?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>
...
Um eine bestimmte Regel in einem SQL-Projekt zu deaktivieren oder zu aktivieren, bearbeiten Sie die .sqlproj
-Datei direkt. Öffnen Sie die .sqlproj
-Datei, und fügen Sie das Element für SqlCodeAnalysisRules
im ersten <PropertyGroup>
-Block hinzu, um die zu aktivierenden oder deaktivierenden Regeln anzugeben. Die folgende Beispielkonfiguration deaktiviert zwei Regeln (SR0007 und SR0006) und wechselt SR0008, um zu einem Build-Fehler zu führen. Die restlichen Regeln werden standardmäßig aktiviert.
<?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>
...
Unterdrücken von Codeanalysewarnungen
Wenn Sie einen Codeanalysefehler oder eine Warnung für eine bestimmte .sql
-Datei in Visual Studio unterdrücken möchten, klicken Sie in der Fehlerliste mit der rechten Maustaste auf die Warnung und wählen Sie Statische CodeN Analysis-achricht(n) aus. Das Codeanalyseergebnis für diese Regel und .sql
die -Datei wird unterdrückt und wird nicht mehr in der Fehlerliste oder in der Build-Ausgabe angezeigt.
Hinweis
Durch das Unterdrücken einer Warnung wird das zugrunde liegende Problem nicht behoben. Unterdrücken Sie Warnungen nur, wenn Sie einen gültigen Grund dafür haben.
Um einen Codeanalysefehler oder eine Warnung für eine bestimmte .sql
-Datei in einem SQL-Projekt zu unterdrücken, fügen Sie dem Projekt eine StaticCodeAnalysis.SuppressMessages.xml
-Datei hinzu. Geben Sie in der Datei die Regel-ID und die Datei an, für die die Warnung unterdrückt werden soll.
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="Views/SelectStarView.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
Wenn die Datei nicht vorhanden ist, erstellen Sie sie im Stammverzeichnis des Projekts. Wenn die Datei bereits vorhanden ist, unterdrücken Sie eine zusätzliche Warnung für die vorhandene StaticCodeAnalysis.SuppressMessages.xml
-Datei, indem Sie ein neues <SuppressedFile><SuppressedRule /></SuppressedFile>
-Element erstellen.
Das Codeanalyseergebnis für diese Regel und .sql
-Datei wird unterdrückt und wird nicht mehr in der Build-Ausgabe angezeigt.
Um einen Codeanalysefehler oder eine Warnung für eine bestimmte .sql
-Datei in der Erweiterung SQL Database Projects zu unterdrücken, fügen Sie dem Projekt eine StaticCodeAnalysis.SuppressMessages.xml
-Datei hinzu. Geben Sie in der Datei die Regel-ID und die Datei an, für die die Warnung unterdrückt werden soll.
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="Views/SelectStarView.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
Wenn die Datei nicht vorhanden ist, erstellen Sie sie im Stammverzeichnis des Projekts. Wenn die Datei bereits vorhanden ist, unterdrücken Sie eine zusätzliche Warnung für die vorhandene StaticCodeAnalysis.SuppressMessages.xml
-Datei, indem Sie ein neues <SuppressedFile><SuppressedRule /></SuppressedFile>
-Element erstellen.
Das Codeanalyseergebnis für diese Regel und .sql
-Datei wird unterdrückt und wird nicht mehr in der Build-Ausgabe angezeigt.
Um einen Codeanalysefehler oder eine Warnung für eine bestimmte .sql
-Datei in einem SQL-Projekt zu unterdrücken, fügen Sie dem Projekt eine StaticCodeAnalysis.SuppressMessages.xml
-Datei hinzu. Geben Sie in der Datei die Regel-ID und die Datei an, für die die Warnung unterdrückt werden soll.
<?xml version="1.0" encoding="utf-8" ?>
<StaticCodeAnalysis version="2" xmlns="urn:Microsoft.Data.Tools.Schema.StaticCodeAnalysis">
<SuppressedFile FilePath="Views/SelectStarView.sql">
<SuppressedRule Category="Microsoft.Rules.Data" RuleId="SR0001" />
</SuppressedFile>
</StaticCodeAnalysis>
Wenn die Datei nicht vorhanden ist, erstellen Sie sie im Stammverzeichnis des Projekts. Wenn die Datei bereits vorhanden ist, unterdrücken Sie eine zusätzliche Warnung für die vorhandene StaticCodeAnalysis.SuppressMessages.xml
-Datei, indem Sie ein neues <SuppressedFile><SuppressedRule /></SuppressedFile>
-Element erstellen.
Das Codeanalyseergebnis für diese Regel und .sql
-Datei wird unterdrückt und wird nicht mehr in der Build-Ausgabe angezeigt.