Megosztás a következőn keresztül:


Egyéni kódelemzési szabályok létrehozása

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Ez az útmutató az SQL Server kódelemzési szabályának létrehozásához használt lépéseket mutatja be. Az ebben az útmutatóban létrehozott szabály a tárolt eljárások, triggerek és függvények WAITFOR DELAY utasítások elkerülésére szolgál.

Ebben az útmutatóban egy egyéni szabályt hoz létre Transact-SQL statikus kódelemzéshez az alábbi lépések végrehajtásával:

  1. Hozzon létre egy osztálytárprojektet, engedélyezze az aláírást a projekthez, és adja hozzá a szükséges hivatkozásokat.
  2. Hozzon létre két segéd C#-osztályt.
  3. Hozzon létre egy C# egyéni szabályosztályt.
  4. Hozza létre az osztálytárprojektet.
  5. Telepítse és tesztelje az új kódelemzési szabályt.

A Visual Studio (SQL Server Data Tools) utasításain kívül az útmutató az SDK-stílusú SQL-projektekre összpontosít.

Prerequisites

Az útmutató elvégzéséhez a következő összetevőkre van szüksége:

  • Telepítve van a Visual Studio egy verziója, amely tartalmazza az SQL Server Data Toolst, és támogatja a C# .NET-keretrendszer fejlesztését.
  • SQL Server-objektumokat tartalmazó SQL Server-projekt.
  • Az SQL Server egy példánya, amelyen adatbázisprojektet helyezhet üzembe.

Ez az útmutató olyan felhasználók számára készült, akik már ismerik az SQL Server Data Tools SQL Server-funkcióit. Ismernie kell a Visual Studio fogalmait, például az osztálytárak létrehozását, a NuGet-csomagok hozzáadását, valamint azt, hogy a kódszerkesztővel hogyan adhat hozzá kódot egy osztályhoz.

Note

Az SDK-stílusú SQL Server Data Tools előzetes verziójának korlátozásai miatt az útmutató elvégzéséhez több Visual Studio-telepítésre van szükség. Az osztálytárprojekt létrehozásához az első telepítésre, a második telepítésre az SDK-stílusú SQL Database-projekt létrehozásához van szükség.

Ez az útmutató olyan felhasználók számára készült, akik már ismerik az SQL Server Data Tools SQL Server-funkcióit. Ismernie kell a Visual Studio fogalmait, például az osztálytárak létrehozását, a NuGet-csomagok hozzáadását, valamint azt, hogy a kódszerkesztővel hogyan adhat hozzá kódot egy osztályhoz.

Ez az útmutató olyan felhasználók számára készült, akik már ismerik a Visual Studio Code SQL Database Projects bővítményét. Ismernie kell a fejlesztési fogalmakat, például az osztálytár létrehozását, a csomagok hozzáadását és a kódszerkesztő használatát a kód szerkesztéséhez.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson egy másik nézetre az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozásához alkalmazáskód-szerkesztő használatával.

  • Szövegszerkesztő, például a Visual Studio Code fájlszerkesztője.
  • SQL-objektumokat tartalmazó SQL-adatbázisprojekt.
  • .NET 8 SDK

Ez az útmutató olyan felhasználók számára készült, akik már ismerik az SQL-projekteket. Ismernie kell a fejlesztési fogalmakat, például az osztálytár létrehozását, a csomagok hozzáadását és a kódszerkesztő használatát a kód szerkesztéséhez.

1. lépés: Osztálytárprojekt létrehozása

Először hozzon létre egy osztálytárat. Osztálytárprojekt létrehozása:

  1. Hozzon létre egy C# (.NET Framework) osztálytárprojektet SampleRules.

  2. Nevezze át a fájlt Class1.csAvoidWaitForDelayRule.cs.

  3. A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza hozzáadása, majd Hivatkozáslehetőséget.

  4. Válassza a System.ComponentModel.Composition a Szerelvények\Keretrendszerek lapon.

  5. A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza a NuGet-csomagok kezeléselehetőséget. Keresse meg és telepítse a Microsoft.SqlServer.DacFx NuGet-csomagot. A kiválasztott verziónak 162.x.x (például 162.2.111) kell lennie a Visual Studio 2022-vel.

Ezután adja hozzá a szabály által használt támogató osztályokat.

Először hozzon létre egy osztálytárat. Osztálytárprojekt létrehozása:

  1. Hozzon létre egy C# (.NET Framework) osztálytárprojektet SampleRules.

  2. Nevezze át a fájlt Class1.csAvoidWaitForDelayRule.cs.

  3. A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza hozzáadása, majd Hivatkozáslehetőséget.

  4. Válassza a System.ComponentModel.Composition a Szerelvények\Keretrendszerek lapon.

  5. A Megoldáskezelőben kattintson a jobb gombbal a projektcsomópontra, majd válassza a NuGet-csomagok kezeléselehetőséget. Keresse meg és telepítse a Microsoft.SqlServer.DacFx NuGet-csomagot. A kiválasztott verziónak 162.x.x (például 162.2.111) kell lennie a Visual Studio 2022-vel.

Ezután adja hozzá a szabály által használt támogató osztályokat.

  1. Indítsa el a Visual Studio Code-ot, és nyissa meg azt a mappát, ahol létre szeretné hozni a projektet.

  2. Nyisson meg egy Terminál ablakot a Visual Studio Code-ban a Nézet menü kiválasztásával, majd Terminál.

  3. A termináladja meg a következő parancsokat egy új megoldás és projekt létrehozásához:

    dotnet new sln
    dotnet new classlib -n SampleRules -o SampleRules
    dotnet sln add SampleRules/SampleRules.csproj
    
  4. Váltás a SampleRules könyvtárra:

    cd SampleRules
    
  5. Adja hozzá a szükséges NuGet-csomagot:

    dotnet add package Microsoft.SqlServer.DacFx
    

