Nexta Tech Blog
🌠

データベースに「規約」を埋め込む時代へ - SSMS × Copilot 実例集10【2026年4月版】

に公開

こんにちは!

ネクスタで、SmartFの開発エンジニアをしている日野岡です。

みなさん、GitHub Copilotを契約しているのに、
SQL Server Management Studio (以下、SSMS)で使っていない、ということはないですか?

今回は、
SSMSの、22.4.1 で GitHub Copilot in SSMS が GA(一般提供) になったこともあり、
SSMSに統合されたGitHub Copilotの機能について、調査した結果をまとめてみました。

※本記事の内容は、2026年4月時点での個人的な調査結果です。最近のSSMSは、日々アップデートしているため、将来的に結果が変わる可能性があります。

では、さっそく機能と実例を見ていきましょう!

SSMS×Copilotの機能と実例10選

1. データベースに「規約」を埋め込む(Database Instructions)

データベースの拡張プロパティとしてAIへの指示を保存し、チーム全員に共通のルールを適用させる機能です。役割分担を意識すると効果が倍増します。

  • AGENTS.md(オブジェクトレベルの「それが何か」)

    • 例:「dbo.Apts テーブルの Status 列は 1=Scheduled, 2=Completed を意味する」
    • 例:「Customer.CustNoOrder.CNo は外部キー制約はないが論理的に紐づく」
    • 用途:略称テーブル名の解説、列値の意味、暗黙の外部キーなど。
  • CONSTITUTION.md(データベース全体の「どう使うべきか」というポリシー)

    • 例:「SELECT * は原則禁止」
    • 例:「売上の計算は NetAmount から Finance.Refunds を引いたものとする」
    • 例:「PII列は標準で返さない」「テーブル名は PascalCase」
    • 用途:命名規則、保持期間、共通の計算ルール、セキュリティポリシーなど。

実装は拡張プロパティなので、データベースへのパフォーマンスに影響はなく、sp_updateextendedproperty / sp_dropextendedproperty で運用できます。

追加時のサンプル
EXECUTE sp_addextendedproperty
    @name = N'AGENTS.md',
    @value = N'収益(Revenue)の定義は、Finance.Refundsに記録された返金を除くNetAmountの総計(SUM)です。実績収益の計算においては、Revenueカラムの値から返金分を減算してください。',
    @level0type = N'SCHEMA',
    @level0name = N'Finance',
    @level1type = N'TABLE',
    @level1name = N'CompanyRevenue';
EXECUTE sp_addextendedproperty
    @name = N'CONSTITUTION.md',
    @value = N'当データベースのT-SQL作成にあたっては、ガイドライン記載の組織標準を遵守してください。なお、SELECT * によるクエリ実行は原則禁止とします。';

https://learn.microsoft.com/ja-jp/ssms/github-copilot/database-instructions

2. 日本語からT-SQLを生成する(自然言語→T-SQL)

チャットやインラインで、自然言語のプロンプトからクエリを生成します。

  • 実例:「過去30日間に登録された顧客の CustomerID、氏名、および登録日を取得するクエリを記述して」と具体的な日本語プロンプトを打つだけで、適切なテーブルを推論し精緻なT-SQLを生成してくれます。(「最近の顧客情報を適当に出して」のような曖昧な指示だと回答の精度が低下するため、具体性が鍵になります)

https://learn.microsoft.com/ja-jp/ssms/github-copilot/chat

3. 意図を先読みするコード補完(Code Completions)

これまでに書かれたコードの文脈から「次にやりたいこと」を予測してくれます。

  • 実例:単純な関数名の提案にとどまらず、複数行にわたる複雑な WHERE 句や CASE 文、あるいは JOIN のロジック全体をグレーのテキストで提案してくれます。Tabキーを押すだけでそのまま採用できるので、タイピングの手間が激減します。

4. スキーマ設計と高度なデータベースオブジェクトの生成

自然言語の指示で、適切なデータ型や制約付きのDDLを生成します。

  • 実例:「ユーザー管理とデバイス管理を行うためのテーブルを作成して。リレーションも考慮して」と指示するだけで、主キー(IDENTITY)や外部キー制約、NOT NULL制約を含む CREATE TABLE 文が一式出力されます。

https://zenn.dev/srtia2318/articles/introduce4-ssms-copilot-0dbd8b58083fd5

