Get-SqlAssessmentItem
選択したSQL Server オブジェクトで使用できる SQL Assessment のベスト プラクティス チェックを取得します。
構文
Get-SqlAssessmentItem
[-Check <String[]>]
[[-InputObject] <PSObject>]
[-Configuration <PSObject>]
[-MinSeverity <SeverityLevel>]
[-FlattenOutput]
[<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バージョン、プラットフォーム、およびオブジェクトの種類によって異なります。 また、 や master
などのtempdb
特定のデータベースを対象とするチェックもあります。 さらに、パラメーター -MinSeverity と -Check を使用して、タグ、名前、重大度でチェックをフィルター処理できます。
Get-SqlAssessmentItem コマンドレットを使用すると、指定されたSQL Server オブジェクトに適用できるチェックの一覧を取得できます。 また、 Invoke-SqlAssessment コマンドレットの -Check 引数としてこのコマンドレットの出力を使用することもできます。
カスタム構成は、-Configuration パラメーターを使用して適用できます。 カスタマイズの例は 、Github で入手できます。
Azure VM のサポートに関するSQL Server
SQL Assessment コマンドレットを使用すると、Azure VM 上のSQL Serverのインスタンスをオンプレミスの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
この例では、既定のローカル SQL Server インスタンス上のすべてのデータベースに対するすべてのバックアップ関連のチェックを返す Get-SqlAssessmentItem コマンドレットを示します。
例 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、またはタグ。
チェックオブジェクトごとに、Get-SqlAssessmentItem は入力オブジェクトをサポートしている場合、そのチェックを返します。
Get-SqlAssessmentItem は、チェック ID ごとに、入力オブジェクトをサポートしている場合は対応するチェックを返します。
タグの場合、 Get-SqlAssessmentItem は、これらのタグのいずれかでチェックを返します。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Configuration
カスタム構成を含むファイルへのパスを指定します。 カスタマイズ ファイルは、指定した順序で既定の構成に適用されます。 スコープは、このコマンドレットの呼び出しのみに制限されます。
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FlattenOutput
このコマンドレットが 、Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNote ではなく、Microsoft.SqlServer.Management.Assessment.Cmdlets.AssessmentNoteFlat 型の単純なオブジェクト を生成することを示します。
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
SQL Server オブジェクト、またはそのようなオブジェクトへのパスを指定します。 コマンドレットは、このオブジェクトの適切なチェックを返します。 このパラメーターを省略すると、現在の場所が入力オブジェクトとして使用されます。 現在の場所がサポートされているSQL Server オブジェクトでない場合、コマンドレットはエラーを通知します。
Type: | PSObject |
Aliases: | Target |
Position: | 10 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-MinSeverity
チェックの最小重大度レベルを指定します。 たとえば、-MinSeverity High の場合、中、低、または情報レベルのチェックは返されません。
Type: | SeverityLevel |
Aliases: | Severity |
Accepted values: | Information, Low, Medium, High |
Position: | Named |
Default value: | Information |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
入力
System.String[]
Microsoft.SqlServer.Management.Smo.SqlSmoObject[]
出力
Microsoft.SqlServer.Management.Assessment.ICheck