Ezután adja hozzá a szabály által használt támogató osztályokat.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik kimutatásra az osztálytárprojekt és az egyéni szabályosztályok alkalmazáskód-szerkesztővel való létrehozásáról.

  1. Nyisson meg egy parancssort vagy egy terminálablakot, és lépjen arra a mappára, ahol létre szeretné hozni a projektet.

  2. A termináladja meg a következő parancsokat egy új megoldás és projekt létrehozásához:

    dotnet new sln
    dotnet new classlib -n SampleRules -o SampleRules
    dotnet sln add SampleRules/SampleRules.csproj
    
  3. Váltás a SampleRules könyvtárra:

    cd SampleRules
    
  4. Adja hozzá a szükséges NuGet-csomagot:

    dotnet add package Microsoft.SqlServer.DacFx
    

2. lépés: Egyéni szabálysegítő osztályok létrehozása

Mielőtt létrehozza magának a szabálynak az osztályát, adjon hozzá egy látogatóosztályt és egy attribútumosztályt a projekthez. Ezek az osztályok hasznosak lehetnek további egyéni szabályok létrehozásához.

2.1. lépés: A WaitForDelayVisitor osztály definiálása

A definiálni kívánt első osztály a WaitForDelayVisitor osztály, amely TSqlConcreteFragmentVisitorszármazik. Ez az osztály hozzáférést biztosít a modell WAITFOR DELAY utasításaihoz. A látogatóosztályok az SQL Server által biztosított ScriptDom API-kat használják. Ebben az API-ban Transact-SQL kód absztrakt szintaxisfaként (AST) jelenik meg, és a látogatói osztályok akkor lehetnek hasznosak, ha konkrét szintaxisobjektumokat, például WAITFOR DELAY utasításokat szeretne keresni. Ezek az utasítások nehézkesek lehetnek az objektummodell használatával, mivel nincsenek hozzárendelve egy adott objektumtulajdonsághoz vagy kapcsolathoz, de a látogatói mintával és a ScriptDom API-val is megtalálhatja őket.

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be WaitForDelayVisitor.cs, majd válassza a Hozzáadás gombot. A WaitForDelayVisitor.cs fájl hozzáadódik a projekthez a Megoldáskezelő-vel.

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be WaitForDelayVisitor.cs, majd válassza a Hozzáadás gombot. A WaitForDelayVisitor.cs fájl hozzáadódik a projekthez a Megoldáskezelő-vel.

  1. Nyissa meg a Explorer nézetet a Visual Studio Code-ban.

  2. Hozzon létre egy WaitForDelayVisitor.cs nevű új fájlt a SampleRules mappában.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Válasszon másik nézetet az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozására vonatkozó utasításokért, az alkalmazáskód-szerkesztő használatával.

  1. Lépjen be a SampleRules könyvtárba.
  2. Hozzon létre egy WaitForDelayVisitor.csnevű új fájlt.
  1. Nyissa meg a WaitForDelayVisitor.cs fájlt, és frissítse a tartalmat a következő kódnak megfelelően:

    using System.Collections.Generic;
    using Microsoft.SqlServer.TransactSql.ScriptDom;
    namespace SampleRules {
        class WaitForDelayVisitor {}
    }
    
  2. Az osztálydeklarációban módosítsa a hozzáférés-módosító belsőre, és származtassa az osztályt TSqlConcreteFragmentVisitor:

    internal class WaitForDelayVisitor : TSqlConcreteFragmentVisitor {}
    
  3. Adja hozzá a következő kódot a Listatag változó definiálásához:

    public IList<WaitForStatement> WaitForDelayStatements { get; private set; }
    
  4. Definiálja az osztálykonstruktort a következő kód hozzáadásával:

    public WaitForDelayVisitor() {
       WaitForDelayStatements = new List<WaitForStatement>();
    }
    
  5. Felülbírálja a ExplicitVisit metódust a következő kód hozzáadásával:

    public override void ExplicitVisit(WaitForStatement node) {
       // We are only interested in WAITFOR DELAY occurrences
       if (node.WaitForOption == WaitForOption.Delay)
          WaitForDelayStatements.Add(node);
    }
    

    Ez a módszer felkeresi a modell WAITFOR utasításait, és olyan utasításokat ad hozzá, amelyeknél a DELAY beállítás szerepel a WAITFOR DELAY utasítások listájában. A hivatkozott kulcsosztály a WaitForStatement .

  6. A Fájl menüben válassza a Mentés elemet.

2.2. lépés: Erőforrásfájl és három erőforrás-sztring hozzáadása

