SQL Server Profiler の実行に必要な権限
適用対象: SQL Server Azure SQL Managed Instance
既定では、SQL Server Profiler の実行には、トレースの作成に使用した Transact-SQL ストアド プロシージャと同じユーザー アクセス許可が必要です。 SQL Server Profiler を実行するには、ユーザーに ALTER TRACE アクセス権を許可する必要があります。 詳細については、「GRANT (サーバーの権限の許可) (Transact-SQL)」をご覧ください。
重要
SQL トレースおよびその他の方法 (動的管理ビューと関数 (DMV、DMF)、拡張イベントなど) によってキャプチャされたクエリ プランとクエリ テキストには、機密情報が含まれる場合があります。 そのため、権限 ALTER TRACE、SHOWPLAN、および包含権限 VIEW SERVER STATE は、最小特権の原則に基づいて、職務を遂行するためにそれらを必要とするユーザーだけに付与する必要があります。
また、プラン表示ファイルまたはプラン表示関連のイベントを含むトレース ファイルのみを保存すること、保存先は NTFS ファイル システムが使用されている場所とすること、および機密の可能性がある情報を表示する権限を持つユーザーのみにアクセスを制限することをお勧めします。
重要
SQL トレースと SQL Server プロファイラー は、非推奨です。 Microsoft SQL Server の Trace や Replay オブジェクトを含む Microsoft.SqlServer.Management.Trace 名前空間も非推奨とされます。
この機能は、 SQL Serverの将来のバージョンで削除される予定です。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。
代わりに拡張イベントを使用します。 拡張イベントについて詳しくは、「クイック スタート:SQL Server 拡張イベント」および SSMS XEvent Profiler に関するページをご覧ください。
Note
SQL Server プロファイラー for Analysis Services のワークロードがサポートされています。
Note
SQL Server プロファイラーから Azure SQL データベースに接続しようとすると、次のような誤解を招くエラー メッセージが誤ってスローされます。
- SQL Server に対してトレースを実行するには、sysadmin 固定サーバー ロールのメンバーであるか、ALTER TRACE 権限が許可されている必要があります。
このメッセージでは、Azure SQL Database が SQL Server プロファイラーでサポートされていないことを説明すべきでした。
トレースの再生に使用される権限
トレースを再生するには、トレースを再生するユーザーに ALTER TRACE 権限が許可されている必要があります。
ただし、再生中に、再生されるトレース内で Audit Login イベントが検出されると、SQL Server Profiler によって EXECUTE AS コマンドが使用されます。 SQL Server Profiler はログイン イベントに関連付けられたユーザーの権限を借用するために、EXECUTE AS コマンドを使用します。
SQL Server Profiler によって再生されるトレース内でログイン イベントが検出されると、次の権限のチェックが実行されます。
ALTER TRACE 権限のある User1 が、トレースの再生を開始します。
再生されるトレースで、User2 のログイン イベントが検出されます。
SQL Server Profiler は User2 の権限を借用するために、EXECUTE AS コマンドを使用します。
SQL Server は User2 の認証を試みます。認証の結果に応じて、次のいずれかが行われます。
User2 を認証できない場合、SQL Server Profiler はエラーを返し、User1 としてトレースの再生を続行します。
User2 を正しく認証できた場合、User2 としてのトレースの再生を続行します。
対象のデータベースで User2 の権限がチェックされます。チェックの結果に応じて、次のいずれかが行われます。
User2 が対象のデータベースに権限を所持している場合、権限の借用に成功し、User2 としてトレースが再生されます。
User2 が対象のデータベースに権限を所持していない場合、サーバーではそのデータベースの Guest ユーザーがチェックされます。
対象のデータベースに Guest ユーザーが存在するかどうかがチェックされます。チェックの結果に応じて、次のいずれかが行われます。
Guest アカウントが存在する場合、Guest アカウントとしてトレースが再生されます。
対象のデータベースに Guest アカウントが存在しない場合、エラーが返され、User1 としてトレースが再生されます。
次の図に、トレース再生時の権限のチェック プロセスを示します。