다음을 통해 공유


SQL 평가 API

적용 대상: SQL Server 2012(11.x) 이상 Azure SQL Managed Instance Azure Virtual Machines의 SQL Server Linux의 SQL Server

SQL 평가 API는 모범 사례에 대해 SQL Server 구성을 평가하는 메커니즘을 제공합니다. API는 SQL Server 팀에서 제안하는 모범 사례 규칙을 포함하는 규칙 집합과 함께 제공됩니다. 이 규칙 집합은 새 버전 릴리스로 향상되지만, 이와 동시에 API는 사용자 지정 가능하고 확장 가능한 솔루션을 제공하기 위해 빌드됩니다. 사용자는 기본 규칙을 미세 조정하고 직접 규칙을 만들 수 있습니다.

SQL 평가 API는 SQL Server 구성이 권장 모범 사례와 일치하는지 확인할 때 유용합니다. 초기 평가 후에는 정기적으로 예약된 평가를 통해 구성 안정성을 추적할 수 있습니다.

API를 사용하여 다음을 평가할 수 있습니다.

API는 ADS(Azure Data Studio)에 대한 SQL Server 평가 확장에서도 사용됩니다.

참고

SQL 평가 API는 다양한 영역에 대한 평가를 제공하지만 보안을 자세히 다루지는 않습니다. SQL 취약성 평가를 사용하여 데이터베이스 보안을 사전에 개선하는 것이 좋습니다.

규칙

검사라고도 하는 규칙은 JSON 형식 파일에 정의되어 있습니다. 규칙 집합 형식에는 규칙 집합 이름 및 버전을 지정해야 합니다. 사용자 지정 규칙 집합을 사용하면 어떤 규칙 집합에서 어떤 권장 사항이 제공되는지 쉽게 알 수 있습니다.

Microsoft에서 제공하는 규칙 집합은 GitHub에서 이용할 수 있습니다. 샘플 리포지토리에서 전체 규칙 집합을 볼 수 있습니다.

SQL 평가 cmdlet 및 연결된 확장

API 직접 사용

SQL 평가 API가 제공되며, 다음 구성 요소의 일부로 관리 코드를 통해 사용할 수 있습니다.

SQL 평가 API를 직접 사용하기 전에 다음 중 하나를 설치해야 합니다.

SMO 프레임워크는 다음 메서드를 제공하는 SQL 평가 API 확장을 통해 보완됩니다.

  • GetAssessmentItems: 특정 SQL 개체에 대해 사용 가능한 검사를 반환합니다(IEnumerable<...>).

  • GetAssessmentResults: 평가를 동기적으로 평가하고 결과 및 오류(있는 경우)를 반환합니다(IEnumerable<...>).

  • GetAssessmentResultsList: 평가를 비동기적으로 평가하고 결과 및 오류(있는 경우)를 반환합니다(Task<...>).

PowerShell을 통해 API 사용

PowerShell을 통해 SQL 평가 API를 호출하려면 SQL Server PowerShell 모듈을 설치해야 합니다. SqlServer 모듈은 SQL 평가 API와 함께 작동하는 두 개의 cmdlet을 제공합니다.

  • Get-SqlAssessmentItem: SQL Server 개체에 대해 사용 가능한 평가 검사의 목록을 제공합니다.

  • Invoke-SqlAssessment: 평가 결과를 제공합니다.

SQL 평가 cmdlet 사용

평가는 선택한 SQL Server 개체에 대해 수행됩니다. 기본 규칙 집합에서는 ServerDatabase 두 가지 종류의 개체만 확인합니다. 또한 API는 두 가지 종류의 FilegroupAvailabilityGroup 개체를 추가로 지원합니다. SQL Server 인스턴스 및 모든 해당 데이터베이스를 평가하려면 각 개체에 대해 별도로 SQL 평가 cmdlet을 실행해야 합니다. 또는 평가를 위한 개체를 변수 또는 파이프라인의 SQL 평가 cmdlet에 전달할 수 있습니다.

SqlServerRegisteredServer 개체는 서로 교환할 수 있으므로 둘 중 하나를 SQL 평가 cmdlet에 전달할 수 있습니다.