Ezután adjon hozzá egy erőforrásfájlt, amely meghatározza a szabály nevét, a szabály leírását és azt a kategóriát, amelyben a szabály megjelenik a szabály konfigurációs felületén.

  1. A Megoldáskezelőválassza ki a SampleRules projektet. A Project menüben válassza a Hozzáadás, majd az Új elemlehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel.

  2. A Telepített sablonoklistájában válassza Általánoslehetőséget. A részletek panelen válassza az Erőforrásfájllehetőséget.

  3. Névmezőbe írja be a RuleResources.resx. Megjelenik az erőforrás-szerkesztő, de nincsenek definiált erőforrások.

  4. Definiáljon négy erőforrás-sztringet az alábbiak szerint:

    Name Value
    AvoidWaitForDelay_ProblemDescription WAITFOR DELAY statement was found in {0}.
    AvoidWaitForDelay_RuleName Avoid using WaitFor Delay statements in stored procedures, functions and triggers.
    CategorySamples SamplesCategory
    CannotCreateResourceManager Can't create ResourceManager for {0} from {1}.
  5. A Fájl menüben válassza a Save RuleResources.resxlehetőséget.

  1. A Megoldáskezelőválassza ki a SampleRules projektet. A Project menüben válassza a Hozzáadás, majd az Új elemlehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel.

  2. A Telepített sablonoklistájában válassza Általánoslehetőséget. A részletek panelen válassza az Erőforrásfájllehetőséget.

  3. Névmezőbe írja be a RuleResources.resx. Megjelenik az erőforrás-szerkesztő, de nincsenek definiált erőforrások.

  4. Definiáljon négy erőforrás-sztringet az alábbiak szerint:

    Name Value
    AvoidWaitForDelay_ProblemDescription WAITFOR DELAY statement was found in {0}.
    AvoidWaitForDelay_RuleName Avoid using WaitFor Delay statements in stored procedures, functions and triggers.
    CategorySamples SamplesCategory
    CannotCreateResourceManager Can't create ResourceManager for {0} from {1}.
  5. A Fájl menüben válassza a Save RuleResources.resxlehetőséget.

  1. A SampleRules könyvtárban hozzon létre egy RuleResources.resxnevű új fájlt.

  2. Nyissa meg a RuleResources.resx fájlt, és adja hozzá a következő kódot:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
        <xsd:element name="root" msdata:IsDataSet="true">
          <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
              <xsd:element name="metadata">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                  </xsd:sequence>
                  <xsd:attribute name="name" use="required" type="xsd:string" />
                  <xsd:attribute name="type" type="xsd:string" />
                  <xsd:attribute name="mimetype" type="xsd:string" />
                  <xsd:attribute ref="xml:space" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="assembly">
                <xsd:complexType>
                  <xsd:attribute name="alias" type="xsd:string" />
                  <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="data">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                    <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
                  <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
                  <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
                  <xsd:attribute ref="xml:space" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="resheader">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
      <resheader name="resmimetype">
        <value>text/microsoft-resx</value>
      </resheader>
      <resheader name="version">
        <value>2.0</value>
      </resheader>
      <resheader name="reader">
        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <resheader name="writer">
        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <data name="AvoidWaitForDelay_ProblemDescription" xml:space="preserve">
        <value>WAITFOR DELAY statement was found in {0}</value>
      </data>
      <data name="AvoidWaitFormDelay_RuleName" xml:space="preserve">
        <value>Avoid using WaitFor Delay statements in stored procedures, functions and triggers.</value>
      </data>
      <data name="CategorySamples" xml:space="preserve">
        <value>SamplesCategory</value>
      </data>
      <data name="CannotCreateResourceManager" xml:space="preserve">
        <value>Can't create ResourceManager for {0} from {1}</value>
      </data>
    </root>
    
  3. Mentse a RuleResources.resx fájlt.

  4. Nyissa meg a SampleRules.csproj fájlt, és adja hozzá a következő kódot a frissítéshez, és foglalja bele az erőforrás tartalmát a projektbe:

    <ItemGroup>
      <Compile Update="RuleResources.Designer.cs">
        <DesignTime>True</DesignTime>
        <AutoGen>True</AutoGen>
        <DependentUpon>RuleResources.resx</DependentUpon>
      </Compile>
    </ItemGroup>
    <ItemGroup>
      <EmbeddedResource Include="RuleResources.resx">
        <Generator>PublicResXFileCodeGenerator</Generator>
        <LastGenOutput>RuleResources.Designer.cs</LastGenOutput>
      </EmbeddedResource>
    </ItemGroup>
    
  5. Mentse a SampleRules.csproj fájlt.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár projekt és a testreszabott szabályosztályok létrehozásához egy alkalmazáskód-szerkesztő használatával.

  1. A SampleRules könyvtárban hozzon létre egy RuleResources.resxnevű új fájlt.

  2. Nyissa meg a RuleResources.resx fájlt, és adja hozzá a következő kódot:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
        <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
        <xsd:element name="root" msdata:IsDataSet="true">
          <xsd:complexType>
            <xsd:choice maxOccurs="unbounded">
              <xsd:element name="metadata">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" />
                  </xsd:sequence>
                  <xsd:attribute name="name" use="required" type="xsd:string" />
                  <xsd:attribute name="type" type="xsd:string" />
                  <xsd:attribute name="mimetype" type="xsd:string" />
                  <xsd:attribute ref="xml:space" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="assembly">
                <xsd:complexType>
                  <xsd:attribute name="alias" type="xsd:string" />
                  <xsd:attribute name="name" type="xsd:string" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="data">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                    <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
                  <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
                  <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
                  <xsd:attribute ref="xml:space" />
                </xsd:complexType>
              </xsd:element>
              <xsd:element name="resheader">
                <xsd:complexType>
                  <xsd:sequence>
                    <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:string" use="required" />
                </xsd:complexType>
              </xsd:element>
            </xsd:choice>
          </xsd:complexType>
        </xsd:element>
      </xsd:schema>
      <resheader name="resmimetype">
        <value>text/microsoft-resx</value>
      </resheader>
      <resheader name="version">
        <value>2.0</value>
      </resheader>
      <resheader name="reader">
        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <resheader name="writer">
        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
      </resheader>
      <data name="AvoidWaitForDelay_ProblemDescription" xml:space="preserve">
        <value>WAITFOR DELAY statement was found in {0}</value>
      </data>
      <data name="AvoidWaitFormDelay_RuleName" xml:space="preserve">
        <value>Avoid using WaitFor Delay statements in stored procedures, functions and triggers.</value>
      </data>
      <data name="CategorySamples" xml:space="preserve">
        <value>SamplesCategory</value>
      </data>
      <data name="CannotCreateResourceManager" xml:space="preserve">
        <value>Can't create ResourceManager for {0} from {1}</value>
      </data>
    </root>
    
  3. Mentse a RuleResources.resx fájlt.

  4. Nyissa meg a SampleRules.csproj fájlt, és adja hozzá a következő kódot a frissítéshez, és foglalja bele az erőforrás tartalmát a projektbe:

    <ItemGroup>
      <Compile Update="RuleResources.Designer.cs">
        <DesignTime>True</DesignTime>
        <AutoGen>True</AutoGen>
        <DependentUpon>RuleResources.resx</DependentUpon>
      </Compile>
    </ItemGroup>
    <ItemGroup>
      <EmbeddedResource Include="RuleResources.resx">
        <Generator>PublicResXFileCodeGenerator</Generator>
        <LastGenOutput>RuleResources.Designer.cs</LastGenOutput>
      </EmbeddedResource>
    </ItemGroup>
    
  5. Mentse a SampleRules.csproj fájlt.

