2026年1月30日 星期五

認識SQL Server Management Studio(SSMS管理工具)中的GitHub Copilot

 

對於剛接觸資料庫的使用者而言,撰寫 Transact-SQL(T-SQL)查詢或處理資料庫相關問題,往往需要同時查閱文件、找尋範例與檢視錯誤訊息,這個學習曲線相對地陡峭。為了降低這樣的學習門檻,微軟將 GitHub Copilot直接整合到 SQL Server Management Studio(SSMS,需22以上版本)管理工具當中,目前是預覽版

本文將介紹SSMS管理工具中的 GitHub Copilot,包括其提供的功能定位、安裝方式、實際使用方法,以及在使用時應留意的限制與注意事項。


1:資訊圖表


什麼是SSMS管理工具中的GitHub Copilot

GitHub CopilotSSMS管理工具中扮演的是一個「即時 AI 輔助工具」角色,可在管理資料庫的環境中提供協助。它的主要目的在於「提升 T-SQL 撰寫效率與正確性」

 

除了協助產生或調整查詢語句外,GitHub Copilot也能回答一般SQL相關問題,並在部分情境下協助處理資料庫管理工作。無論是SQL ServerAzure SQL DatabaseAzure SQL受控執行個體,或 Fabric 中的 SQL Database,只要成功連線,GitHub Copilot 便能針對該環境提供支援。

 

GitHub Copilot需要擁有GitHub帳戶才能使用,並且得開通GitHub Copilot功能。當使用者在 SSMS 管理工具中輸入提示(Prompt)之後,系統會將該提示送至模型進行處理,並將回應結果顯示於SSMS管理工具中。為了提升回應的準確度,GitHub Copilot 可能會同時參考部分環境資訊,例如目前使用的 SQL 版本或資料庫結構。

 

SSMS 管理工具中的GitHub Copilot主要以「聊天互動」形式呈現,包含聊天視窗與內嵌聊天視窗,其核心功能包括:

  • 使用自然語言進行互動:使用者可直接以自然語言詢問SQL或資料庫相關問題,無須先轉換為程式語法。
  • 輔助撰寫T-SQL 程式碼:搭配斜線指令(例如 /doc),可用於說明、整理、修正或優化T-SQL 查詢。
  • 環境與結構感知能力:當查詢編輯器已連線至資料庫時,GitHub Copilot 能根據該連線取得上下文資訊,並依實際資料庫環境提供較符合情境的回應。

 

使用GitHub Copilot的主要優點

SSMS管理工具中的GitHub Copilot主要優點如下:

  • 提升開發效率與準確性:協助快速產生或調整 T-SQL 查詢,降低語法錯誤的發生率。
  • 即時 SQL 諮詢工具:在未連線到資料庫時,可回答一般 SQL 問題;連線後,則能回應資料庫特定的問題。
  • 支援部分管理作業:除了查詢撰寫,也能協助處理部分系統管理層面的工作。

 

安裝與啟用方式

在使用 GitHub Copilot 前,需確保使用 SQL Server Management Studio 22 或更新版本的管理工具,建議隨時更新為最新版以取得完整功能。

 

執行SQL Server Management Studio 22安裝程式後,可以選擇加裝「AI協助」功能,請參考下圖所示:

2:加裝「AI協助」功能


切換到安裝程式「個別元件」分頁中可以看到加裝了GitHub Copilot,請參考下圖所示:

3:「個別元件」分頁


而「語言套件」頁可選擇工具界面想使用的語言套件,請參考下圖所示:

4:「語言套件」頁


接下來就等待安裝完成,請參考下圖所示:

5:安裝


安裝完成之後啟動SSMS管理工具,你可能會看到是否匯入舊版使用者設定的畫面,選一個適合的,請參考下圖所示:

6:匯入舊版使用者設定


下一個步驟,便可在SSMS 管理工具建立資料庫連線,在查詢編輯器中連線至目標伺服器或資料庫,本文以連接到微軟提供的Northwind資料庫為例,請參考下圖所示:

7:連線至目標伺服器或資料庫

 

登入GitHub Copilot

SSMS管理工具右上角有一個GitHub Copilot 圖示。你可以選擇右上方的「登入」選單來登入 GitHub 帳戶(若沒有帳號,可依指示完成 GitHub Copilot 的註冊流程)。例如以下選取登入GitHub帳號,請參考下圖所示:

8:選取登入帳號


