Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-Datenbank in Microsoft Fabric
Sie können potenzielle Entwurfs- und Benennungsprobleme beseitigen und Leistungseinbußen vermeiden, indem Sie Ihren Datenbankcode analysieren. Die Konzepte ähneln der Durchführung statischer Analysen zum Erkennen und Beheben von Fehlern in verwaltetem Code. Sie konfigurieren, welche Analyseregeln Sie auf Ihren Datenbankcode anwenden möchten, analysieren den Code und korrigieren oder ignorieren dann die von Ihnen identifizierten Probleme. Bevor Sie Ihren Datenbankcode analysieren können, müssen Sie zuerst Ihr Datenbankschema in ein Datenbankprojekt importieren. Weitere Informationen finden Sie unter Start von einer vorhandenen Datenbank.
Durch die statische Analyse mit den providierten Regeln können Sie Probleme identifizieren, die in die folgenden Transact-SQL (T-SQL)-Kategorien fallen:
T-SQL-Entwurfsprobleme: Designprobleme umfassen Code, der sich möglicherweise nicht wie erwartet verhält, veraltete Syntax und Probleme, die beim Entwurf Ihrer Datenbank zu Problemen führen können.
T-SQL-Benennungsprobleme: Benennungsprobleme treten auf, wenn der Name eines Datenbankobjekts zu unerwarteten Problemen führen kann oder allgemein akzeptierte Konventionen verletzen kann.
T-SQL-Leistungsprobleme: Leistungsprobleme umfassen Code, der die Geschwindigkeit von Datenbankvorgängen erheblich verringern kann. Viele dieser Probleme identifizieren Code, der eine Tabellenüberprüfung verursacht, wenn der Code ausgeführt wird.
Codeanalyseregeln sind erweiterbar. Sie können eigene Regeln erstellen, um Ihre eigenen Codierungsstandards durchzusetzen. Weitere Informationen finden Sie unter Übersicht: Regelerweiterbarkeit für Codeanalyse.
SQL-Projektdateibeispiel und Syntax
Eine SQL-Projektdatei kann zwei Eigenschaften RunSqlCodeAnalysis und SqlCodeAnalysisRules enthalten. Das RunSqlCodeAnalysis Element gibt an, ob codeanalyse ausgeführt werden soll, wenn das Projekt erstellt wird. Standardmäßig führt der Build alle enthaltenen Regeln aus, und die Regelmustererkennung führt zu einer Buildwarnung.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="1.0.0" />
<PropertyGroup>
<Name>AdventureWorks</Name>
<DSP>Microsoft.Data.Tools.Schema.Sql.Sql160DatabaseSchemaProvider</DSP>
<ModelCollation>1033, CI</ModelCollation>
<RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
</PropertyGroup>
...
Das SqlCodeAnalysisRules Element gibt die Regeln und deren Fehler- oder Warnungsverhalten an. Im folgenden Beispiel sind die Regeln Microsoft.Rules.Data.SR0006 und Microsoft.Rules.Data.SR0007 deaktiviert, und eine Erkennung für die Regel Microsoft.Rules.Data.SR0008 führt zu einem Buildfehler.
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build">
<Sdk Name="Microsoft.Build.Sql" Version="1.0.0" />
<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>
...
Sie können dem Projekt eine StaticCodeAnalysis.SuppressMessages.xml Datei hinzufügen, um bestimmte Codeanalyseergebnisse zu unterdrücken. Im folgenden Beispiel wird die Warnung SR0001 für die gespeicherte Prozedur in der Datei StoredProcedures/uspGetEmployeeManagers.sql unterdrückt.
<?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>
Bereitgestellte Regeln
T-SQL-Entwurfsprobleme
Wenn Sie den T-SQL-Code in Ihrem Datenbankprojekt analysieren, sehen Sie möglicherweise eine oder mehrere Warnungen, die als Entwurfsproblem(e) kategorisiert werden. Beheben Sie diese Probleme, um die folgenden Situationen zu vermeiden:
- Nachfolgende Änderungen an Ihrer Datenbank können Anwendungen unterbrechen, die davon abhängig sind.
- Der Code erzeugt möglicherweise nicht das erwartete Ergebnis.
- Der Code wird unterbrochen, wenn Sie ihn mit zukünftigen Versionen von SQL Server ausführen.
Im Allgemeinen unterdrücken Sie kein Designproblem, da sie Ihre Anwendung entweder jetzt oder in Zukunft unterbrechen könnte.
Die bereitgestellten Regeln identifizieren die folgenden Entwurfsprobleme:
- SR0001: Vermeiden Sie AUSWÄHLEN * in gespeicherten Prozeduren, Ansichten und Tabellenwertfunktionen
- SR0008: Erwägen Sie die Verwendung von SCOPE_IDENTITY anstelle von @@IDENTITY
- SR0009: Vermeiden Sie die Verwendung von Typen variabler Länge mit der Größe 1 oder 2
- SR0010: Vermeiden Sie die Verwendung veralteter Syntax, wenn Sie Tabellen oder Ansichten verknüpfen
- SR0013: Ausgabeparameter (Parameter) ist nicht in allen Codepfaden aufgefüllt
- SR0014: Datenverlust kann beim Übertragen von {Type1} in {Type2} auftreten
T-SQL-Benennungsprobleme
Wenn Sie den T-SQL-Code in Ihrem Datenbankprojekt analysieren, werden möglicherweise eine oder mehrere Warnungen als Benennungsprobleme angezeigt. Beheben Sie diese Probleme, um die folgenden Situationen zu vermeiden:
- Der Name, den Sie für ein Objekt angeben, hat einen Konflikt mit dem Namen eines Systemobjekts.
- Sie müssen den angegebenen Namen immer in Escapezeichen einschließen (z. B. in SQL Server,
[und]). - Der Name, den Sie angeben, verwechselt andere Personen, die versuchen, Ihren Code zu lesen und zu verstehen.
- Der Code wird unterbrochen, wenn Sie ihn mit zukünftigen Versionen von SQL Server ausführen.
Im Allgemeinen unterdrücken Sie ein Benennungsproblem, wenn andere Anwendungen, die Sie nicht ändern können, vom aktuellen Namen abhängen.
Die bereitgestellten Regeln identifizieren die folgenden Entwurfsprobleme:
- SR0011: Vermeiden der Verwendung von Sonderzeichen in Objektnamen
- SR0012: Vermeiden der Verwendung reservierter Wörter für Typnamen
- SR0016: Vermeiden Sie die Verwendung von sp_ als Präfix für gespeicherte Prozeduren
T-SQL-Leistungsprobleme
Wenn Sie den T-SQL-Code in Ihrem Datenbankprojekt analysieren, könnten eine oder mehrere Warnungen als Leistungsprobleme kategorisiert werden. Beheben Sie ein Leistungsproblem, um die folgende Situation zu vermeiden:
- Beim Ausführen des Codes tritt ein Tabellenscan auf.
Im Allgemeinen können Sie ein Leistungsproblem unterdrücken, wenn die Tabelle so wenig Daten enthält, dass eine Überprüfung die Leistung nicht erheblich beeinträchtigt.
Die bereitgestellten Regeln identifizieren die folgenden Entwurfsprobleme:
- SR0004: Vermeiden Sie die Verwendung von Spalten, die keine Indizes als Testausdrücke in IN-Prädikaten aufweisen
- SR0005: Vermeiden Sie die Verwendung von Mustern, die mit „%“ in LIKE-Prädikaten beginnen
- SR0006: Verschieben eines Spaltenverweises auf eine Seite eines Vergleichsoperators zur Verwendung eines Spaltenindex
- SR0007: Verwenden Sie ISNULL (Spalte, Standardwert) bei nullfähigen Spalten in Ausdrücken
- SR0015: Extrahieren deterministischer Funktionsaufrufe aus WHERE-Prädikaten
Aktivieren und Deaktivieren der Codeanalyse
Um die SQL-Codeanalyse in der Erweiterung SQL-Datenbankprojekte zu aktivieren oder zu deaktivieren, bearbeiten Sie die .sqlproj Datei direkt, oder verwenden Sie das Dialogfeld "Codeanalyseeinstellungen".
Verwenden des Dialogfelds "Code Analysis Einstellungen" in Visual Studio Code
Die Erweiterung SQL-Datenbankprojekte bietet ein Einstellungsdialogfeld zum Konfigurieren von Codeanalyseregeln, ohne die .sqlproj Datei direkt zu bearbeiten.
Um das Dialogfeld Code Analysis Einstellungen zu öffnen, klicken Sie im Datenbankprojekteansicht mit der rechten Maustaste auf Ihr Projekt, und wählen Sie Code Analysis Einstellungen aus.
Im Dialogfeld haben Sie folgende Möglichkeiten:
- Aktivieren oder deaktivieren Sie die Codeanalyse beim Build mithilfe des Schalters Codeanalyse beim Build aktivieren oben im Dialogfeld.
- Aktivieren oder deaktivieren Sie eine Regelkategorie , indem Sie das Kontrollkästchen neben dem Kategorienamen (Entwurf, Benennung, Leistung) aktivieren oder deaktivieren.
- Ändern Sie den Schweregrad einer Regel , indem Sie in der Dropdownliste neben der Regel eine Schweregrad auswählen. Verfügbare Optionen sind Warnung, Fehler und Keine.
- Suchen Sie mithilfe der Suchleiste oben in der Regelliste nach einer Regel.
- Filterregeln nach Schweregrad mithilfe der Dropdownliste "Alle Schweregrade" .
Wählen Sie 'OK' aus, um Ihre Änderungen zu speichern und das Dialogfeld zu schließen, oder 'Übernehmen', um zu speichern, ohne zu schließen. Wählen Sie "Zurücksetzen" aus, um auf die Standardeinstellungen zurückzusetzen.
Bearbeiten der SQL-Projektdatei zum Ändern von Codeanalyseeinstellungen
Fügen Sie im Text-Editor das <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> Element zum ersten <PropertyGroup> Block hinzu, um die Codeanalyse zu aktivieren. Um die Codeanalyse zu deaktivieren, ändern Sie den Wert des RunSqlCodeAnalysis Elements zu False oder entfernen Sie das Element vollständig.
Um die SQL-Codeanalyse in SQL Server Management Studio (SSMS) zu aktivieren oder zu deaktivieren, klicken Sie mit der rechten Maustaste auf das Projekt in Solution Explorer, und wählen Sie Properties aus. Wählen Sie auf der Registerkarte Code Analysis des Eigenschaftenfensters die gewünschten code analysis Einstellungen aus.
Um eine bestimmte Regel zu deaktivieren oder den Schweregrad einer Regel zu ändern, wählen Sie die entsprechende Option aus der Dropdownliste für diese Regel in der Regelliste aus.
Um die SQL-Codeanalyse in Visual Studio zu aktivieren oder zu deaktivieren, klicken Sie mit der rechten Maustaste auf das Projekt in Solution Explorer und wählen Sie Properties aus. Wählen Sie auf der Registerkarte Code Analysis des Eigenschaftenfensters die gewünschten code analysis Einstellungen aus.
Um eine bestimmte Regel zu deaktivieren oder den Schweregrad einer Regel zu ändern, wählen Sie die entsprechende Option aus der Dropdownliste für diese Regel in der Regelliste aus.
Um die SQL-Codeanalyse in Visual Studio zu aktivieren oder zu deaktivieren, klicken Sie mit der rechten Maustaste auf das Projekt in Solution Explorer und wählen Sie Properties aus. Wählen Sie auf der Registerkarte Code Analysis des Eigenschaftenfensters die gewünschten code analysis Einstellungen aus.
Um eine bestimmte Regel zu deaktivieren oder den Schweregrad einer Regel zu ändern, wählen Sie die entsprechende Option aus der Dropdownliste für diese Regel in der Regelliste aus.
Um die Codeanalyseeinstellungen in der Projektdatei außer Kraft zu setzen, verwenden Sie die Eigenschaften /p:RunSqlCodeAnalysis und /p:SqlCodeAnalysisRules mit dem Befehl dotnet build. So erstellen Sie z. B. mit deaktivierter Codeanalyse:
dotnet build /p:RunSqlCodeAnalysis=False
Um mit bestimmten Regel-Einstellungen für die SQL-Codeanalyse zu bauen:
dotnet build /p:RunSqlCodeAnalysis=True /p:SqlCodeAnalysisRules="+!Microsoft.Rules.Data.SR0001;+!Microsoft.Rules.Data.SR0008"