SQL Server Management Studio (SSMS) の GitHub Copilot を使用すると、Transact-SQL の作成や編集 (T-SQL) など、SSMS のワークフロー内の生産性が向上します。 SSMS で GitHub Copilot を最大限に活用するには、効果的に共同作業する方法を学習する必要があります。 他のパートナーと同様に、SSMS の GitHub Copilot は、明確な方向と適切なコンテキストが与えられた場合に最適なパフォーマンスを発揮します。 チャット ウィンドウを最適に使用すると、SSMS の GitHub Copilot でのエクスペリエンスの品質も向上します。
チャット ウィンドウ
チャット ウィンドウのアイコンと機能は 、Ask モード と エージェント モード (プレビュー) に記載されていますが、その他の考慮事項はプロンプトに固有です。
主に、チャット ウィンドウを結果ウィンドウとして扱わないようにします。 スキーマまたはデータに関する GitHub Copilot の質問をすると、チャット ウィンドウで情報を返すクエリが直接実行される場合があります。 SSMS の GitHub Copilot は、実行前にクエリによって返される行数を決定せず、クエリが 1,000 行を返した場合、その情報をチャットに表示しようとします。 大規模な結果セットは、チャット ウィンドウ内では読み取りが容易ではなく、操作することもできません。
多くの場合、情報を返すクエリを記述するように SSMS で GitHub Copilot に依頼することが推奨され、GitHub Copilot との対話とエクスペリエンスが向上します。
アクセス許可
SQL Server Management Studio (SSMS) のGitHub Copilotは、ログインのコンテキストでクエリとコマンドを実行します。 最小特権の原則を適用します。アクセスする必要がある特定のオブジェクトに対して必要な SELECT、 EXECUTE、およびその他のアクセス許可のみをユーザーに付与します。 SSMS 22.7 以降では、管理者は実行コンテキストを構成できます。これにより、Copilot生成されたクエリは、ユーザー自身のアクセス許可ではなく、最小特権の専用アカウントで実行されます。 この構成では、データベースの CONSTITUTION.mdで指定されたデータベース ユーザーまたは SQL ログインが使用されます。 詳細については、SQL Server Management Studio における GitHub Copilot の実行コンテキストを参照してください。
Context
AI モデルは、指定しない限り、スキーマ、名前付け規則、ビジネス ルール、または指しているサーバーを認識しません。 提供するコンテキストの精度が高いほど、応答が向上します。 SSMS のGitHub Copilotのコンテキストは、アクティブなデータベース接続 (サーバー、データベース)、開いているクエリ エディター、グリッドの結果、database 命令、データベースの構成、および構成する custom 命令 から取得されます。 "このクエリを最適化する" などのプロンプトは、関係するテーブル構造、インデックス カバレッジ、ワークロード パターンをモデルが認識すると、大幅に改善されます。 明確な意図は、何を達成したいかをモデルに伝え、正確なコンテキストは、作業している場所と作業内容を示します。 これらを組み合わせることで、推測作業を排除し、誤った情報を減らすことができます。これは、出力が実稼働データに対して実行される可能性のある T-SQL である場合に特に重要です。 詳細については、「
一貫性
AI副操縦士のユーザーの一般的な不満は、応答の不一致です。 AI の応答は、決定論的ではなく確率的に生成されるため、矛盾する可能性があります。 具体的には、同じ質問をした場合、モデルは、コンテキスト、構成、または内部ランダム性の微妙なバリエーションに基づいて、異なる、しかしもっともらしい単語または文構造のセットを選択する可能性があります。 さらに、AI モデルはプロンプトの潜在的な解釈の多くを考慮に入れるので、フレージングやタイミングを小さく変更すると、結果が異なる可能性があります。 この変動性は、AI の柔軟性と強力さの一部ですが、プロンプトが最適に構築されていない場合は、予測できない結果につながる可能性もあります。
プロンプトの書き込み
AI の使用に固有の機能は、送信するプロンプトを記述することです。パフォーマンス チューニングと同様に、それは芸術と科学です。 適切なプロンプトを記述するためにプロンプト エンジニアである必要はありません。 ただし、AI を使用する場合は、一般的なガイドラインに注意する必要があります。
たとえば、 Find the hottest tables in the databaseに尋ねると、SSMS の GitHub Copilot は、このプロンプトのコンテキストでは、最もホットなテーブルが最も多いテーブル、または最もアクティブなテーブルであることを理解していない可能性があります。 代わりに、 List the top 10 tables in the database that have the most readsしてみてください。
プロンプトの書き込みに関する一般的な推奨事項は次のとおりです。
| 勧告 | 詳細 |
|---|---|
| 自然言語を使用する | 特殊なボキャブラリを使用する必要はありませんが、非公式のフレーズ、スラング、専門用語を避けるようにしてください。 |
| 明確で具体的にする | GitHub Copilot が何を求めているかを明確にするため、十分な詳細を指定します。 |
| コンテキストを指定する | SSMS の GitHub Copilot には、クエリ エディター接続に基づく接続とデータベース コンテキストがありますが、期間や特定のデータベース オブジェクトなどの追加のコンテキストを提供できます。 |
| 例を使用する |
Modify the last query to order the results by CustomerIDなどの以前の応答に基づいて構築します。 |
| 出力形式を定義する | GitHub Copilot では、テキスト、テーブル、またはリスト形式で情報を提供できます。 これはユーザーに代わりに選択されますが、必要な形式で情報を返すように特に要求できます。 |
プロンプトの例:
| 勧告 | 避ける | 試す |
|---|---|---|
| 自然言語を使用する | Yo cook me up something cool for grabbing sales data |
Write a SQL query that selects the top 10 most recent orders from the Sales.Orders table |
| 明確で具体的にする | Okay, so I've got this thing where I need to maybe get some kind of report or output or whatever for yesterday's stuff but like only for users that are new but not too new, if that makes sense |
Write a query to return users who registered yesterday and have not yet made a purchase |
| コンテキストを指定する | List western schools with no language reqs |
List schools in the US-West geo that have a lang_req value of 0 |
| 例を使用する | Write a query to get recent customer info |
Write a query to get customer ID, name, and total number of orders for the last 10 business days ordered by total desc |
| 出力形式を定義する | Give me hospital locations and size with the busiest emergency rooms |
List the hospitals with the busiest emergency rooms in table format and include city, state, and size |