登入之後你可以從聊天視窗下方選擇想使用的語言模型,語言模型會根據你的GitHub Copilot訂閱方案而略有不同,以本文撰寫的時間而言,預設使用「Claude Sonnet 4.5」,請參考下圖所示:

9:選擇想使用的語言模型

 

完成登入後,即可於SSMS管理工具中開始使用 GitHub Copilot 提供的輔助功能。


使用GitHub Copilot

若需取得與特定資料庫相關的回應,你必須確保它知道你正在處理哪一個資料庫,建議先開啟查詢編輯器連線到資料庫伺服器,再啟用聊天視窗。這樣,作用中的編輯器視窗中的資料庫連線會為你的提示提供「上下文」。接著GitHub Copilot 便會根據目前作用中的資料庫連線提供回應。若未連線資料庫,GitHub Copilot 僅能提供一般性的 SQL 說明。

 

我們可以點選「新增查詢」開啟查詢編輯器,接著就可以使用GitHub Copilot來幫我們寫查詢,請參考下圖所示:

10:「新增查詢」開啟查詢編輯器


通常撰寫清楚且具體的提示,提示內容越明確,回應品質越高。例如在GitHub Copilot聊天視窗下方的文字方塊中輸入以下提示後送出:

寫一個查詢,取出國家,城市,名字欄位,篩選條件為住在美國的員工


GitHub Copilot會根據要求幫忙寫查詢,T-SQL的上方有一個「套用」的按鈕,按下按鈕會自動將程式套用到目前的查詢編輯器視窗,我們可以按「Tab」鍵接受這段程式碼,程式碼便會插入查詢編輯器視窗,請參考下圖所示:

11:輸入提示、接受程式碼


以本例來說,產生的T-SQL如下列表,若產生的語法不適用,還可以繼續在聊天視窗輸入提示,讓GitHub Copilot幫你修改:

SELECT

    Country AS 國家,

    City AS 城市,

    FirstName + ' ' + LastName AS 名字

FROM

    Employees

WHERE

    Country = 'USA';

 

特別注意在使用時,務必檢閱所有輸出結果,不可直接視為最終答,使用者需自行判斷回應內容的正確性與適用性。同時基於安全性考量,僅具備相應資料庫權限的操作才能成功執行。

 

我們可於查詢編輯器視窗空白處按滑鼠右鍵,然後從快捷選單選取「執行」來看看效果,執行結果會顯示在查詢編輯器下方,請參考下圖所示:

12:執行查詢


我們來試試關聯兩個以上資料表資料的SQL語法是否能夠滿足我們需求,在GitHub Copilot聊天視窗加入以下提示:

寫查詢,找出OrderId10248這筆資料,列出 OrderId,顧客公司名稱,員工名稱,訂單日期


GitHub Copilot撰寫的T-SQL如下列表,看起來相當完美:

-- Created by GitHub Copilot in SSMS 管理工具 - review carefully before executing

SELECT

    o.OrderID,

    c.CompanyName AS 顧客公司名稱,

    e.FirstName + ' ' + e.LastName AS 員工名稱,

    o.OrderDate AS 訂單日期

FROM dbo.Orders o

INNER JOIN dbo.Customers c ON o.CustomerID = c.CustomerID

INNER JOIN dbo.Employees e ON o.EmployeeID = e.EmployeeID

WHERE o.OrderID = 10248;

 

這個範例執行的結果請參考下圖所示:

13:聯結查詢


下面再試試建立資料庫物件的情境,GitHub Copilot聊天視窗加入以下提示:

建立一個Users資料表,包含編號、姓名、所屬角色欄位,欄位名稱使用英文

 

GitHub Copilot撰寫的T-SQL如下列表: 

-- Created by GitHub Copilot in SSMS 管理工具 - review carefully before executing

CREATE TABLE dbo.Users (

    UserID INT IDENTITY(1,1) PRIMARY KEY,

    UserName NVARCHAR(100) NOT NULL,

    RoleName NVARCHAR(100)

);

 

這個範例執行的結果請參考下圖所示: 

14:建立資料表


善用斜線指令

GitHub Copilot提供多種斜線指令用來產生文件註解(/doc)或說明程式碼(/explain),在聊天視窗輸入「/」符號便可以看到可用的命令,請參考下圖所示:

15:斜線指令

 

 