2.3. lépés: A LocalizedExportCodeAnalysisRuleAttribute osztály definiálása

A második osztály a LocalizedExportCodeAnalysisRuleAttribute.cs. Ez a keretrendszer által biztosított beépített Microsoft.SqlServer.Dac.CodeAnalysis.ExportCodeAnalysisRuleAttribute kiterjesztése, és támogatja a szabály által használt DisplayName és Description egy erőforrásfájlból való olvasását. Ez egy hasznos osztály, ha valaha is szeretné használni a szabályokat több nyelven.

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be LocalizedExportCodeAnalysisRuleAttribute.cs, majd válassza a Hozzáadás gombot. A fájl hozzá lesz adva a projekthez Megoldáskezelő.

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüben válassza az Osztály hozzáadásalehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be LocalizedExportCodeAnalysisRuleAttribute.cs, majd válassza a Hozzáadás gombot. A fájl hozzá lesz adva a projekthez Megoldáskezelő.

  1. Lépjen a SampleRules könyvtárra a Visual Studio Code Explorer nézetében.
  2. Hozzon létre egy LocalizedExportCodeAnalysisRuleAttribute.csnevű új fájlt.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézőpontra az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozásához egy alkalmazáskód-szerkesztő használatával.

  1. Lépjen be a SampleRules könyvtárba.
  2. Hozzon létre egy LocalizedExportCodeAnalysisRuleAttribute.csnevű új fájlt.
  1. Nyissa meg a fájlt, és frissítse a tartalmat a következő kódnak megfelelően:

    using Microsoft.SqlServer.Dac.CodeAnalysis;
    using System;
    using System.Globalization;
    using System.Reflection;
    using System.Resources;
    
    namespace SampleRules
    {
    
        internal class LocalizedExportCodeAnalysisRuleAttribute : ExportCodeAnalysisRuleAttribute
        {
            private readonly string _resourceBaseName;
            private readonly string _displayNameResourceId;
            private readonly string _descriptionResourceId;
    
            private ResourceManager _resourceManager;
            private string _displayName;
            private string _descriptionValue;
    
            /// <summary>
            /// Creates the attribute, with the specified rule ID, the fully qualified
            /// name of the resource file that will be used for looking up display name
            /// and description, and the Ids of those resources inside the resource file.
            /// </summary>
            public LocalizedExportCodeAnalysisRuleAttribute(
                string id,
                string resourceBaseName,
                string displayNameResourceId,
                string descriptionResourceId)
                : base(id, null)
            {
                _resourceBaseName = resourceBaseName;
                _displayNameResourceId = displayNameResourceId;
                _descriptionResourceId = descriptionResourceId;
            }
    
            /// <summary>
            /// Rules in a different assembly would need to overwrite this
            /// </summary>
            /// <returns></returns>
            protected virtual Assembly GetAssembly()
            {
                return GetType().Assembly;
            }
    
            private void EnsureResourceManagerInitialized()
            {
                var resourceAssembly = GetAssembly();
    
                try
                {
                    _resourceManager = new ResourceManager(_resourceBaseName, resourceAssembly);
                }
                catch (Exception ex)
                {
                    var msg = String.Format(CultureInfo.CurrentCulture, RuleResources.CannotCreateResourceManager, _resourceBaseName, resourceAssembly);
                    throw new RuleException(msg, ex);
                }
            }
    
            private string GetResourceString(string resourceId)
            {
                EnsureResourceManagerInitialized();
                return _resourceManager.GetString(resourceId, CultureInfo.CurrentUICulture);
            }
    
            /// <summary>
            /// Overrides the standard DisplayName and looks up its value inside a resources file
            /// </summary>
            public override string DisplayName
            {
                get
                {
                    if (_displayName == null)
                    {
                        _displayName = GetResourceString(_displayNameResourceId);
                    }
                    return _displayName;
                }
            }
    
            /// <summary>
            /// Overrides the standard Description and looks up its value inside a resources file
            /// </summary>
            public override string Description
            {
                get
                {
                    if (_descriptionValue == null)
                    {
                        _descriptionValue = GetResourceString(_descriptionResourceId);
                    }
                    return _descriptionValue;
                }
            }
        }
    }
    

2.4. lépés: A SampleConstants osztály definiálása

