分析 T-SQL 程式碼以找出瑕疵
適用於:Microsoft Fabric 中的 SQL ServerAzure SQL 資料庫 Azure SQL 受控執行個體 SQL 資料庫
您可以將 Transact-SQL 程式碼匯入資料庫專案,並根據一組規則分析程式碼,以改善資料庫結構描述中的 Transact-SQL 程式碼品質。 例如,您可能會想要在結構描述中尋找未開發且品質尚未得到驗證的任何錯誤。 如需詳細資訊,請參閱程式碼分析概觀。
針對此初始評估,您想要尋找資料庫程式碼中的所有潛在問題。 您可以檢閱警告和導致這些警告的程式碼。 若要改善 T-SQL 程式碼,您可以校正警告、有可能隱藏警告,並反覆分析資料庫專案。
必要條件
您必須已有 SQL 專案,才能分析資料庫專案中的程式碼。 如需使用現有資料庫建立專案的詳細資訊,請參閱教學課程:從現有的資料庫開始。
在專案建置上啟用 SQL 程式碼分析
要在 Visual Studio 中啟用 SOL 程式碼分析,以滑鼠右鍵按一下 [方案總管],然後選取 [屬性]。 在 [屬性] 視窗的 [程式碼分析] 索引標籤中,選取 [在建置時啟用程式碼分析] 的核取方塊。
儲存專案屬性視窗,然後返回方案總管。
若要在 SQL 專案中啟用 SQL 程式碼分析,請直接編輯 .sqlproj
檔案。 開啟 .sqlproj
檔案,並將元素 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
新增至第一個 <PropertyGroup>
區塊,以啟用程式碼分析。
若要在 SQL 資料庫專案延伸模組中啟用 SQL 程式碼分析,請直接編輯 .sqlproj
檔案。 可從 [總管] 檢視開啟 .sqlproj
檔案,也能以滑鼠右鍵按一下 [資料庫專案] 檢視中的專案,然後選取 [編輯 .sqlproj 檔案] 來開啟。
從文字編輯器中,將 元素 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
新增至第一個 <PropertyGroup>
區塊,以啟用程式碼分析。
若要在 SQL 專案中啟用 SQL 程式碼分析,請直接編輯 .sqlproj
檔案。 開啟 .sqlproj
檔案,並將元素 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis>
新增至第一個 <PropertyGroup>
區塊,以啟用程式碼分析。
分析程式碼
若要分析在建置時啟用程式碼分析的資料庫專案中的程式碼,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [建置]。
[輸出] 視窗顯示整體建置程序的結果。
資料庫專案中的 T-SQL 程式碼會在建置期間進行分析。 程式碼分析的錯誤和警告會出現在 [錯誤清單] 中。 如果 [錯誤清單] 未出現,請開啟 [檢視] 功能表,然後選取 [錯誤清單]。 您可以按兩下警告,瀏覽至導致警告的程式碼行。
若要分析在建置時啟用程式碼分析的資料庫專案中的程式碼,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [建置]。
[輸出] 視窗顯示整體建置程序的結果。
資料庫專案中的 T-SQL 程式碼會在建置期間進行分析。 程式碼分析的錯誤和警告會出現在 [錯誤清單] 中。 如果 [錯誤清單] 未出現,請開啟 [檢視] 功能表,然後選取 [錯誤清單]。 您可以按兩下警告,瀏覽至導致警告的程式碼行。
若要分析在建置時啟用程式碼分析的資料庫專案中的程式碼,請以滑鼠右鍵按一下 [資料庫專案] 檢視中的專案,然後選取 [建置]。
[輸出] 視窗會顯示整體建置程序的結果,以及程式碼分析的任何錯誤或警告。 每個警告或錯誤中指定的檔案都是互動式連結,可瀏覽至造成警告的程式碼行。
若要分析在建置時啟用程式碼分析的資料庫專案中的程式碼,請從專案目錄中的命令列執行 dotnet build
命令。
dotnet build MyDatabaseProject.sqlproj
命令的輸出會顯示整體建置程序的結果,以及程式碼分析的任何錯誤或警告。
設定程式碼分析規則
若要停用或啟用 Visual Studio 中的特定規則,以滑鼠右鍵按一下 [方案總管],然後選取 [屬性]。 在屬性視窗的 [程式碼分析] 索引標籤中,從資料表中選取規則。 若要變更規則的嚴重性,請從清單中選取該規則的 [將警告視為錯誤] 核取方塊。
儲存專案屬性視窗,然後返回方案總管。
若要停用或啟用 SQL 專案中的特定規則,直接編輯 .sqlproj
檔案。 開啟 .sqlproj
檔案,並在第一個 <PropertyGroup>
區塊中新增或修改 SqlCodeAnalysisRules
的元素,以指定要啟用或停用的規則。 下列範例組態會停用兩個規則 (SR0007 和 SR0006),並切換 SR0008 以導致建置錯誤。 預設會啟用其餘的規則。
<?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>
...
若要停用或啟用 SQL 資料庫專案延伸模組中的特定規則,請直接編輯 .sqlproj
檔案。 可從 [總管] 檢視開啟 .sqlproj
檔案,也能以滑鼠右鍵按一下 [資料庫專案] 檢視中的專案,然後選取 [編輯 .sqlproj 檔案] 來開啟。
在第一個 <PropertyGroup>
區塊中新增或修改 SqlCodeAnalysisRules
的元素,以指定要啟用或停用的規則。 下列範例組態會停用兩個規則 (SR0007 和 SR0006),並切換 SR0008 以導致建置錯誤。 預設會啟用其餘的規則。
<?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>
...
若要停用或啟用 SQL 專案中的特定規則,直接編輯 .sqlproj
檔案。 開啟 .sqlproj
檔案,並在第一個 <PropertyGroup>
區塊中新增或修改 SqlCodeAnalysisRules
的元素,以指定要啟用或停用的規則。 下列範例組態會停用兩個規則 (SR0007 和 SR0006),並切換 SR0008 以導致建置錯誤。 預設會啟用其餘的規則。
<?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>
...
隱藏程式碼分析警告
若要隱藏 Visual Studio 中特定 .sql
檔案的程式碼分析錯誤或警告,請在 [錯誤清單] 中以滑鼠右鍵按一下警告,然後選取 [隱藏靜態程式碼分析訊息]。 該規則和 .sql
檔案的程式碼分析結果會隱藏,且不再出現在 [錯誤清單] 或組建輸出中。
注意
隱藏警告無法修正基礎問題。 只有在您擁有有效的理由這麼做時,才能隱藏警告。
若要隱藏 SQL 專案中特定 .sql
檔案的程式碼分析錯誤或警告,請將 StaticCodeAnalysis.SuppressMessages.xml
檔案新增至專案。 在檔案中,指定要隱藏警告的規則識別碼和檔案。
<?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>
如果檔案不存在,請在專案的根目錄中建立。 如果檔案已經存在,請藉由建立新的 <SuppressedFile><SuppressedRule /></SuppressedFile>
元素來隱藏現有 StaticCodeAnalysis.SuppressMessages.xml
檔案的額外警告。
該規則和 .sql
檔案的程式碼分析結果會隱藏,且不再出現在組建輸出中。
若要隱藏 SQL 資料庫專案延伸模組中特定 .sql
檔案的程式碼分析錯誤或警告,請將 StaticCodeAnalysis.SuppressMessages.xml
檔案新增至專案。 在檔案中,指定要隱藏警告的規則識別碼和檔案。
<?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>
如果檔案不存在,請在專案的根目錄中建立。 如果檔案已經存在,請藉由建立新的 <SuppressedFile><SuppressedRule /></SuppressedFile>
元素來隱藏現有 StaticCodeAnalysis.SuppressMessages.xml
檔案的額外警告。
該規則和 .sql
檔案的程式碼分析結果會隱藏,且不再出現在組建輸出中。
若要隱藏 SQL 專案中特定 .sql
檔案的程式碼分析錯誤或警告,請將 StaticCodeAnalysis.SuppressMessages.xml
檔案新增至專案。 在檔案中,指定要隱藏警告的規則識別碼和檔案。
<?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>
如果檔案不存在,請在專案的根目錄中建立。 如果檔案已經存在,請藉由建立新的 <SuppressedFile><SuppressedRule /></SuppressedFile>
元素來隱藏現有 StaticCodeAnalysis.SuppressMessages.xml
檔案的額外警告。
該規則和 .sql
檔案的程式碼分析結果會隱藏,且不再出現在組建輸出中。