SQL Server Management Studio (SSMS) のGitHub Copilot エージェント モード (プレビュー) を使用すると、自然言語で高レベルの目標を指定し、タスクが完了するか入力が必要になるまで、クエリの実行、ファイルの読み取り、独自の出力の反復処理を行うことで、Copilotに作業を行うことができます。
注
SQL Server Management Studio (SSMS) のGitHub Copilot エージェント モードは現在プレビュー段階です。
単一の応答の後に停止する Ask モードとは異なり、エージェント モードでは、ステップの実行、ツールの呼び出し、目標に達するまでそのアプローチの調整が続行されます。 カスタム データベース ユーザーまたは SQL ログインがデータベースの CONSTITUTION.mdの先頭で指定されていない限り、すべてのクエリとコマンドは、ユーザーのログインとアクセス許可のコンテキストで実行されます。 詳細については、SQL Server Management Studio における GitHub Copilot の実行コンテキストを参照してください。
Important
エージェント モードでは、クエリを実行し、ユーザーに代わってデータベースを変更できます。 Copilotは、各クエリまたはコマンドを実行する前に承認を要求します。 提案されたアクションを承認する前に、慎重に確認してください。 SQL Serverの最小特権アクセス許可を使用してアクセス制御を適用します。 セキュリティ境界はSQL Serverのアクセス許可の適用であり、Copilotの承認システムではありません。
Ask モードとエージェント モード
次の表を使用して、タスクに適したモードを決定します。
| 質問モード | エージェント モード | |
|---|---|---|
| どのように機能するのか | プロンプトごとに 1 つの応答。コードを手動で適用する | 複数ステップの実行。目標に達するまで反復処理を行います |
| 実行 | 読み取り専用クエリのみ | 承認を得て実行されるクエリとコマンド |
| スキーマの変更 | T-SQL を生成して実行する | スキーマ変更を承認し、ログインにアクセス許可がある場合は、スキーマの変更を実行できます |
| 最適な用途 | アイデアを探索し、適用する前に生成されたコードを確認する | 複雑なマルチステップ タスク、調査、分析、反復開発 |
| 中断 | 1 回の応答で、いつでもキャンセルできます | いつでも取り消すことができます |
Prerequisites
- AI Assistance ワークロードを含む SSMS 22.7 以降のバージョン。
Copilot アクセス権 を持つGitHub アカウント。 または、SQL Server Management Studio 。
エージェント モードを使用する
エージェント モードでは、Copilotは自律的に動作し、プロンプトに関連するコンテキストを決定します。 SSMS のGitHub Copilotのエージェント モードでは、ローカル MCP サーバー、sql-tools を統合に使用し、定義済みのツール セットが付属しています。
- SSMS で、View>GitHub Copilot Chat を選択してチャット ウィンドウを開きます。
- チャット ウィンドウの下部にあるモードドロップダウン リストを展開し、[ エージェント] を選択します。
- チャット ウィンドウの右下にある [ツール] アイコンを選択すると、使用可能なツールが表示されます。
-
sql-tools展開して、定義済みのツールを表示します。 ツール名にカーソルを合わせると、ツールの動作の詳細が表示されます。 すべてのツールの選択を解除した場合、エージェント モードは想定どおりに機能しません。 - ツールの
SSMS一覧を無効にすることはできません。 - 大まかな目標を説明するプロンプトを入力し、作業対象のデータベースまたはサーバーの名前を含めます。 エージェント モードは、アクティブなクエリ エディターからコンテキストを継承しません。
Important
最良の結果を得るには、プロンプトにデータベースまたはサーバーを含めます。 この組み込みにより、あいまいさとツール呼び出しの数が減ります。 接続情報を含めない場合、Copilotは接続リストを読み取って使用する接続を識別するか、使用するデータベースまたはサーバーの明確化を求めます。
プロンプトを送信するには、[ 送信 ] を選択するか、 Enter キーを押します。
開始するためのプロンプトの例:
- In the WideWorldImporters database on the SalesPRD server, analyze the `Sales.usp_QuarterlySalesSummary` stored procedure and its execution plan and tell me how to improve it - The AdventureWorks database on the SalesPRD server had high CPU between 1PM and 2PM today, investigate what caused it - Find the SQL Agent jobs on the SalesPRD server that failed in the last 24 hours, analyze the history and explain what happened and how to fix the jobsエージェント モードでは、要求を完了するために複数のツールが呼び出される場合があります。 たとえば、スキーマ情報の読み取り、Transact-SQLの生成、結果の分析などです。 アクティブなツールは、各ステップの実行時にチャットに表示されます。
Copilotクエリまたはコマンドを実行する準備ができたら、一時停止し、承認を求めます。 提案されたアクションを確認し、[続行を 許可] を選択するか、[ 無視] を選択してその手順をスキップします。
承認のスコープは、[ 許可] ドロップダウン リストを使用して構成できます。
Option 影響 1 回許可する この 1 回の呼び出しを承認します このセッションを許可する 現在のチャット セッションの残りの部分に対してこのツールを承認します 常に許可する 後続のすべての呼び出しに対してこのツールを承認します ツールの承認設定をリセットするには、Tools>Options>GitHub>Copilot>Tools に移動します。
Copilotは、各ステップの結果を監視します。 クエリが目標を満たしていないエラーまたは結果を返した場合、Copilotそのアプローチが修正され、自動的に再試行されます。
タスクが完了すると、Copilotはタスクの実行内容を要約します。 データベースまたはクエリ エディターに適用された変更を確認します。
エージェント モード ツールについて
エージェント モードでは、Copilot次のツールを使用して要求を完了できます。
- 組み込みツール
- モデル コンテキスト プロトコル (MCP) ツール
- タスク固有の手順を提供するエージェント スキル
注
エージェント モードは、アクセスまたは接続できるデータベースとオブジェクト、またはデータベース CONSTITUTION.md ファイル内の資格情報を使用する場合にのみ機能します。 お使いの資格情報に既に付与されている権限を超える昇格された権限はありません。
エージェント モードで使用できるツールを表示および管理するには、チャット ウィンドウで [ツール ] アイコンを選択します。 ツールの結果に基づいて、Copilot は他のツールを呼び出して全体的な要求を実行する可能性があります。 たとえば、T-SQL コードの編集で構文エラーが発生した場合、Copilot別の方法を検討し、別の変更を提案する可能性があります。
MCP サーバーを使用してエージェント モードを拡張して、Copilotを外部のツールやサービスに接続することもできます。 MCP サーバーで使用できるツールは自動的には有効になりません。 これらのチェック ボックスは既定でオフになっているので、ツールをアクティブにするには、チェック ボックスをオンにする必要があります。
ツールの承認を管理する
Copilotは、クエリを実行する前または外部ツールを呼び出す前に確認を要求します。 この手順では、意図しない変更からユーザーを保護します。 既定では、各アクションには明示的な承認が必要です。
ツールを承認する場合は、[ 許可 ] ドロップダウン リストを使用して永続化を設定します。
- このセッションを許可する: 現在のチャット セッションでそのツールに対するプロンプトがそれ以上表示されない
- 常に許可する: そのツールのセッション間で永続化
承認を確認してリセットするには、Tools>オプション>GitHub>Copilot>Tools に移動してください。
編集内容を承諾または破棄する
エージェント モードで開いているファイルに変更を適用すると、チャット ウィンドウに [Total changes summary]\( 変更の合計 \) の概要が表示されます。 各ファイルを選択して、変更を個別に確認します。 [保持] ボタンと [元に戻す] ボタンを使用して、コードの各セクションに対する編集を 保持 または 元に戻 すことができます。 または、[ 変更の合計 ] ボックスの一覧で、 最後に [保持 ] または [元に戻す ] を選択した後に行われたすべての編集について 、[保持 ] または [元に戻す] を選択します。
複数ファイルの概要ビュー
SSMS 22.6 以降では、複数のファイルCopilot編集するときに、ファイルを個別に切り替える代わりに、1 つの概要ビューですべての変更を確認できます。
- Copilot編集が完了したら、Copilot Chatワーキング セットの [変更の概要ビューを開く ボタンを選択します。
- 1 つのタブが開き、変更されたすべてのファイルと相違点が一覧表示されます。
- さまざまなレベルの細分性で変更を受け入れるか元に戻すことができます。
- 全ファイルに対して一度に、グローバルなファイルを保持ボタンとファイルを元に戻すボタンを使用します。
- [ すべての変更を保持 ] ボタンと [ すべて元に戻す ] ボタンを使用して、各ファイルに対して行います。
- 個々のコード変更ごとに、 Keep (Ctrl + Y) と Undo (Ctrl + N) を使用します。
- ウィンドウの左上隅にあるコントロールを使用して、次の操作を行います。
- 概要を簡単にするために、すべてのファイル の内容を折りたたみ、ファイル ヘッダーのみを表示する
- 次のボタンと前のボタンを使用して差分チャンク間を移動して、変更をすばやく移動できます。また、任意のファイルを選択して個別に開き、その完全なコンテキストを確認することもできます。
エージェント モード要求を中断する
進行中のエージェント モード要求をいつでも停止するには、チャット ウィンドウで [キャンセル] を選択します。 キャンセルすると、実行中のすべてのツールと保留中のクエリが停止します。 既に実行および承認されたクエリは、自動的にはロールバック されません 。 必要に応じて、複数ステップの操作を取り消した後で、データベースの状態を確認します。
Scenarios
次の例は、エージェント モードが一般的なSQL Server タスクを処理する方法を示しています。 これらの例は、代表的なプロンプトです。 データベースと目標に合わせて調整します。
ストアド プロシージャを作成してテストする
Within the WideWorldImporters database on the PRD-Sales server, create a stored procedure named Sales.GetTopCustomers that accepts a date range and a row count, and returns the top N customers by total order value in that date range. Include error handling and test it with sample parameters.
エージェント モードでは、データベースのスキーマを読み取って適切なテーブルを識別し、ストアド プロシージャのドラフトを作成し、 CREATE PROCEDURE ステートメントを実行した後、サンプル パラメーターを使用してテスト実行を実行して出力を検証します。
クエリのパフォーマンスを最適化する
The query in the active editor, connected to AdventureWorks on the TEST-AW server is running slowly. Analyze its execution plan and suggest options to improve performance.
エージェント モードでは、クエリの推定実行プランを生成したり、クエリ ストアを使用してプランを検索したり、実際のプランを参照として含める場合は実際のプランを使用したりできます。 不足しているインデックスを含め、クエリと実行プランのアンチパターンを識別します。
CREATE INDEXステートメントを含む特定のコードとスキーマの変更が提案され、承認した場合は変更を実装できます。 運用環境のデータベースに適用する前に、常にテスト環境または開発環境に変更を実装してください。
ログを調査する
Analyze the SQL ERRORLOG for the PRD-HR server for the last month and give me a list of errors and problems and solutions for fixing them.
エージェント モードでは、インスタンスの ERRORLOG ファイルが確認され、特定された問題の一覧が作成され、解決のための提案が生成されます。
アクセス許可のギャップを監査して修正する
Review the permissions for the Reporting role in the CustomerSales database on the PRD-Sales server and identify any tables in the Sales schema that it can't access. Add the missing SELECT permissions.
エージェント モードでは、アクセス許可カタログ ビューに対してクエリを実行し、ギャップを識別し、 GRANT ステートメントを生成し、承認した場合はそれらを実行します。
実行コンテキストとアクセス許可
エージェント モードで実行されるすべてのクエリとコマンドは、データベースの CONSTITUTION.md 内のGitHub Copilotのデータベース ユーザーまたは SQL ログインを agentExecuteAsUser として指定しない限り、認証されたアカウントのコンテキストで実行されます。
- ログインにテーブルを変更するアクセス許可がない場合、提案されたクエリを承認した場合でも、エージェント モードでも変更できません。
- Copilotの承認システムはセキュリティ境界ではありません。 データベースで最小限の特権の原則を適用します。特定のオブジェクトに対して必要なアクセス許可のみをユーザーに付与します。
- データベース ユーザーまたは SQL ログインを指定するデータベースについては、SQL Server Management Studio のGitHub Copilotの
Execution コンテキストを参照してください。 - データベースユーザーまたは SQL ログインがデータベースに対して指定されていて、GitHub Copilotのユーザーに IMPERSONATE 権限がない場合、そのデータベースに対してGitHub Copilotを使用することはできません。
既定では、エージェント モードは READ_ONLYとして構成されます。 ログインまたは agentExecuteAsUser アカウントにデータまたはデータベース スキーマを変更するアクセス許可がある場合、GitHub Copilotは既定でこれらのクエリを実行しません。
エージェント モードは、mcp.json ファイルで READ_WRITE に変更できます。 ただし、ログインまたは agentExecuteAsUser アカウントにデータまたはデータベース スキーマを変更するアクセス許可がない場合、SQL セキュリティのアクセス許可により、このようなクエリは失敗します。
よく寄せられる質問
エージェント モードでは、問い合わせなしでクエリが自動的に実行されますか?
No. エージェント モードでは、すべてのクエリまたはコマンドを実行する前に承認が要求されます。 現在のセッションのツールを許可するか、常に承認プロンプトを減らすことを選択できます。
クエリが失敗した場合はどうなりますか?
エージェント モードでは、エラーを検出し、分析し、そのアプローチを自動的に修正します。 ユーザーからの追加の入力なしで問題の解決が試みられます。 複数回試行してもエラーを解決できない場合は、エラーを報告し、ガイダンスを求めます。
エージェント モードと Ask モードの違い
Ask モードは単一の応答を返し、停止します。 生成されたコードを適用するかどうかを決定します。 エージェント モードでは、複数のステップが自律的に実行され、承認を得てクエリが実行され、結果が監視され、反復処理が行われます。 すべてのステップを完全に制御する場合は、Ask モードを使用します。は、ガイダンスのみを提供する複雑なマルチステップ タスクにエージェント モードを使用します。
MCP サーバーでエージェント モードを使用できますか?
Yes. MCP ツールを使用するには、エージェント モードである必要があります。 SQL Server Management Studio で GitHub Copilot と MCP サーバーを使用するを参照してください。
管理者として、組織のエージェント モードを制御するにはどうすればよいですか?
管理者は、GitHub Copilot ダッシュボードを使用してエージェント モードを制御します。 詳細については、「Admin controls for GitHub Copilot in SQL Server Management Studio」を参照してください。