Ezután definiáljon egy osztályt, amely az erőforrásfájl azon erőforrásaira hivatkozik, amelyeket a Visual Studio használ a szabály adatainak megjelenítéséhez a felhasználói felületen.

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be SampleRuleConstants.cs, és válassza a hozzáadása gombot. A SampleRuleConstants.cs fájl hozzáadódik a projekthez a Megoldáskezelő-vel.

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be SampleRuleConstants.cs, és válassza a hozzáadása gombot. A SampleRuleConstants.cs fájl hozzáadódik a projekthez a Megoldáskezelő-vel.

  1. Lépjen a SampleRules könyvtárra a Visual Studio Code Explorer nézetében.
  2. Hozzon létre egy SampleRuleConstants.csnevű új fájlt.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár-projekt és az egyedi szabályosztályok létrehozásának útmutatójához egy alkalmazáskód-szerkesztő használatával.

  1. Lépjen be a SampleRules könyvtárba.
  2. Hozzon létre egy SampleRuleConstants.csnevű új fájlt.
  1. Nyissa meg a SampleRuleConstants.cs fájlt, és adja hozzá a következő utasításokat a fájlhoz:

    namespace SampleRules
    {
        internal static class RuleConstants
        {
            /// <summary>
            /// The name of the resources file to use when looking up rule resources
            /// </summary>
            public const string ResourceBaseName = "SampleRules.RuleResources";
    
            /// <summary>
            /// Lookup name inside the resources file for the select asterisk rule name
            /// </summary>
            public const string AvoidWaitForDelay_RuleName = "AvoidWaitForDelay_RuleName";
            /// <summary>
            /// Lookup ID inside the resources file for the select asterisk description
            /// </summary>
            public const string AvoidWaitForDelay_ProblemDescription = "AvoidWaitForDelay_ProblemDescription";
    
            /// <summary>
            /// The design category (should not be localized)
            /// </summary>
            public const string CategoryDesign = "Design";
    
            /// <summary>
            /// The performance category (should not be localized)
            /// </summary>
            public const string CategoryPerformance = "Design";
        }
    }
    
  2. A Fájl menüben válassza a Mentés elemet.

3. lépés: Egyéni szabályosztály létrehozása

Miután hozzáadta az egyéni kódelemzési szabály által használt segédosztályokat, hozzon létre egy egyéni szabályosztályt, és nevezze el AvoidWaitForDelayRule. Az AvoidWaitForDelayRule egyéni szabály segítségével az adatbázis-fejlesztők elkerülhetik, hogy WAITFOR DELAY utasításokat használjanak tárolt eljárásokban, eseményindítókban és függvényekben.

