다음을 통해 공유


Get-SqlAssessmentItem

선택한 SQL Server 개체에 사용할 수 있는 SQL 평가 모범 사례 검사를 가져옵니다.

구문

Get-SqlAssessmentItem
   [-Check <String[]>]
   [[-InputObject] <PSObject>]
   [-Configuration <PSObject>]
   [-MinSeverity <SeverityLevel>]
   [-FlattenOutput]
   [-ProgressAction <ActionPreference>]
   [<CommonParameters>]

Description

Get-SqlAssessmentItem cmdlet은 각 입력 개체에 대해 사용 가능한 모든 모범 사례 검사를 찾습니다. 자세한 내용은 SQL 평가 API 개요참조하세요.

이 cmdlet은 다음 입력 형식을 허용합니다.

  • Microsoft.SqlServer.Management.Smo.Server
  • Microsoft.SqlServer.Management.Smo.Database
  • Microsoft.SqlServer.Management.Smo.AvailabilityGroup
  • Microsoft.SqlServer.Management.Smo.FileGroup
  • Microsoft.SqlServer.Management.Smo.RegisteredServers.RegisteredServer
  • 위 형식의 개체에 대한 경로가 포함된 문자열
  • 개체 컬렉션

Get-SqlInstance 및 Get-SqlDatabase 또는 기본 PowerShell과 같은 SqlServer cmdlet을 사용하여 입력 개체를 가져올 수 있습니다.
Get-Item 및 Get-ChildItem과 같은 cmdlet 또한 cmdlet은 SQL Server PowerShell 공급자를 지원하므로 해당 경로에서 개체를 가져올 수 있습니다. 경로를 명시적으로 전달할 수 있으며, 그렇지 않으면 현재 경로가 사용됩니다.

선택한 개체에 대한 검사의 가용성은 SQL Server 버전, 플랫폼 및 개체 유형에 따라 다릅니다. 또한 tempdb 또는 master같은 특정 데이터베이스를 대상으로 하는 검사가 있습니다. 또한 -MinSeverity 및 -Check 매개 변수를 사용하여 태그, 이름 및 심각도별로 검사를 필터링할 수 있습니다.

Get-SqlAssessmentItem cmdlet을 사용하면 지정된 SQL Server 개체에 적용할 수 있는 검사 목록을 가져올 수 있습니다. 또한 이 cmdlet의 출력을 Invoke-SqlAssessment cmdlet에 대한 -Check 인수로 사용할 수 있습니다.

사용자 지정 구성은 -Configuration 매개 변수를 사용하여 적용할 수 있습니다. 사용자 지정 예제는 Github사용할 수 있습니다.

Azure VM의 SQL Server 지원

SQL 평가 cmdlet을 사용하면 온-프레미스 SQL Server뿐만 아니라 Azure VM의 SQL Server와 관련된 규칙(가상 머신 구성에 대한 정보를 사용하는 규칙)을 사용하여 Azure VM의 SQL Server 인스턴스를 평가할 수 있습니다. 예를 들어 AzSqlVmSize 규칙은 Azure VM에서 SQL Server 인스턴스를 호스트하는 VM의 크기가 권장되는지 확인합니다.

이러한 규칙을 사용하려면 Azure PowerShell 모듈 사용하여 Azure에 연결하고 Az.ResourceGraph 모듈이 설치되어 있는지 확인합니다.

Azure VM 인스턴스의 SQL Server에 대해 SQL 평가를 호출하기 전에 Azure PowerShell 로그인합니다. 예제 13은 대화형 로그인 프로세스 및 구독 선택을 보여줍니다.

메모. PowerShell 세션 간에 유지되는 Azure 계정 연결을 사용할 수 있습니다. 즉, 한 세션에서 Connect-AzAccount 호출하고 나중에 이 명령을 생략할 수 있습니다. 그러나 현재 버전의 SQL 평가 cmdlet은 Az.ResourceGraph 모듈을 명시적으로 가져와야 합니다. Import-Module Az.ResourceGraph

