다음을 통해 공유


T-SQL 코드를 분석하여 결함 찾기

적용 대상: Microsoft Fabric의 SQL ServerAzure SQL Database Azure SQL Managed Instance SQL 데이터베이스

데이터베이스 프로젝트로 가져와서 일련의 규칙에 대해 코드를 분석하여 데이터베이스 스키마에서 Transact-SQL 코드의 품질을 향상시킬 수 있습니다. 예를 들어 개발하지 않았고 품질이 확인되지 않은 스키마에서 오류를 찾을 수 있습니다. 자세한 내용은 코드 분석 개요를 참조하세요.

이 초기 평가의 경우 데이터베이스 코드에서 잠재적인 모든 문제를 찾으려고 합니다. 경고 및 해당 경고를 발생시킨 코드를 검토합니다. T-SQL 코드를 개선하려면 경고를 수정하고, 경고를 표시하지 않으며, 데이터베이스 프로젝트를 반복적으로 분석합니다.

필수 조건

데이터베이스 프로젝트의 코드를 분석하려면 SQL 프로젝트가 이미 있어야 합니다. 기존 데이터베이스를 사용하여 프로젝트를 만드는 방법에 대한 자세한 내용은 자습서: 기존 데이터베이스에서 시작하는 방법을 참조하세요.

프로젝트 빌드에서 SQL 코드 분석 사용

Visual Studio에서 SQL 코드 분석을 사용하도록 설정하려면 솔루션 탐색기 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 속성 창의 코드 분석 탭에서 빌드 시 코드 분석 사용 확인란을 선택합니다.

프로젝트 속성 창을 저장하고 솔루션 탐색기로 돌아갑니다.

SQL 프로젝트에서 SQL 코드 분석을 사용하도록 설정하려면 .sqlproj 파일을 직접 편집합니다. .sqlproj 파일을 열고 첫 번째 <PropertyGroup> 블록에 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> 요소를 추가하여 코드 분석을 사용하도록 설정합니다.

SQL Database 프로젝트 확장에서 SQL 코드 분석을 사용하도록 설정하려면 .sqlproj 파일을 직접 편집합니다. 탐색기 보기에서 .sqlproj 파일을 열거나 데이터베이스 프로젝트 보기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 .sqlproj 파일 편집을 선택하여 파일을 엽니다.

텍스트 편집기에서 첫 번째 <PropertyGroup> 블록에 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> 요소를 추가하여 코드 분석을 사용하도록 설정합니다.

SQL 프로젝트에서 SQL 코드 분석을 사용하도록 설정하려면 .sqlproj 파일을 직접 편집합니다. .sqlproj 파일을 열고 첫 번째 <PropertyGroup> 블록에 <RunSqlCodeAnalysis>True</RunSqlCodeAnalysis> 요소를 추가하여 코드 분석을 사용하도록 설정합니다.

코드 분석

빌드 시 코드 분석을 사용하도록 설정된 데이터베이스 프로젝트의 코드를 분석하려면 솔루션 탐색기의 프로젝트를 마우스 오른쪽 단추로 클릭하고 빌드를 선택합니다.

출력 창에는 전체 빌드 프로세스 결과가 표시됩니다.

데이터베이스 프로젝트의 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 Database 프로젝트 확장 프로그램에서 특정 규칙을 사용하지 않도록 설정하거나 사용하도록 설정하려면 .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 파일을 추가합니다. 파일에서 경고를 표시하지 않을 규칙 ID와 파일을 지정합니다.

<?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 Database Projects 확장의 특정 .sql 파일에 대한 코드 분석 오류 또는 경고를 표시하지 않으면 프로젝트에 StaticCodeAnalysis.SuppressMessages.xml 파일을 추가합니다. 파일에서 경고를 표시하지 않을 규칙 ID와 파일을 지정합니다.

<?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 파일을 추가합니다. 파일에서 경고를 표시하지 않을 규칙 ID와 파일을 지정합니다.

<?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 파일에 대한 코드 분석 결과가 표시되지 않고 빌드 출력에 더 이상 표시되지 않습니다.