시작하려면 다음 예제를 참조하세요.

  1. 로컬 기본 인스턴스에 사용 가능한 검사 목록을 가져와 검사를 숙지합니다. 이 예제에서는 Get-SqlInstance cmdlet의 출력을 Get-SqlAssessmentItem cmdlet에 파이핑하여 인스턴스 개체를 전달합니다.

    Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  2. 인스턴스의 모든 데이터베이스에 대해 사용 가능한 검사 목록을 가져옵니다. 여기서는 Windows PowerShell SQL Server 공급자와 함께 구현된 Get-Item cmdlet 및 경로를 사용하여 데이터베이스 목록을 가져와서 Get-SqlDatabase cmdlet에 파이핑합니다.

    Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem
    

    또한 Get-SqlDatabase cmdlet을 사용하여 동일한 작업을 수행할 수 있습니다.

    Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
    
  3. 인스턴스에 대한 평가를 호출하고 결과를 SQL Server 테이블에 저장합니다. 이 예제에서는 Get-SqlInstance cmdlet의 출력을 Invoke-SqlAssessment cmdlet에 파이핑합니다. 이 출력은 Write-SqlTableData cmdlet에 파이프됩니다. 이 예제에서는 -FlattenOutput 매개 변수를 사용하여 Invoke-Assessment cmdlet을 실행합니다. 이 매개 변수는 출력을 Write-SqlTableData cmdlet에 적합하게 만듭니다. 매개 변수를 생략하면 후자에서 오류를 발생합니다.

    Get-SqlInstance -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    

    이제 인스턴스의 모든 데이터베이스에 대한 평가를 호출하고 결과를 동일한 테이블에 추가해 보겠습니다.

    Get-SqlDatabase -ServerInstance 'localhost' |
    Invoke-SqlAssessment -FlattenOutput |
    Write-SqlTableData -ServerInstance 'localhost' -DatabaseName SQLAssessmentDemo -SchemaName Assessment -TableName Results -Force
    
  4. 테이블의 설명 및 링크를 따라 권장 사항을 자세히 파악합니다.

  5. 환경 및 조직 요구 사항에 따라 규칙을 사용자 지정합니다(아래 참조).

  6. 정기적으로 또는 주문형으로 평가를 실행하여 진행률을 측정하도록 작업을 예약합니다.

규칙 사용자 지정

규칙은 사용자 지정 및 확장 가능하도록 설계되었습니다. Microsoft의 규칙 집합은 대부분의 환경에서 작동하도록 설계되었습니다. 그러나 모든 환경에서 작동하는 하나의 규칙 집합을 갖는 것은 불가능합니다. 사용자는 직접 JSON 파일을 작성하여 기존 규칙을 사용자 지정하거나 새 규칙을 추가할 수 있습니다. 사용자 지정 예제 및 Microsoft에서 릴리스한 전체 규칙 집합은 샘플 리포지토리에서 이용할 수 있습니다. 사용자 지정 JSON 파일을 사용하여 SQL 평가 cmdlet을 실행하는 방법에 대한 자세한 내용은 Get-Help cmdlet을 사용합니다.

규칙 사용자 지정 기능에서 사용 가능한 옵션

특정 규칙 또는 규칙 그룹 사용/사용 안 함(태그 사용)

특정 규칙이 사용자 환경에 적용되지 않거나 예약된 작업이 수행되어 문제를 해결할 때까지 특정 규칙을 무음으로 처리할 수 있습니다.

임계값 매개 변수 변경

특정 규칙에는 문제를 찾기 위해 메트릭의 현재 값과 비교되는 임계값이 있습니다. 기본 임계값이 맞지 않으면 변경할 수 있습니다.

사용자 또는 타사에서 작성한 규칙 추가

하나 이상의 JSON 파일을 SQL 평가 API 호출에 매개 변수로 추가하여 규칙 집합을 결합할 수 있습니다. 조직에서 해당 파일을 작성하거나 타사에서 가져올 수 있습니다. 예를 들어 Microsoft 규칙 집합에서 특정 규칙을 사용하지 않도록 설정하는 JSON 파일, 환경에 유용한 규칙을 포함하는 업계 전문가의 또 다른 JSON 파일, 해당 JSON 파일의 일부 임계값을 변경하는 다른 JSON 파일을 포함할 수 있습니다.

Important

신뢰할 수 없는 소스에서 제공되는 규칙 집합은 철저히 검토하여 안전성이 확인되기 전에는 사용하지 않아야 합니다.

다음 단계