3.1. lépés: A AvoidWaitForDelayRule osztály létrehozása

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be a AvoidWaitForDelayRule.cs-t, majd válassza a hozzáadáslehetőséget. A AvoidWaitForDelayRule.cs fájl hozzáadódik a projekthez a Megoldáskezelő-vel.

  1. A Megoldáskezelőválassza ki a SampleRules projektet.

  2. A Project menüjében válassza a Hozzáadás, majd a Osztálylehetőséget. Megjelenik az Új elem hozzáadása párbeszédpanel. A Név szövegmezőbe írja be a AvoidWaitForDelayRule.cs-t, majd válassza a hozzáadáslehetőséget. A AvoidWaitForDelayRule.cs fájl hozzáadódik a projekthez a Megoldáskezelő-vel.

  1. Lépjen a SampleRules könyvtárra a Visual Studio Code Explorer nézetében.
  2. Hozzon létre egy AvoidWaitForDelayRule.csnevű új fájlt.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár projekt és az egyéni szabályosztályok létrehozási útmutatóihoz, amelyekhez alkalmazáskód-szerkesztőt használjon.

  1. Lépjen be a SampleRules könyvtárba.
  2. Hozzon létre egy AvoidWaitForDelayRule.csnevű új fájlt.
  1. Nyissa meg a AvoidWaitForDelayRule.cs fájlt, és adja hozzá a következő utasításokat a fájlhoz:

    using Microsoft.SqlServer.Dac.CodeAnalysis;
    using Microsoft.SqlServer.Dac.Model;
    using Microsoft.SqlServer.TransactSql.ScriptDom;
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    namespace SampleRules {
        class AvoidWaitForDelayRule {}
    }
    
  2. Az AvoidWaitForDelayRule osztály deklarációjában módosítsa a hozzáférési módosító nyilvánosra:

    /// <summary>
    /// This is a rule that returns a warning message
    /// whenever there is a WAITFOR DELAY statement appears inside a subroutine body.
    /// This rule only applies to stored procedures, functions and triggers.
    /// </summary>
    public sealed class AvoidWaitForDelayRule
    
  3. A AvoidWaitForDelayRule osztályt az Microsoft.SqlServer.Dac.CodeAnalysis.SqlCodeAnalysisRule alaposztályból származtatjuk:

    public sealed class AvoidWaitForDelayRule : SqlCodeAnalysisRule
    
  4. Adja hozzá az LocalizedExportCodeAnalysisRuleAttribute-t az osztályhoz.

    LocalizedExportCodeAnalysisRuleAttribute lehetővé teszi, hogy a kódelemzési szolgáltatás felderítse az egyéni kódelemzési szabályokat. A kódelemzésben csak ExportCodeAnalysisRuleAttribute (vagy ebből öröklő attribútum) megjelölt osztályok használhatók.

    LocalizedExportCodeAnalysisRuleAttribute biztosít a szolgáltatás által használt néhány szükséges metaadatot. Ez magában foglalja a szabály egyedi azonosítóját, a Visual Studio felhasználói felületén megjelenő megjelenítendő nevet, valamint egy Description, amelyet a szabály a problémák azonosításakor használhat.

    [LocalizedExportCodeAnalysisRule(AvoidWaitForDelayRule.RuleId,
        RuleConstants.ResourceBaseName,
        RuleConstants.AvoidWaitForDelay_RuleName,
        RuleConstants.AvoidWaitForDelay_ProblemDescription
        Category = RuleConstants.CategoryPerformance,
        RuleScope = SqlRuleScope.Element)]
    public sealed class AvoidWaitForDelayRule : SqlCodeAnalysisRule
    {
       /// <summary>
       /// The Rule ID should resemble a fully-qualified class name. In the Visual Studio UI
       /// rules are grouped by "Namespace + Category", and each rule is shown using "Short ID: DisplayName".
       /// For this rule, that means the grouping will be "Public.Dac.Samples.Performance", with the rule
       /// shown as "SR1004: Avoid using WaitFor Delay statements in stored procedures, functions and triggers."
       /// </summary>
       public const string RuleId = "RuleSamples.SR1004";
    }
    

    A RuleScope tulajdonságnak Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleScope.Element kell lennie, mivel ez a szabály bizonyos elemeket elemez. A szabályt a modell minden egyező eleméhez egyszer meghívja a program. Ha egy teljes modellt szeretne elemezni, akkor Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleScope.Model használható helyette.

  5. Adjon hozzá egy konstruktort, amely beállítja a Microsoft.SqlServer.Dac.CodeAnalysis.SqlAnalysisRule.SupportedElementTypes. Ehhez szükség van az elem-specifikus szabályok esetében. Meghatározza azokat az elemeket, amelyekre ez a szabály vonatkozik. Ebben az esetben a szabályt a rendszer a tárolt eljárásokra, eseményindítókra és függvényekre alkalmazza. A Microsoft.SqlServer.Dac.Model.ModelSchema osztály felsorolja az összes elemezhető elemtípust.

    public AvoidWaitForDelayRule()
    {
       // This rule supports Procedures, Functions and Triggers. Only those objects will be passed to the Analyze method
       SupportedElementTypes = new[]
       {
          // Note: can use the ModelSchema definitions, or access the TypeClass for any of these types
          ModelSchema.ExtendedProcedure,
          ModelSchema.Procedure,
          ModelSchema.TableValuedFunction,
          ModelSchema.ScalarFunction,
    
          ModelSchema.DatabaseDdlTrigger,
          ModelSchema.DmlTrigger,
          ModelSchema.ServerDdlTrigger
       };
    }
    
  6. Adjon hozzá egy felülbírálást a Microsoft.SqlServer.Dac.CodeAnalysis.SqlAnalysisRule.Analyze(Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleExecutionContext) metódushoz, amely Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleExecutionContext használ bemeneti paraméterekként. Ez a metódus a lehetséges problémák listáját adja vissza.

    A metódus lekérte a Microsoft.SqlServer.Dac.Model.TSqlModel, Microsoft.SqlServer.Dac.Model.TSqlObjectés TSqlFragment a környezeti paraméterből. A WaitForDelayVisitor osztály ezután a modellben szereplő összes WAITFOR DELAY utasítás listájának lekérésére szolgál.

    A listában szereplő minden WaitForStatement esetében létrejön egy Microsoft.SqlServer.Dac.CodeAnalysis.SqlRuleProblem.

    /// <summary>
    /// For element-scoped rules the Analyze method is executed once for every matching
    /// object in the model.
    /// </summary>
    /// <param name="ruleExecutionContext">The context object contains the TSqlObject being
    /// analyzed, a TSqlFragment
    /// that's the AST representation of the object, the current rule's descriptor, and a
    /// reference to the model being
    /// analyzed.
    /// </param>
    /// <returns>A list of problems should be returned. These will be displayed in the Visual
    /// Studio error list</returns>
    public override IList<SqlRuleProblem> Analyze(
        SqlRuleExecutionContext ruleExecutionContext)
    {
         IList<SqlRuleProblem> problems = new List<SqlRuleProblem>();
    
         TSqlObject modelElement = ruleExecutionContext.ModelElement;
    
         // this rule does not apply to inline table-valued function
         // we simply do not return any problem in that case.
         if (IsInlineTableValuedFunction(modelElement))
         {
             return problems;
         }
    
         string elementName = GetElementName(ruleExecutionContext, modelElement);
    
         // The rule execution context has all the objects we'll need, including the
         // fragment representing the object,
         // and a descriptor that lets us access rule metadata
         TSqlFragment fragment = ruleExecutionContext.ScriptFragment;
         RuleDescriptor ruleDescriptor = ruleExecutionContext.RuleDescriptor;
    
         // To process the fragment and identify WAITFOR DELAY statements we will use a
         // visitor
         WaitForDelayVisitor visitor = new WaitForDelayVisitor();
         fragment.Accept(visitor);
         IList<WaitForStatement> waitforDelayStatements = visitor.WaitForDelayStatements;
    
         // Create problems for each WAITFOR DELAY statement found
         // When creating a rule problem, always include the TSqlObject being analyzed. This
         // is used to determine
         // the name of the source this problem was found in and a best guess as to the
         // line/column the problem was found at.
         //
         // In addition if you have a specific TSqlFragment that is related to the problem
         //also include this
         // since the most accurate source position information (start line and column) will
         // be read from the fragment
         foreach (WaitForStatement waitForStatement in waitforDelayStatements)
         {
            SqlRuleProblem problem = new SqlRuleProblem(
                String.Format(CultureInfo.CurrentCulture,
                    ruleDescriptor.DisplayDescription, elementName),
                modelElement,
                waitForStatement);
            problems.Add(problem);
        }
        return problems;
    }
    
    private static string GetElementName(
        SqlRuleExecutionContext ruleExecutionContext,
        TSqlObject modelElement)
    {
        // Get the element name using the built in DisplayServices. This provides a number of
        // useful formatting options to
        // make a name user-readable
        var displayServices = ruleExecutionContext.SchemaModel.DisplayServices;
        string elementName = displayServices.GetElementName(
            modelElement, ElementNameStyle.EscapedFullyQualifiedName);
        return elementName;
    }
    
    private static bool IsInlineTableValuedFunction(TSqlObject modelElement)
    {
        return TableValuedFunction.TypeClass.Equals(modelElement.ObjectType)
                       && FunctionType.InlineTableValuedFunction ==
            modelElement.GetMetadata<FunctionType>(TableValuedFunction.FunctionType);
    }
    
  7. A Fájl menüben válassza a Mentéslehetőséget.