예제

예제 1: 로컬 기본 인스턴스에 대한 검사 가져오기

PS:> Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202               
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202               
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202            
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202             
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202  
...

이 예제에서는 현재 컴퓨터에서 실행 중인 SQL Server의 기본 인스턴스에 사용할 수 있는 모든 검사를 가져옵니다.

예제 2: Get-Item cmdlet을 사용하여 검사 가져오기

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

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202               
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202               
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202               
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202  
...

이 예제에서는 현재 컴퓨터에서 실행 중인 SQL Server의 기본 인스턴스에 사용할 수 있는 모든 검사를 가져옵니다.

예제 3: 대상 개체에 대한 경로를 사용하여 검사 가져오기

PS:> Get-SqlAssessmentItem SQLSERVER:\SQL\localhost\default

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202                   
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202                   
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202                   
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202                   
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202                   
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202  
...

이 예제에서는 현재 컴퓨터에서 실행 중인 SQL Server의 기본 인스턴스에 사용할 수 있는 모든 검사를 가져옵니다.

예제 4: 적용된 사용자 지정 구성을 사용하여 검사 가져오기

PS:> Get-SqlDatabase master -ServerInstance . |
     Get-SqlAssessmentItem -Configuration C:\rulesetA.json, D:\rulesetB.json

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         False   TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202                   
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202                   
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202                   
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202                   
TempDBFilesAutoGrowth          False   Some TempDB data files have different... Microsoft Ruleset 0.1.202                   
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202                   
SomeCustomCheck                True    Some custom check                        Ruleset A 1.0                           
AnotherCustomCheck             True    Another custom check                     Ruleset B 1.0
...

이 예제에서는 지정된 JSON 파일에서 가져온 적용된 사용자 지정 구성을 사용하여 사용 가능한 모든 검사를 가져옵니다. Github의 SQL 평가 샘플 폴더 방문하여 사용자 지정 방법을 알아보세요.

예제 5: localhost의 모든 인스턴스에 대한 검사 가져오기

PS:> Get-SqlInstance -ServerInstance localhost | Get-SqlAssessmentItem

   Target: [LOCAL]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
TF1204                         True    TF 1204 returns deadlock information     Microsoft Ruleset 0.1.202               
BlackboxTrace                  True    Blackbox trace is configured and running Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202

   Target: [LOCAL\INSTANCE1]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202             
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202               
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

이 예제에서는 파이프라인을 통해 SQL Server 인스턴스 집합을 수락하는 Get-SqlAssessmentItem cmdlet을 보여 줍니다.

예제 6: 이름이 숫자로 끝나는 모든 인스턴스에 대한 검사 가져오기

PS:> Get-SqlInstance -ServerInstance localhost | Where { $_.Name -Match '.*\d+' } | Get-SqlAssessmentItem

   Target: [LOCAL\INSTANCE1]

ID                             ON      Name                                     Origin                                  
--                             --      ----                                     ------                                  
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202             
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202               
CpuUtil90                      True    CPU usage over 90%                       Microsoft Ruleset 0.1.202
...

이 예제에서는 파이프라인을 통해 SQL Server 인스턴스 집합을 수락하는 Get-SqlAssessmentItem cmdlet을 보여 줍니다. 이름이 숫자로 끝나는 인스턴스만 처리됩니다.

예제 7: 경로별 데이터베이스 검사 가져오기

PS:> Get-SqlAssessmentItem SQLSERVER:\SQL\localhost\default\Databases\master


   TargetObject: [master]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
AutoCreateStats                True    Auto-Create Statistics should be on      Microsoft Ruleset 0.1.202 
HintsUsageInModules            False   Hints usage in modules                   Microsoft Ruleset 0.1.202 
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202 
DuplicateIndexes               True    Duplicate Indexes                        Microsoft Ruleset 0.1.202 
RedundantIndexes               True    Redundant Indexes                        Microsoft Ruleset 0.1.202 
...