針對既有 T-SQL 程式碼,也可透過斜線指令要求 GitHub Copilot 進行說明或優化。只要選取查詢編輯器視窗中的部分程式碼,按滑鼠右鍵,然後從快捷選單選取斜線命令,例如「說明」,聊天視窗便會顯示執行的結果,解釋選取的程式碼,請參考下圖所示: 

16:選取斜線命令說明程式


選取查詢編輯器視窗中的程式碼,按滑鼠右鍵,然後從快捷選單選取斜線命令,例如「文件」,聊天視窗便會顯示執行的結果,幫程式加上註解,請參考下圖所示:

17:選取斜線命令產生程式文件

 

最後我們看看程式碼重構的功能,Northwind資料庫預設包含一個名為「SalesByCategory預存程序,程式如下:

USE [Northwind]

GO

/****** Object:  StoredProcedure [dbo].[SalesByCategory]    Script Date: 2025/12/17 上午 10:49:17 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[SalesByCategory]

    @CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998'

AS

IF @OrdYear != '1996' AND @OrdYear != '1997' AND @OrdYear != '1998'

BEGIN

    SELECT @OrdYear = '1998'

END

 

SELECT ProductName,

    TotalPurchase=ROUND(SUM(CONVERT(decimal(14,2), OD.Quantity * (1-OD.Discount) * OD.UnitPrice)), 0)

FROM [Order Details] OD, Orders O, Products P, Categories C

WHERE OD.OrderID = O.OrderID

    AND OD.ProductID = P.ProductID

    AND P.CategoryID = C.CategoryID

    AND C.CategoryName = @CategoryName

    AND SUBSTRING(CONVERT(nvarchar(22), O.OrderDate, 111), 1, 4) = @OrdYear

GROUP BY ProductName

ORDER BY ProductName

 

選取查詢編輯器視窗中的程式碼,按滑鼠右鍵,然後從快捷選單選取斜線命令,選取「重構」,聊天視窗便會顯示執行的結果,進一步優化程式碼,請參考下圖所示:

 

重構後的程式碼參考如下:

-- Created by GitHub Copilot in SSMS 管理工具 - review carefully before executing

 

USE [Northwind]

GO

 

SET ANSI_NULLS ON

GO

 

SET QUOTED_IDENTIFIER ON

GO

 

ALTER PROCEDURE [dbo].[SalesByCategory]

    @CategoryName nvarchar(15),

    @OrdYear nvarchar(4) = '1998'

AS

BEGIN

    SET NOCOUNT ON;

 

    -- Validate year parameter and default to 1998 if invalid

    IF @OrdYear NOT IN ('1996', '1997', '1998')

    BEGIN

        SET @OrdYear = '1998';

    END

 

    -- Calculate total sales revenue per product for the specified category and year

    SELECT

        P.ProductName,

        TotalPurchase = ROUND(SUM(OD.Quantity * (1 - OD.Discount) * OD.UnitPrice), 0)

    FROM dbo.[Order Details] AS OD

        INNER JOIN dbo.Orders AS O ON OD.OrderID = O.OrderID

        INNER JOIN dbo.Products AS P ON OD.ProductID = P.ProductID

        INNER JOIN dbo.Categories AS C ON P.CategoryID = C.CategoryID

    WHERE C.CategoryName = @CategoryName

        AND O.OrderDate >= DATEFROMPARTS(CAST(@OrdYear AS INT), 1, 1)

        AND O.OrderDate < DATEFROMPARTS(CAST(@OrdYear AS INT) + 1, 1, 1)

    GROUP BY P.ProductName

    ORDER BY P.ProductName;

END

GO

 

 

限制與注意事項

目前SQL Server Management StudioSSMS 管理工具)中的GitHub Copilot功能上有一些限制,由於此文撰寫時,這個功能仍為預覽版本,目前尚存在以下限制:

  • 不支援查詢編輯器內的程式碼自動完成
  • 資料分析結果可能存在不準確情況
  • 回應內容品質仍可能不穩定
  • 尚不支援聊天紀錄匯出或代理程式模式


總結

GitHub CopilotSSMS 管理工具中的導入,為 T-SQL 撰寫與資料庫管理提供了全新的輔助方式。對初學者而言,它能有效降低學習門檻,並在理解語法與概念時提供即時協助。

然而,GitHub Copilot 應被視為輔助工具,需要搭配人工判斷與審核,在正確的使用情境下,這項工具將成為學習與實務操作中相當有價值的夥伴。

 

0 意見:

張貼留言