Get-SqlAssessmentItem

選択した SQL Server オブジェクトに対して使用できる SQL Assessment のベスト プラクティス チェックを取得します。

構文

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

説明

Get-SqlAssessmentItem コマンドレットは、入力オブジェクトごとに使用可能なすべてのベスト プラクティス チェックを検索します。 詳細については、SQL Assessment API の概要を参照してください。

このコマンドレットは、次の入力の種類を受け入れます。

  • 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 コマンドレットを使用して入力オブジェクトを取得できます。
Get-Item や Get-ChildItem などのコマンドレット。 また、このコマンドレットは SQL Server PowerShell プロバイダーをサポートしているため、パスからオブジェクトを取得できます。 パスは明示的に渡すことができます。それ以外の場合は、現在のパスが使用されます。

選択したオブジェクトのチェックの可用性は、SQL Server のバージョン、プラットフォーム、およびオブジェクトの種類によって異なります。 また、tempdbmasterなどの特定のデータベースを対象とするチェックもあります。 さらに、パラメーター -MinSeverity と -Check を使用して、タグ、名前、重大度でチェックをフィルター処理できます。

Get-SqlAssessmentItem コマンドレット 使用すると、指定された SQL Server オブジェクトに適用できるチェックの一覧を取得できます。 また、このコマンドレットの出力は、Invoke-SqlAssessment コマンドレット -Check 引数として使用できます。

カスタム構成は、-Configuration パラメーターを使用して適用できます。 カスタマイズの例 Githubで入手できます。

Azure VM 上の SQL Server のサポート

SQL Assessment コマンドレットを使用すると、オンプレミスの 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 Assessment を呼び出す前に、Azure PowerShell でサインインします。 例 13 は、対話型サインイン プロセスとサブスクリプションの選択を示しています。

手記。 PowerShell セッション間で永続化された Azure アカウント接続を使用できます。つまり、1 つのセッションで Connect-AzAccount を呼び出し、後でこのコマンドを省略できます。 ただし、現在のバージョンの SQL Assessment コマンドレットでは、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 コマンドレットを使用してチェックを取得する

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 Assessment サンプル フォルダーを参照してください。

例 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 コマンドレットを示します。

例 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 コマンドレットを示します。 名前が数字で終わるインスタンスのみが処理されます。

例 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 コマンドレットを示しています。

例 8: データベースの重大度の高いチェックを取得する

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

この例では、get-SqlAssessmentItem マスター データベースの重大度が高い使用可能なチェックを返します。 現在の PowerShell プロバイダーの場所をターゲットとして受け入れます。

例 9: データベースの重大度の高いチェックを取得する

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

この例では、get-SqlAssessmentItem マスター データベースの重大度が高い使用可能なチェックを返します。

例 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

この例では Get-SqlAssessmentItem コマンドレットを示し、既定のローカル SQL Server インスタンス上のすべてのデータベースに対するすべてのバックアップ関連のチェックを返します。

例 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.

この例の 2 行目は、$serverInstanceのチェックを取得し、その一部を対話的に選択する方法を示しています。 選択した項目は配列変数に格納され、Invoke-SqlAssessment コマンドレットの入力として使用できます。 この場合、選択したチェックのみが評価プロセス中に実行されます。

例 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 Assessment のチェック リストを取得する方法を示します。

例 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 からデータを取得します。 2 行目は省略可能です。

これらのチェックを実行するには、SQL Assessment に Az.ResourceGraph モジュールが必要です。

パラメーター

-Check

1 つ以上のチェック、ID の確認、またはタグ。

すべての check オブジェクトに対して、Get-SqlAssessmentItem は、入力オブジェクトをサポートしているかどうかを確認するチェックを返します。

すべてのチェック ID について、Get-SqlAssessmentItem は、入力オブジェクトをサポートしている場合は対応するチェックを返します。

タグの場合、Get-SqlAssessmentItem は、これらのタグのいずれかでチェックを返します。

型:String[]
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-Configuration

カスタム構成を含むファイルへのパスを指定します。 カスタマイズ ファイルは、指定した順序で既定の構成に適用されます。 スコープは、このコマンドレットの呼び出しのみに制限されます。

型:PSObject
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-FlattenOutput

このコマンドレットが、Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteではなく、Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat 単純なオブジェクトを生成することを示します。

型:SwitchParameter
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-InputObject

SQL Server オブジェクトまたはそのようなオブジェクトへのパスを指定します。 コマンドレットは、このオブジェクトの適切なチェックを返します。 このパラメーターを省略すると、現在の場所が入力オブジェクトとして使用されます。 現在の場所がサポートされている SQL Server オブジェクトでない場合、コマンドレットはエラーを通知します。

型:PSObject
Aliases:Target
配置:10
規定値:None
必須:False
パイプライン入力を受け取る:True
ワイルドカード文字を受け取る:False

-MinSeverity

チェックの最小重大度レベルを指定します。 たとえば、中、低、または情報レベルのチェックは、高 -MinSeverity 場合は返されません。

型:SeverityLevel
Aliases:Severity
指定可能な値:Information, Low, Medium, High
配置:Named
規定値:Information
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

-ProgressAction

スクリプト、コマンドレット、またはプロバイダーによって生成された進行状況の更新 (Write-Progress コマンドレットによって生成された進行状況バーなど) に対する PowerShell の応答方法を決定します。 Write-Progress コマンドレットは、コマンドの状態を示す進行状況バーを作成します。

型:ActionPreference
Aliases:proga
配置:Named
規定値:None
必須:False
パイプライン入力を受け取る:False
ワイルドカード文字を受け取る:False

入力

System.String[]

Microsoft.SqlServer.Management.Smo.SqlSmoObject[]

出力

Microsoft.SqlServer.Management.Assessment.ICheck