4. lépés: Az osztálytár létrehozása

  1. A Project menüjében válassza a SampleRules Tulajdonságoklehetőséget.
  2. Válassza az Aláírás lapot.
  3. Válassza A szerelvény aláírásalehetőséget.
  4. Az Válasszon egy erős nevet adó kulcsfájltterületen válassza az 'Új' <>lehetőséget.
  5. Az Erős névkulcs létrehozása párbeszédpanel Kulcsfájl nevemezőbe írja be a MyRefKey.
  6. (nem kötelező) Megadhat egy jelszót az erős névkulcsfájlhoz.
  7. Kattintson az OK gombra.
  8. A Fájl menüben válassza az Összes mentése lehetőséget.
  9. A Build menüben válassza a Megoldás összeállításalehetőséget.
  1. A Project menüjében válassza a SampleRules Tulajdonságoklehetőséget.
  2. Válassza az Aláírás lapot.
  3. Válassza A szerelvény aláírásalehetőséget.
  4. Az Válasszon egy erős nevet adó kulcsfájltterületen válassza az 'Új' <>lehetőséget.
  5. Az Erős névkulcs létrehozása párbeszédpanel Kulcsfájl nevemezőbe írja be a MyRefKey.
  6. (nem kötelező) Megadhat egy jelszót az erős névkulcsfájlhoz.
  7. Kattintson az OK gombra.
  8. A Fájl menüben válassza az Összes mentése lehetőséget.
  9. A Build menüben válassza a Megoldás összeállításalehetőséget.
  1. Nyissa meg a Terminál ablakot a Visual Studio Code-ban a Nézet menü kiválasztásával, majd Terminál.

  2. A projekt létrehozásához írja be a következő parancsot a Terminál:

    dotnet build /p:Configuration=Release
    

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik felületre az utasításokért, hogyan hozza létre a könyvtár projektet és az egyéni szabályosztályokat alkalmazáskód-szerkesztő segítségével.

  1. Lépjen be a SampleRules könyvtárba.

  2. Futtassa a következő parancsot a projekt létrehozásához:

    dotnet build /p:Configuration=Release
    

5. lépés: Az új kódelemzési szabály telepítése és tesztelése

Ezután telepítenie kell az összeszerelést, hogy betöltődjön az SQL adatbázis projekt létrehozásakor.

Ha olyan szabályt szeretne telepíteni, amely egy eredeti SQL-projekt Visual Studióval való létrehozásakor fog futni, másolja a szerelvényt és a társított .pdb fájlt a Bővítmények mappába.

5.1. lépés: A SampleRules-szerelvény telepítése

  1. Ezután másolja az összeállítási információkat a Bővítmények könyvtárba. A Visual Studio indításakor azonosítja <Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensions címtárak és alkönyvtárak bővítményeit, és elérhetővé teszi őket használatra. A Visual Studio 2022 esetében a <Visual Studio Install Dir> általában C:\Program Files\Microsoft Visual Studio\2022\Enterprise. Cserélje le EnterpriseProfessional vagy Community a telepített Visual Studio-kiadástól függően.
  2. Másolja a SampleRules.dll szerelvényfájlt a kimeneti könyvtárból a <Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensions könyvtárba. Alapértelmezés szerint a lefordított .dll fájl elérési útja YourSolutionPath\YourProjectPath\bin\Debug vagy YourSolutionPath\YourProjectPath\bin\Release.

Note

Előfordulhat, hogy létre kell hoznia a Extensions könyvtárat.

A szabályt most telepíteni kell, és a Visual Studio újraindítása után meg kell jelennie. Ezután indítsa el a Visual Studio új munkamenetét, és hozzon létre egy adatbázisprojektet.

5.2. lépés: Új Visual Studio-munkamenet indítása és adatbázisprojekt létrehozása

  1. Indítsa el a Visual Studio második munkamenetét.
  2. Válassza a File (Fájl)>New (Új)>Project (Projekt) lehetőséget.
  3. Az Új projekt párbeszédpanelen keresse meg és válassza ki SQL Server Database Project.
  4. A Név szövegmezőbe írja be SampleRulesDB, és válassza OKlehetőséget.

5.3. lépés: A AvoidWaitForRule kódelemzési szabály engedélyezése

  1. A Megoldáskezelőválassza ki a SampleRulesDB projektet.
  2. A Project menüben válassza a Tulajdonságoklehetőséget. Megjelenik a SampleRulesDB tulajdonságok lapja.
  3. Válassza a Kódelemzési lehetőséget. Láthatsz egy RuleSamples.CategorySamplesnevű új kategóriát.
  4. Bővítse ki RuleSamples.CategorySamples. Látnia kell SR1004: Avoid WAITFOR DELAY statement in stored procedures, triggers, and functions.
  5. A szabály engedélyezéséhez jelölje be a szabály neve melletti jelölőnégyzetet, és jelölje be a Kódelemzés engedélyezése a buildelésijelölőnégyzetet. A kódelemzés engedélyezésével kapcsolatos további információkért tekintse meg a kódelemzés áttekintését.
  6. A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt WAITFOR DELAY utasítások figyelmeztetésekként jelennek meg.

Ha olyan szabályt szeretne telepíteni, amely egy eredeti SQL-projekt Visual Studióval való létrehozásakor fog futni, másolja a szerelvényt és a társított .pdb fájlt a Bővítmények mappába.

5.1. lépés: A SampleRules-szerelvény telepítése

  1. Ezután másolja az összeállítási információkat a Bővítmények könyvtárba. A Visual Studio indításakor azonosítja <Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensions címtárak és alkönyvtárak bővítményeit, és elérhetővé teszi őket használatra. A Visual Studio 2022 esetében a <Visual Studio Install Dir> általában C:\Program Files\Microsoft Visual Studio\2022\Enterprise. Cserélje le EnterpriseProfessional vagy Community a telepített Visual Studio-kiadástól függően.
  2. Másolja a SampleRules.dll szerelvényfájlt a kimeneti könyvtárból a <Visual Studio Install Dir>\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\Extensions könyvtárba. Alapértelmezés szerint a lefordított .dll fájl elérési útja YourSolutionPath\YourProjectPath\bin\Debug vagy YourSolutionPath\YourProjectPath\bin\Release.