5. クエリのトラブルシューティングと自動エラー修正(/fix

エラーの原因を特定し、修正案を提示してくれます。

  • 実例:実行エラーを引き起こすクエリを選択して /fix と打つと、欠けている括弧や予約語の誤用、不足している制約などを検出し、修正済みのコードを即座に提案してくれます。
  • Tips:チャット欄に打つ以外に、選択範囲を右クリック → "Fix" メニューからも同じことができます。マウス派の方はこちらが便利。

https://learn.microsoft.com/ja-jp/ssms/github-copilot/chat-context#use-slash-commands-for-code-assistance

6. レガシーコードの解読係(/explain, /doc

意味不明なストアドプロシージャの解読やコメント付与を自動で行います。

  • 実例:複雑な JOIN やサブクエリを含むレガシーコードを選択し /explain を実行すると、各 JOIN の意図やフィルタリング条件の意味をステップバイステップで解説してくれます。そのまま /doc コマンドを使ってコメントとしてコードに埋め込むことも可能です。
  • Tips:これらも 右クリックメニュー → "Explain" / "Document" から呼び出せます。

7. 実行プラン解析とパフォーマンスの最適化(/optimize

クエリの実行効率を分析し、改善案を提示します。

  • 実例:遅いクエリを選択して /optimize を叩くと、カーソルの使用や無駄なループなどのアンチパターンを特定し、インデックスの追加提案や、セットベース処理への構造再編など、ベストプラクティスに合致する改善案を提示してくれます。
  • Tips右クリックメニュー → "Optimize" からも実行可能。

8. テストデータの自動生成とシードスクリプトの作成

テーブル定義やJSONサンプルを参照し、リアリティのあるダミーデータを自動生成します。

  • 実例:テストデータの作成を依頼すると、Email 列には有効なメールアドレス形式、CreatedAt 列には過去の日付など、文脈に合った数十〜数百行の INSERT ステートメントを一括で作成してくれます。「OrderQty を上限値1,000で生成して制約違反を確かめたい」のようなエッジケース生成にも対応。

9. アクティブな接続エディタからのコンテキスト自動抽出

AIにいちいちDB構成を教えなくても、勝手に空気を読んでくれます。

  • 実例:エディタで特定のデータベースに接続している状態でチャットを開くと、Copilotはそのデータベースのスキーマ(テーブル名、列名など)と、開いているエディタの内容を自動で背景情報として保持します。そのため、「昨年の製品ごとの売上合計を算出して」と聞くだけで、勝手に Sales.SalesOrderHeader といった関連テーブルを推論して JOIN したクエリを書いてくれます。
  • Tips:エディタを切り替えたあとに「あれ、コンテキストが古いまま?」と感じたら、Sync Active Editor オプションを有効にすると、現在のエディタと再同期されます。

10. カスタム指示(Custom Instructions)によるパーソナライズ

自分好みのコーディングスタイルをAIに学習させます。

  • 実例:ローカル環境の %USERPROFILE% フォルダ内に copilot-instructions.md というファイルを配置し、「常に大文字のT-SQLキーワードを使用する」「CTE(共通テーブル式)をサブクエリよりも優先する」と記載しておくだけで、出力フォーマットを自分の好みに固定できます。
  • 第1項との違い:Database Instructions(AGENTS.md / CONSTITUTION.md)がチーム全員に効くチームルールだとすると、こちらは自分専用の個人設定。役割分担を意識して使い分けましょう。

https://blog.fabric.microsoft.com/en-us/blog/sql-server-management-studio-ssms-22-4-1-and-github-copilot-in-ssms-generally-available

まとめ

各機能の実例を見ていくと、Copilotが単なる「データベースを参照できるチャットツール」ではなく、データベースの文脈を深く理解した「頼れる副操縦士」であることがより明確になったのではないでしょうか。

特に、Database Instructions で組織のルールを「コード化」してAIに強制できる点は、属人化を防ぐ強力な武器になります。AGENTS.md=オブジェクトの意味づけ/CONSTITUTION.md=全体ポリシー/copilot-instructions.md=個人の好み、という3階層を意識して整備すると、チームで一気に効果が出そうです。

Claude Code等の他のツールでも、MSSQL用MCPサーバを使用すると、同じようなことも可能ですが、SSMSからシームレスに使用できるのは何よりもメリットを感じるところなので、今後も引き続き使用していきたいと思います!

この記事が、皆さんの現場でのヒントに少しでもなれば幸いです🥷🙏

Nexta Tech Blog
Nexta Tech Blog

Discussion