이 예제에서는 sql Server 데이터베이스에 대한 경로를 수락하는 Get-SqlAssessmentItem cmdlet을 보여 줍니다.

예제 8: 데이터베이스에 대한 높은 심각도 검사 가져오기

PS:> cd SQLSERVER:\SQL\localhost\default\Databases\master
PS:> Get-SqlAssessmentItem -MinSeverity High

이 예제에서는 get-SqlAssessmentItem master 데이터베이스의 심각도가 높은 사용 가능한 검사를 반환하는 보여 줍니다. 현재 PowerShell 공급자 위치를 대상으로 허용합니다.

예제 9: 데이터베이스에 대한 높은 심각도 검사 가져오기

PS:> $db = Get-SqlDatabase master -ServerInstance localhost
PS:> Get-SqlAssessmentItem $db -MinSeverity High

이 예제에서는 get-SqlAssessmentItem master 데이터베이스의 심각도가 높은 사용 가능한 검사를 반환하는 보여 줍니다.

예제 10: 태그별 검사 가져오기

PS:> Get-SqlDatabase -ServerInstance . | Get-SqlAssessmentItem -Check Backup


   TargetObject: [master]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202 


   TargetObject: [msdb]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202

이 예제에서는 기본 로컬 SQL Server 인스턴스의 모든 데이터베이스에 대한 모든 백업 관련 검사를 반환하는 Get-SqlAssessmentItem cmdlet을 보여 줍니다.

예제 11: 대화형으로 선택한 검사 실행

PS:> $serverInstance = Get-SqlInstance -ServerInstance '(local)'
PS:> $checks = Get-SqlAssessmentItem $serverInstance | Select Id, Description | Out-GridView -PassThru
PS:> Invoke-SqlAssessment $serverInstance -Check $checks

    TargetPath : Server[@Name='LOCAL']

Sev. Message                                                            Check ID               Origin                   
---- -------                                                            --------               ------                   
Info Enable trace flag 834 to use large-page allocations to improve     TF834                  Microsoft Ruleset 0.1.202
     analytical and data warehousing workloads.                                                                         
Low  Detected deprecated or discontinued feature uses: String literals  DeprecatedFeatures     Microsoft Ruleset 0.1.202
     as column aliases, syscolumns, sysusers, SET FMTONLY ON, XP_API,                                                   
     Table hint without WITH, More than two-part column name. We                                                        
     recommend to replace them with features actual for SQL Server                                                      
     version 14.0.1000.

이 예제의 두 번째 줄에서는 $serverInstance 대한 검사를 가져오고 그 중 일부를 대화형으로 선택하는 방법을 보여줍니다. 선택한 항목은 배열 변수에 저장되며 Invoke-SqlAssessment cmdlet에 대한 입력으로 사용할 수 있습니다. 이 경우 선택한 검사만 평가 프로세스 중에 실행됩니다.

예제 12: 자격 증명을 명시적으로 지정

PS> $cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: Administrator
Password for user Administrator: ********

PS> $db = Get-SqlDatabase master -ServerInstance 10.0.3.118 -Credential $cred
PS> Get-SqlAssessmentItem $db

   TargetObject: [master]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
AutoCreateStats                True    Auto-Create Statistics should be on      Microsoft Ruleset 0.1.202 
FullBackup                     True    Full backup is missed or outdated        Microsoft Ruleset 0.1.202 
DuplicateIndexes               True    Duplicate Indexes                        Microsoft Ruleset 0.1.202 
RedundantIndexes               True    Redundant Indexes                        Microsoft Ruleset 0.1.202 
...

이 예제에서는 명시적으로 지정된 자격 증명을 사용하여 SQL 평가 확인 목록을 가져오는 방법을 보여 줍니다.

예제 13: Azure VM 인스턴스의 SQL Server에 대한 SQL 평가 규칙 목록 가져오기

PS> Connect-AzAccount
PS> Set-Subscription My-Pay-As-You-Go
PS> $cred = Get-Credential

