認識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 Copilot在SSMS管理工具中扮演的是一個「即時 AI 輔助工具」角色,可在管理資料庫的環境中提供協助。它的主要目的在於「提升 T-SQL 撰寫效率與正確性」。
除了協助產生或調整查詢語句外,GitHub
Copilot也能回答一般SQL相關問題,並在部分情境下協助處理資料庫管理工作。無論是SQL Server、Azure SQL Database、Azure 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來幫我們寫查詢,請參考下圖所示:
通常撰寫清楚且具體的提示,提示內容越明確,回應品質越高。例如在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聊天視窗加入以下提示:
寫查詢,找出OrderId為10248這筆資料,列出 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 進行說明或優化。只要選取查詢編輯器視窗中的部分程式碼,按滑鼠右鍵,然後從快捷選單選取斜線命令,例如「說明」,聊天視窗便會顯示執行的結果,解釋選取的程式碼,請參考下圖所示:
選取查詢編輯器視窗中的程式碼,按滑鼠右鍵,然後從快捷選單選取斜線命令,例如「文件」,聊天視窗便會顯示執行的結果,幫程式加上註解,請參考下圖所示:
圖 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 Studio(SSMS 管理工具)中的GitHub Copilot功能上有一些限制,由於此文撰寫時,這個功能仍為預覽版本,目前尚存在以下限制:
- 不支援查詢編輯器內的程式碼自動完成
- 資料分析結果可能存在不準確情況
- 回應內容品質仍可能不穩定
- 尚不支援聊天紀錄匯出或代理程式模式
總結
GitHub Copilot在SSMS 管理工具中的導入,為 T-SQL 撰寫與資料庫管理提供了全新的輔助方式。對初學者而言,它能有效降低學習門檻,並在理解語法與概念時提供即時協助。
然而,GitHub
Copilot 應被視為輔助工具,需要搭配人工判斷與審核,在正確的使用情境下,這項工具將成為學習與實務操作中相當有價值的夥伴。
0 意見:
張貼留言