Exemplarische Vorgehensweise: Analysieren des Transact-SQL-Codes für eine vorhandene Datenbank
Sie können die Qualität des Transact-SQL-Codes in einem Datenbankschema verbessern, indem Sie den Code in ein Datenbankprojekt importieren und mit einem Satz Regeln analysieren. Sie können beispielsweise alle Fehler in einem Schema suchen, das Sie verwenden müssen, das Sie jedoch nicht entwickelt haben und dessen Qualität nicht überprüft wurde. Weitere Informationen finden Sie unter Analysieren von Datenbankcode zum Verbessern der Codequalität.
Bevor Sie den Datenbankcode analysieren können, müssen Sie das Schema für eine vorhandene Datenbank bereits in ein Datenbankprojekt importiert haben. Dieses Projekt enthält Code, dessen Qualität Sie nicht kennen. Sie können den Transact-SQL-Code analysieren und dabei alle verfügbaren Regeln für statische Codeanalysen anwenden. Es soll möglich sein, später einige Regeln für das Team zu deaktivieren. Für diese erste Bewertung sollen jedoch alle potenziellen Probleme im Datenbankcode angezeigt werden. Sie überprüfen die Warnungen und den Code, der diese Warnungen verursacht hat. Sie korrigieren eine Warnung, unterdrücken weitere Warnungen und analysieren das Datenbankprojekt erneut.
Vorbereitungsmaßnahmen
Bevor Sie diese exemplarische Vorgehensweise durchführen können, müssen Sie die Exemplarische Vorgehensweise: Stellen eines vorhandenen Datenbankschemas unter Versionskontrolle abgeschlossen haben. Im Verlauf dieser exemplarischen Vorgehensweise werden Sie eine Projektmappe erstellen, die ein Datenbankprojekt mit der Bezeichnung MyAdvWorks enthält.
So konfigurieren Sie Regeln zum Analysieren des Datenbankprojekts
Öffnen Sie in Visual Studio die Projektmappe MyAdvWorks.
Erweitern Sie in der Schemaansicht den Knoten für das Datenbankprojekt, wenn er nicht bereits erweitert ist.
Zeigen Sie im Menü Daten auf Statische Codeanalyse, und klicken Sie auf Konfigurieren.
Die Codeanalyseeigenschaften für das Datenbankprojekt werden angezeigt.
Erweitern Sie in der Liste Regeln die Knoten Entwurf, Benennung und Leistung, um alle Regeln anzuzeigen, die für die Analyse von Transact-SQL-Code verfügbar sind.
Überprüfen Sie, ob die Kontrollkästchen für alle Regeln aktiviert sind.
Sie können das Kontrollkästchen für eine Kategorie von Regeln, z. B. Entwurf, aktivieren oder deaktivieren, um die Kontrollkästchen für alle Regeln in dieser Kategorie zu aktivieren oder zu deaktivieren.
Tipp
Sie können eine Regel statt als Warnung als Fehler behandeln, indem Sie das Kontrollkästchen Warnung als Fehler behandeln für diese Regel aktivieren.
Klicken Sie im Menü Datei auf Alle speichern.
Als Nächstes werden Sie den Transact-SQL-Code im Datenbankprojekt analysieren. Im Verlauf dieser exemplarischen Vorgehensweise werden Sie die Analyse manuell starten. Sie können die Analyse jedoch auch so konfigurieren, dass sie nach jeder erfolgreichen Erstellung des Datenbankprojekts gestartet wird. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren und Deaktivieren der statischen Analyse für Datenbankcode.
So analysieren Sie das Datenbankprojekt
Zeigen Sie im Menü Daten auf Statische Codeanalyse, und klicken Sie auf Ausführen.
Der Transact-SQL-Code im Datenbankprojekt wird analysiert, und Warnungen werden in der Fehlerliste aufgeführt. Wenn die Fehlerliste nicht angezeigt wird, öffnen Sie das Menü Ansicht und klicken auf Fehlerliste.
Als Nächstes werden Sie eine Warnung anzeigen und korrigieren.
So zeigen Sie eine Warnung an und korrigieren sie
Suchen Sie in der Fehlerliste die folgende Warnung:
SR0014 : Microsoft.Rules.Data: Beim Umwandeln der ASCII-Zeichenfolge (1) in SmallInt können Daten verloren gehen.
Der Code, der diese Warnung verursacht hat, befindet sich in der Datei "ufnGetStock.function.sql". Sie finden den Code in Zeile 12, Spalte 30.
Klicken Sie mit der rechten Maustaste auf die Warnung in der Fehlerliste, und klicken Sie auf Hilfe zu Fehlern anzeigen.
Das Hilfethema für Regel SR0014 wird angezeigt. Hier erfahren Sie, wodurch die Regel ausgelöst wurde, wie die Warnung aufgelöst wird, und wann Sie die Warnung ignorieren können. Es wird außerdem ein Beispiel für Transact-SQL-Code angezeigt, der diese Warnung verursacht, sowie Updates für diesen Code, mit denen die Warnung aufgelöst wird.
Doppelklicken Sie in der Fehlerliste auf die Warnung, oder markieren Sie sie, und drücken Sie die EINGABETASTE.
Der Transact-SQL-Editor wird geöffnet. Im Editor wird der Code angezeigt, der die Warnung verursacht hat. Der Cursor wird am Anfang des Codes angezeigt, der die Warnung verursacht hat. In diesem Fall wird der Cursor in der FROM-Klausel angezeigt, da die ganzzahlige Spalte (LocationID) mit einer Konstante aus einem einzelnen Zeichen ('6') verglichen wird. Der folgende Code wird angezeigt:
CREATE FUNCTION [dbo].[ufnGetStock](@ProductID [int]) RETURNS [int] AS -- Returns the stock level for the product. This function is used internally only BEGIN DECLARE @ret int; SELECT @ret = SUM(p.[Quantity]) FROM [Production].[ProductInventory] p WHERE p.[ProductID] = @ProductID AND p.[LocationID] = '6'; -- Only look at inventory in the misc storage IF (@ret IS NULL) SET @ret = 0 RETURN @ret END; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Scalar function returning the quantity of inventory in LocationID 6 (Miscellaneous Storage)for a specified ProductID.', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'FUNCTION', @level1name = N'ufnGetStock'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Input parameter for the scalar function ufnGetStock. Enter a valid ProductID from the Production.ProductInventory table.', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'FUNCTION', @level1name = N'ufnGetStock', @level2type = N'PARAMETER', @level2name = N'@ProductID';
Aktualisieren Sie den Code für die SELECT-Anweisung entsprechend dem folgenden Beispiel:
SELECT @ret = SUM(p.[Quantity]) FROM [Production].[ProductInventory] p WHERE p.[ProductID] = @ProductID AND p.[LocationID] = 6; -- Only look at inventory in the misc storage
Klicken Sie im Menü Datei auf ufnGetStock.function.sql speichern.
Als Nächstes werden Sie eine zweite Warnung überprüfen und unterdrücken.
So zeigen Sie eine Codeanalysewarnung an und unterdrücken sie
Suchen Sie in der Fehlerliste die folgende Warnung:
SR0011 : Microsoft.Rules.Data: Object name(Database Version) contains special characters.
Der Code, der diese Warnung verursacht hat, befindet sich in der Datei "AWBuildVersion.table.sql". Sie finden den Code in Zeile 3, Spalte 5.
An diesem Punkt müssen Sie sich entscheiden, ob die Sonderzeichen im Namen des Objekts ausgeschlossen werden sollen. Mit der Datenbankumgestaltung können Sie das Aktualisieren aller Verweise auf dieses Objekt automatisieren, sodass diese den richtigen Namen enthalten. Sie verhindern damit jedoch, dass Anwendungen ordnungsgemäß funktionieren, die den alten Namen verwenden. Wenn Sie nicht genügend Informationen haben, um sich für die beste Lösung zu entscheiden, können Sie die Warnung unterdrücken, bis Sie untersucht haben, wie sich die Änderung auswirkt. Sie können in Visual Studio Team Foundation Server auch eine Arbeitsaufgabe erstellen, um diese Aufgabe nachzuverfolgen oder einer anderen Person zuzuweisen.
Klicken Sie in der Fehlerliste auf die Überschrift für die Spalte Beschreibung.
In der Fehlerliste werden die Warnungen nach ihren Beschreibungen sortiert, wobei alle SR0011-Warnungen zusammen gruppiert werden.
Führen Sie in der Fehlerliste einen Bildlauf durch, bis die SR0011-Warnung angezeigt wird, und markieren Sie diese Warnung.
Wenn Sie mehrere Warnungen ignorieren möchten, können Sie eine Liste zusammenhängender Warnungen markieren, indem Sie auf die erste Warnung in der Liste klicken und beim Klicken auf die letzte Warnung in der Liste die UMSCHALTTASTE drücken.
Tipp
Sie können eine Arbeitsaufgabe über diese Liste erstellen. Klicken Sie hierzu mit der rechten Maustaste auf eine markierte Zeile. Zeigen Sie dann auf Arbeitsaufgabe erstellen, und klicken Sie anschließend auf einen Arbeitsaufgabentyp. Wenn Sie die Warnung unterdrücken, bis der Name geändert werden kann, sollten Sie in die Arbeitsaufgabe eine Anweisung einschließen, mit der die Unterdrückung der Warnung nach dem Ändern des Namens aufgehoben wird. Um diese exemplarische Vorgehensweise kurz zu halten, überspringen Sie das Erstellen der Arbeitsaufgaben.
Klicken Sie mit der rechten Maustaste auf eine markierte Zeile, und klicken Sie auf Statische Codeanalyse-Nachrichten unterdrücken.
Dem Datenbankprojekt wird eine Datei mit dem Namen "StaticCodeAnalysis.SuppressMessages.xml" hinzugefügt. Die Datei "MyAdvWorks.dbproj" wird aus der Versionskontrolle ausgecheckt. Die unterdrückten Warnungen werden in der Fehlerliste nicht mehr angezeigt, sodass die Liste nun weniger Warnungen enthält.
Tipp
Wenn Sie eine Warnung für eine Datei im Datenbankprojekt unterdrücken, unterdrücken Sie alle Instanzen dieser Warnungen für diese Datei.
Die XML-Datei enthält die Liste der unterdrückten Warnungen. Sie können diese Datei löschen, wenn Sie die Unterdrückung aller unterdrückten Warnungen aufheben möchten. Weitere Informationen finden Sie unter Gewusst wie: Beenden der Unterdrückung von Datenbank-Codeanalysewarnungen.
Im letzten Schritt werden Sie das Datenbankprojekt erneut analysieren.
So analysieren Sie das Datenbankprojekt erneut
Zeigen Sie im Menü Daten auf Statische Codeanalyse, und klicken Sie auf Ausführen.
Der Transact-SQL-Code im Datenbankprojekt wird erneut analysiert, und in der Fehlerliste werden die verbleibenden Warnungen angezeigt. Die Warnungen, die Sie korrigiert oder unterdrückt haben, werden nicht angezeigt.
Nächste Schritte
In einer typischen Umgebung würden Sie jede Warnung analysieren, die in der Fehlerliste angezeigt wird. Sie würden anschließend die Probleme beheben, die Sie sofort beheben können, würden die Probleme unterdrücken, die ignoriert werden können, und würden Arbeitsaufgaben für Probleme erstellen, die später behoben werden müssen. Bei einigen Problemen können Sie die Warnungen mithilfe der Datenbankumgestaltung auflösen. Weitere Informationen zur Datenbankumgestaltung finden Sie unter Umgestalten von Datenbankcode und Daten.
Nachdem Sie alle Warnungen aufgelöst oder unterdrückt haben, sollten Sie die Datenbankkomponententests und die Anwendungstests ausführen, um zu überprüfen, dass durch die Änderungen keine Probleme auftreten. Weitere Informationen zu Datenbankkomponententests finden Sie unter Überprüfen von Datenbankcode mithilfe von Komponententests.
Siehe auch
Konzepte
Analysieren von Datenbankcode zum Verbessern der Codequalität