PowerShell credential request
Enter your credentials.
User: Administrator
Password for user Administrator: ********

PS> $inst = Get-SqlInstance -ServerInstance 10.0.3.118 -Credential $cred
PS> Get-SqlAssessmentItem $inst

   TargetObject: [ContosoAzureSql]

ID                             ON      Name                                     Origin                    
--                             --      ----                                     ------                    
HintsStatistics                True    Hints are being used                     Microsoft Ruleset 0.1.202               
PlansUseRatio                  True    Amount of single use plans in cache i... Microsoft Ruleset 0.1.202             
TempDBFilesAutoGrowth          True    Some TempDB data files have different... Microsoft Ruleset 0.1.202 
AzSqlVmSize                    True    VM size is not memory-optimized          Microsoft Ruleset 0.1.202 
...

이 예제에서는 Azure VM 인스턴스의 특정 SQL Server에 적용할 수 있는 규칙 목록을 가져오는 방법을 보여 줍니다.

활성 Azure 구독 연결을 사용하면 Azure 관련 검사를 사용할 수 있습니다(이 예제에서는 AzSqlVmSize). 첫 번째 줄은 Azure 계정에 연결하여 Azure Resource Graph에서 데이터를 가져옵니다. 두 번째 줄은 선택 사항입니다.

이러한 검사를 실행하려면 SQL 평가에 Az.ResourceGraph 모듈이 필요합니다.

매개 변수

-Check

하나 이상의 검사, ID 또는 태그를 확인합니다.

모든 check 개체에 대해 Get-SqlAssessmentItem 입력 개체를 지원하는지 여부를 확인합니다.

모든 확인 ID에 대해 Get-SqlAssessmentItem 입력 개체를 지원하는 경우 해당 검사를 반환합니다.

태그의 경우 get-SqlAssessmentItem 해당 태그를 사용하여 검사를 반환합니다.

형식:String[]
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-Configuration

사용자 지정 구성을 포함하는 파일의 경로를 지정합니다. 사용자 지정 파일은 지정된 순서로 기본 구성에 적용됩니다. 범위는 이 cmdlet 호출로만 제한됩니다.

형식:PSObject
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-FlattenOutput

이 cmdlet은 Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote대신 Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote 형식의 단순 개체를 생성한다는 것을 나타냅니다.

형식:SwitchParameter
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-InputObject

SQL Server 개체 또는 이러한 개체의 경로를 지정합니다. cmdlet은 이 개체에 대한 적절한 검사를 반환합니다. 이 매개 변수를 생략하면 현재 위치가 입력 개체로 사용됩니다. 현재 위치가 지원되는 SQL Server 개체가 아니면 cmdlet에서 오류를 알 수 있습니다.

형식:PSObject
별칭:Target
Position:10
Default value:None
필수:False
파이프라인 입력 허용:True
와일드카드 문자 허용:False

-MinSeverity

검사를 찾을 수 있는 최소 심각도 수준을 지정합니다. 예를 들어 높음이 -MinSeverity 경우 중간, 낮음 또는 정보 수준에 대한 검사가 반환되지 않습니다.

형식:SeverityLevel
별칭:Severity
허용되는 값:Information, Low, Medium, High
Position:Named
Default value:Information
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

-ProgressAction

powerShell이 스크립트, cmdlet 또는 공급자(예: Write-Progress cmdlet에서 생성된 진행률 표시줄)에 의해 생성된 진행률 업데이트에 응답하는 방법을 결정합니다. Write-Progress cmdlet은 명령의 상태를 표시하는 진행률 표시줄을 만듭니다.

형식:ActionPreference
별칭:proga
Position:Named
Default value:None
필수:False
파이프라인 입력 허용:False
와일드카드 문자 허용:False

입력

System.String[]

Microsoft.SqlServer.Management.Smo.SqlSmoObject[]

출력

Microsoft.SqlServer.Management.Assessment.ICheck