SQL Assessment API
適用対象: SQL Server 2012 (11.x) 以降 Azure SQL Managed Instance SQL Server on Azure Virtual Machines SQL Server on Linux
SQL Assessment API には、ベスト プラクティスのために SQL Server の構成を評価するメカニズムが用意されています。 この API は、SQL Server チームが推奨するベスト プラクティス ルールを含むルールセットと共に配布されます。 このルールセットは新しいバージョンのリリースと共に強化されますが、同時に、この API は高いカスタマイズ性と拡張性を備えたソリューションを提供するために構築されています。 ユーザーは既定のルールを調整し、独自のものを作成できます。
SQL Assessment API は、使用する SQL Server の構成が、推奨されるベスト プラクティスに準拠していることを確認する必要がある場合に便利です。 初期評価後は、定期的にスケジュールされた評価によって構成の安定性を追跡できます。
この API は次を評価するために使用することができます。
SQL Server on Azure Virtual Machines
Azure SQL Managed Instance
SQL Server 2012 以降
Linux ベースのシステムとコンテナーの SQL Server
この API は、Azure Data Studio (ADS) の SQL Server 評価拡張機能でも使用されます。
Note
SQL Assessment API によってさまざまな領域に対する評価が提供されますが、セキュリティに関しては詳細に調べられません。 SQL 脆弱性評価を使用して、データベースのセキュリティを予防的に向上させることをお勧めします。
ルール
チェックとも呼ばれるルールは、JSON 形式のファイルで定義されます。 ルールセットの書式では、ルールセットの名前とバージョンを指定する必要があります。 カスタム ルールセットを使用すると、どのルールセットに由来する推奨事項かを簡単に把握できます。
Microsoft から配布されるルールセットは、GitHub で入手できます。 サンプルのリポジトリでルールセット全体を確認することができます。
SQL Assessment コマンドレットと関連する拡張機能
API を直接使用する
SQL Assessment API を利用でき、これらのコンポーネントの一部としてマネージド コードを通じて使用できます。
-
2020 年 6 月以降のリリース バージョン。
-
2019 年 7 月以降のリリース バージョン。
-
2019 年 7 月以降のリリース バージョン。
SQL Assessment API 自体の使用を開始する前に、次のいずれかを必ずインストールしてください。
SMO Framework は、次のメソッドを備える SQL Assessment API 拡張機能によって補完されています。
GetAssessmentItems
: 特定の SQL オブジェクトの使用可能なチェックを返します (IEnumerable<...>
)GetAssessmentResults
: 同期的に評価を査定し、結果とエラー (ある場合) を返します (IEnumerable<...>
)GetAssessmentResultsList
: 非同期的に評価を査定し、結果とエラー (ある場合) を返します (Task<...>
)
PowerShell 経由で API を使う
PowerShell 経由で SQL Assessment API を呼び出す場合は、SQL Server PowerShell モジュールをインストールする必要があります。 この SqlServer
モジュールには、SQL Assessment API で動作する 2 つのコマンドレットが用意されています。
Get-SqlAssessmentItem
: SQL Server オブジェクトの使用可能な評価チェックの一覧を提供しますInvoke-SqlAssessment
: 評価の結果を提供します
SQL Assessment コマンドレットの使用を開始する
選択した SQL Server オブジェクトに対して評価が実行されます。 既定のルールセットでは、2 種類のオブジェクトのみのチェックがあります。Server
と Database
(それらに加えて、API ではさらに 2 種類がサポートされます: Filegroup
と AvailabilityGroup
)。 SQL Server インスタンスとそのすべてのデータベースを評価する場合は、オブジェクトごとに SQL Assessment コマンドレットを個別に実行する必要があります。 あるいは、変数またはパイプラインで SQL Assessment コマンドレットに評価用のオブジェクトを渡すことができます。
SqlServer
と RegisteredServer
オブジェクトは交換可能なので、いずれも SQL Assessment コマンドレットに渡すことができます。
以下の例を参照して始めてください。
ローカルの既定インスタンスで使用できるチェックの一覧を取得すると、チェックに慣れることができます。 この例では、
Get-SqlInstance
コマンドレットの出力をGet-SqlAssessmentItem
コマンドレットにパイプして、それにインスタンス オブジェクトを渡します。Get-SqlInstance -ServerInstance 'localhost' | Get-SqlAssessmentItem
インスタンスのすべてのデータベースで使用できるチェックの一覧を取得します。 ここでは、
Get-Item
コマンドレットと Windows PowerShell SQL Server プロバイダーで実装されたパスを使用してデータベースの一覧を取得し、それをGet-SqlDatabase
コマンドレットにパイプしています。Get-Item SQLSERVER:\SQL\localhost\default | Get-SqlAssessmentItem
また、
Get-SqlDatabase
コマンドレットを使用して同じことを実行できます。Get-SqlDatabase -ServerInstance 'localhost' | Get-SqlAssessmentItem
インスタンスの評価を呼び出し、結果を SQL Server テーブルに保存します。 この例では、
Get-SqlInstance
コマンドレットの出力をInvoke-SqlAssessment
コマンドレットにパイプし、その結果をWrite-SqlTableData
コマンドレットにパイプします。 この例では、Invoke-Assessment
コマンドレットが-FlattenOutput
パラメーターを使用して実行されます。 このパラメーターにより、Write-SqlTableData
コマンドレットに適した出力になります。 後者の場合、このパラメーターを省略すると、エラーが発生します。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
推奨事項を詳しく理解するには、テーブルの説明とリンクに従います。
環境と組織の要件に基づいてルールをカスタマイズします (以下を参照してください)。
評価を定期的に実行するか、オンデマンドで進行状況を測定するようにタスクまたはジョブをスケジュールします。
ルールをカスタマイズする
ルールは、カスタマイズおよび拡張できるように設計されています。 Microsoft のルールセットは、ほとんどの環境で機能するように設計されています。 ただし、すべての環境で機能する 1 つのルールセットを作成することは不可能です。 ユーザーは、独自の JSON ファイルを作成し、既存のルールをカスタマイズしたり、新しく追加したりすることができます。 カスタマイズの例と Microsoft がリリースした完全なルールセットは、サンプル リポジトリで入手できます。 カスタム JSON ファイルを使用して SQL Assessment コマンドレットを実行する方法の詳細については、Get-Help
コマンドレットを使用します。
ルールのカスタマイズ機能で使用できるオプション
特定のルールまたはルールのグループを有効または無効にする (タグを使用)
実際の環境に該当しない場合、または問題を修正するためのスケジュールされた作業が完了するまで、特定のルールを無効にすることができます。
しきい値パラメーターを変更する
各ルールにはしきい値があり、メトリックの現在の値と比較して問題が検出されます。 既定のしきい値が適切でない場合は、変更できます。
自分またはサード パーティが作成したルールをさらに追加する
SQL Assessment API の呼び出しにパラメーターとして 1 つまたは複数の JSON ファイルを追加することで、ルールセットをまとめることができます。 このようなファイルは、自分の組織で作成する場合と、サード パーティから取得する場合があります。 たとえば、Microsoft のルールセットの特定のルールを無効にする JSON ファイル、環境に役立つルールを含む業界専門家による別の JSON ファイル、その JSON ファイルのしきい値を変更する別の JSON ファイルがあります。
重要
信頼されていないソースから提供されたルールセットは、安全であることを十分に確認するまで使用しないことをお勧めします。