Note

Előfordulhat, hogy létre kell hoznia a Extensions könyvtárat.

A szabályt most telepíteni kell, és a Visual Studio újraindítása után meg kell jelennie. Ezután indítsa el a Visual Studio új munkamenetét, és hozzon létre egy adatbázisprojektet.

5.2. lépés: Új Visual Studio-munkamenet indítása és adatbázisprojekt létrehozása

  1. Indítsa el a Visual Studio második munkamenetét.
  2. Válassza a File (Fájl)>New (Új)>Project (Projekt) lehetőséget.
  3. Az Új projekt párbeszédpanelen keresse meg, majd válassza ki az SQL Server adatbázisprojektet, SDK-stílusú (előzetes verzió).
  4. A Név szövegmezőbe írja be SampleRulesDB, és válassza OKlehetőséget.

5.3. lépés: A AvoidWaitForRule kódelemzési szabály engedélyezése

  1. A Megoldáskezelőválassza ki a SampleRulesDB projektet.
  2. Kattintson duplán a projektcsomópontra a projektfájl megnyitásához. A SampleRulesDB projektfájl megjelenik egy szövegszerkesztőben.
  3. Engedélyezze a kódelemzést az SQL-projektfájl build során a RunSqlCodeAnalysis tulajdonságot trueállítva.
  4. A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt WAITFOR DELAY utasítások figyelmeztetésekként jelennek meg.

5.1. lépés: A SampleRules-szerelvény elhelyezése egy helyi NuGet-forrásban

  1. Ha nincs helyi forrása a NuGet-csomagoknak, adjon hozzá egy mappát a helyi gépen a NuGet-csomagok helyi teszteléshez való tárolásához. Az alábbi parancs futtatásával ellenőrizheti jelenlegi NuGet-forrásait:
dotnet nuget list source
  1. Ha egy helyi forrás nem szerepel a listában, az alábbi paranccsal adhat hozzá egyet, <local folder path> helyettesítve a helyi mappa elérési útjával, például C:\NuGetPackages vagy ~/NuGetPackages:
dotnet nuget add source <local folder path>
  1. Másolja a SampleRules.dll szerelvényfájlt a kimeneti könyvtárból a helyi NuGet-forráskönyvtárba. Alapértelmezés szerint a lefordított .dll fájl elérési útja YourSolutionPath\YourProjectPath\bin\Debug vagy YourSolutionPath\YourProjectPath\bin\Release.

5.2. lépés: SampleRules használata adatbázisprojektben

  1. Hozzon létre egy új Microsoft.Build.Sql-projektet, vagy nyisson meg egy meglévőt.
  2. Adjon hozzá a projektfájlban egy csomaghivatkozást a MintaRules NuGet-csomaghoz. Az alábbi példa bemutatja, hogyan adhat hozzá hivatkozást a SampleRules NuGet-csomaghoz a .sqlproj fájlban:
<ItemGroup>
  <PackageReference Include="SampleRules" Version="1.0.0" />
</ItemGroup>

5.3. lépés: Kódelemzés engedélyezése buildeléskor

  1. Engedélyezze a kódelemzést az SQL-projektfájl build során a RunSqlCodeAnalysis tulajdonságot trueállítva. A SampleRules NuGet-csomag a projekt létrehozásakor és alapértelmezés szerint belefoglalásakor lesz visszaállítva.
  2. A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt WAITFOR DELAY utasítások figyelmeztetésekként jelennek meg.

Ehhez az útmutatóhoz alkalmazáskód-szerkesztőre van szükség, például a Visual Studio Code-ra vagy a Visual Studióra. Váltson másik nézetre az osztálykönyvtár projekt és az egyéni szabályosztály alkalmazáskód-szerkesztő segítségével való létrehozásához.

5.1. lépés: A SampleRules-szerelvény elhelyezése egy helyi NuGet-forrásban

  1. Ha nincs helyi forrása a NuGet-csomagoknak, adjon hozzá egy mappát a helyi gépen a NuGet-csomagok helyi teszteléshez való tárolásához. Az alábbi parancs futtatásával ellenőrizheti jelenlegi NuGet-forrásait:
dotnet nuget list source
  1. Ha egy helyi forrás nem szerepel a listában, az alábbi paranccsal adhat hozzá egyet, <local folder path> helyettesítve a helyi mappa elérési útjával, például C:\NuGetPackages vagy ~/NuGetPackages:
dotnet nuget add source <local folder path>
  1. Másolja a SampleRules.dll szerelvényfájlt a kimeneti könyvtárból a helyi NuGet-forráskönyvtárba. Alapértelmezés szerint a lefordított .dll fájl elérési útja YourSolutionPath\YourProjectPath\bin\Debug vagy YourSolutionPath\YourProjectPath\bin\Release.

5.2. lépés: SampleRules használata adatbázisprojektben

  1. Hozzon létre egy új Microsoft.Build.Sql-projektet, vagy nyisson meg egy meglévőt.
  2. Adjon hozzá a projektfájlban egy csomaghivatkozást a MintaRules NuGet-csomaghoz. Az alábbi példa bemutatja, hogyan adhat hozzá hivatkozást a SampleRules NuGet-csomaghoz a .sqlproj fájlban:
<ItemGroup>
  <PackageReference Include="SampleRules" Version="1.0.0" />
</ItemGroup>

5.3. lépés: Kódelemzés engedélyezése buildeléskor

  1. Engedélyezze a kódelemzést az SQL-projektfájl build során a RunSqlCodeAnalysis tulajdonságot trueállítva. A SampleRules NuGet-csomag a projekt létrehozásakor és alapértelmezés szerint belefoglalásakor lesz visszaállítva.
  2. A projekt fordítási műveletének használatakor a rendszer végrehajtja a szabályt, és az észlelt WAITFOR DELAY utasítások figyelmeztetésekként jelennek meg.