最新版的SQL Server Management Studio 21版(以下簡稱SSMS)加入了 Copilot AI 助理,與生成式AI做整合,讓資料庫的開發與管理變得更方便、更簡單、更快、更準確。
以下是SSMS Copilot AI 助理帶來的五大好處:
1.
提高工作效率:
· 可以自動產生SQL查詢:你只要輸入一句自然語言,例如「找出上個月消費最多的客戶」,Copilot AI助理就會自動幫你寫出對應的 T-SQL 查詢。
· 聰明的程式碼提示能力:它像更強的智慧型感知功能(IntelliSense),Copilot AI助理可以在你一邊打程式碼的當下,一邊給你適當的提示,幫你省下查詢語法和打字的時間。
· 簡化複雜性的操作:不論是寫複雜T-SQL查詢、資料庫設定或結構的維護動作,Copilot AI助理都能產生程式碼,幫你更輕鬆完成這些任務。
2.
減少語法錯誤,寫出更準確的程式碼
· 自動修正錯誤程式碼:幫你找出語法上的錯誤或程式的邏輯問題,減少人為失誤。
· 程式碼重構,幫助查詢執行更快:會給你查詢效能的建議,像是目前的T-SQL查詢為什麼速度慢、該怎麼改進,以提升整體效率。
3.
幫助學習與解答問題
· 新手學習好幫手:對於不熟T-SQL的人,Copilot AI助理像24小時不休息的導師一樣,隨時可以幫你解釋語法和程式邏輯,以便於讓你快速地上手。
· 可直接問問題:遇到問題可以直接問 Copilot AI助理,就像人一樣,它會回答你,幫你解決工作上的疑問。
4.
功能強大且整合性好
· 用自然語言操作:你可以用日常語言對資料庫下指令,不需每次都記住T-SQL語法或關鍵字。
· 根據你目前的資料庫給建議:Copilot AI助理能看懂你現在在操作哪個資料庫、哪個資料表,並恰當的給出最合適的建議。
5.
安全與隱私有保障
· 不會記錄資料:Microsoft 保證 Copilot AI助理不會記錄你輸入的資料或回應,也不會將這些料拿去訓練AI模型。
· 可控制使用方式:你可以設定
Copilot AI助理只能讀資料或要經過同意才能修改資料,以便保護系統安全。
看到了這麼多優點,你應該會想要知道如何上手吧? 在這一篇文章中,我們將一步步帶你熟悉與設定使用Copilot AI助理的步驟。
設定Azure OpenAI端點
目前要在SSMS 21版使用Copilot AI助理需要有一個Azure
OpenAI 端點(Endpoint),因此你需要有一個Azure訂閱方能使用,可至Azure官網訂閱一個免費試用的帳戶:「https://azure.microsoft.com」。
在下一個畫面點選「Create」按鈕建立「Azure OpenAI」服務,請參考下圖所示:
圖 2:建立「Azure
OpenAI」服務
在下一個「Create Azure OpenAI」畫面選取你的訂閱,並在「Resource Group」選取一個適當的資源群組;或者建立一個新的資源群組。要建立一個新的資源群組只要選擇「Create New」連結,在「Name」輸入一個唯一不重複的資源群組名稱,例如本文設定為「Dev」,然後按下「OK」按鈕,請參考下圖所示:
圖 3:建立一個新的資源群組
在「Create Azure OpenAI」畫面的「Instance Details」區段輸入服務要建立所在的「Region」、「Name」與「Pricing Tier」,然後按下「Next」按鈕到下一個步驟。「Name」要唯一不重複,在本文的範例中將其設定為「AZCopilotTest1」,稍後在SQL Server Management Studio工具中會使用到這個名稱來設定Copilot AI服務,請參考下圖所示:
圖 4:輸入服務資訊
在「Create Azure OpenAI」畫面的「Network」頁,設定「Type」為「All networks, including the
internet can access this resource」,然後按下「Next」按鈕到下一個步驟,請參考下圖所示:
圖 5:設定「Network」的「Type」
在「Create Azure OpenAI」畫面的「Tags」頁使用預設值,直接按下「Next」按鈕到下一個步驟,請參考下圖所示:
圖 6:「Tags」頁
在「Create Azure OpenAI」畫面的「Review + submit」頁,確認輸入的資料是否正確,然後按下「Create」按鈕,請參考下圖所示:
圖 7:確認並建立服務
接著便會看到正在部署服務的畫面,需要稍等待一段時間等它建立完成,請參考下圖所示:
圖 8:部署服務
服務部署完成後可以點選畫面中的「Go to resource」按鈕,檢視服務的資訊,請參考下圖所示:
圖 9:部署服務完成
建立金鑰
點選「Resource Management」>「Keys and Endpoint」項目,按下文字方塊右邊的按鈕,複製金鑰(Key)跟端點(Endpoint)的資訊備用,稍後在SQL Server Management Studio工具中會需要使用到Key跟Endpoint的資訊來設定Copilot服務。Key只需要一組,可複製畫面中的「Key 1」或「Key 2」任一組,請參考下圖所示:
圖 10:複製金鑰(Key)跟端點(Endpoint)的資訊
部署模型
回到「AZCopilotTest1」服務,點選「Overview」頁中的「Explore Azure AI Foundry portal」按鈕進到下一個畫面,請參考下圖所示:
圖 11: 進入Azure AI Foundry portal
選取「Shared
resources」>「Deployments」項目,從「+Deploy model」選取「Deploy base model」選項,請參考下圖所示:
圖 12:「Deploy base model」
在本文撰寫的當下,Copilot AI這個功能是預覽版(Preview),只能夠使用「gpt-4o 」模型,選取模型後按下「Confirm」按鈕,請參考下圖所示:
圖 13:選取模型
在「Deploy gpt-4o」頁,設定以下資訊:
·
「Deployment name」:輸入一個唯一不重複的名稱,本文使用「AZgpt-4o」。
·
「Deploymene type」:選取「Standard」即可,不同的選項費用不相同。
其它項目可以先使用預設值,然後按下「Deploy」按鈕,請參考下圖所示:
圖 14:部署模型
模型部署完成後可以看到畫面如下所示:
圖 15:部署「gpt-4o」模型
完成這些動作,服務就設定好了。
安裝SQL Server Management Studio工具
你可使用 Visual Studio 安裝程式,就可以選擇並安裝SQL Server Management
Studio 21版本所需的功能。
先從官網下載安裝程式:「https://aka.ms/ssms/21/release/vs_SSMS.exe」。接著執行下載下來的安裝程式,請參考下圖所示:
圖 16:使用 Visual Studio 安裝程式安裝SSMS工具
在Visual Studio 安裝程式的「工作負載」頁選取「AI Assistance」項目,然後按一下「安裝」按鈕,請參考下圖所示:
圖 17:安裝「AI Assistance」項目
安裝完成後開啟SQL Server Management Studio 21管理工具,這時會看到一個登入畫面,你可以選擇「使用Microsoft 登入」或「以GitHub登入」帳號登入,或者建立一個新帳戶。若選擇「稍後跳過並新增帳戶」項目,後續可在進入到SQL Server Management Studio 21管理工具後選取「檔案」>「帳戶設定」來新增帳戶,請參考下圖所示:
圖 18:登入SQL Server Management Studio 21管理工具
登入之後,若機器同時有安裝SQL
Server Management Studio 19舊版的工具,可能會跳出一個是否匯入使用者設定的訊息,可按實際需求選擇是否匯入設定,請參考下圖所示:
圖 19:匯入舊版工具使用者設定
接著SQL Server Management Studio工具會彈跳出一個訊息詢問是否要連接到資料庫,按「是」,請參考下圖所示:
圖 20:連接到資料庫
在「連線」畫面中連接一個現有的資料庫,請參考下圖所示,使用Windows驗證連接到本機SQLExpress伺服器的Northwind資料庫:
圖 21:連接一個現有的資料庫
接著便可在SQL Server Management
Studio工具列中看到「Copilot」圖示,也可選取「檢視」>「Copilot」選項啟動它,請參考下圖所示:
下一個畫面會要求輸入在Azure官網設定的服務之「Azure OpenAI 端點」與「Azure OpenAI 部署」與「Azure OpenAI API金鑰」,填完按下「啟動Copilot」按鈕,請參考下圖所示:
圖 23:啟動Copilot
完成後在SQL Server Management
Studio工具中就可以看到一個Copilot聊天視窗,請參考下圖所示:
圖 24:SSMS中的Copilot聊天視窗
使用Copilot情境
那麼我們來試試SQL
Server Management Studio工具Copilot聊天功能,例如我輸入以下提示:
我目前有哪些自訂資料庫
Copilot便自動撰寫以下SQL滿足提示的需求,
--
Created by Copilot in SSMS - review carefully before executing
SELECT name AS
DatabaseName,
state_desc AS State,
create_date AS
CreationDate
FROM sys.databases
WHERE database_id > 4; -- 系統資料庫的 ID 通常小於或等於 4
我們可以按下SQL Server Management Studio工具列上的「新增查詢」開啟一個查詢視窗,然後點選Copilot「插入」按鈕,將SQL自動加入查詢視窗,請參考下圖所示:
圖 25:使用「插入」按鈕,將SQL自動加入查詢視窗
接著只要按下工具列上的「執行」按鈕執行這個查詢,就可以看到目前自訂資料庫的資訊,請參考下圖所示:
圖 26:執行查詢
接著我們撰寫以下自然語言提示:
寫一個查詢,列出Northwind資料庫Seafood類所有產品資料
Copilot便自動撰寫以下SQL滿足提示的需求:
--
Created by Copilot in SSMS - review carefully before executing
SELECT
ProductID,
ProductName,
CategoryID,
QuantityPerUnit,
UnitPrice,
UnitsInStock,
UnitsOnOrder,
ReorderLevel,
Discontinued
FROM
Products
WHERE
CategoryID = (
SELECT CategoryID
FROM Categories
WHERE
CategoryName = 'Seafood'
);
只要使用自然語言,你不必告訴Copilot資料表是哪一個,欄位名稱為何,它都很聰明的根據實際資料表的結構定義幫你寫好SQL查詢,請參考下圖所示:
圖 27:使用自然語言寫SQL查詢
若SQL查詢寫的不好,會影響執行效能。針對這個問題,我們可以請Copilot進行程式重構,改寫你的SQL語法。只要在程式編寫視窗,選取SQL查詢程式,按滑鼠右鍵,選取「重構」,請參考下圖所示:
圖 28:重構查詢
請參考下圖所示:
圖 29:重構完成的查詢
這次Copilot改用了JOIN語法來執行查詢,建議的程式如以下列表:
-- Created by Copilot in SSMS - review carefully
before executing
SELECT
p.ProductID,
p.ProductName,
p.CategoryID,
p.QuantityPerUnit,
p.UnitPrice,
p.UnitsInStock,
p.UnitsOnOrder,
p.ReorderLevel,
p.Discontinued
FROM
Products AS p
INNER JOIN
Categories AS c
ON
p.CategoryID = c.CategoryID
WHERE
c.CategoryName = 'Seafood';
若看不懂SQL語法,可以在程式撰寫視窗,選取SQL程式,按滑鼠右鍵,選取「說明」,聊天視窗便會顯示詳細的程式說明,請參考下圖所示:
圖 30:解釋程式
也可請Copilot撰寫文件,請參考下圖所示:
圖 31:請Copilot撰寫文件
也可請Copilot修改程式碼的錯誤,請參考下圖所示:
圖 32:修改程式碼的錯誤
變更模式
預設,SSMS中的Copilot 會以唯讀模式執行,因此Copilot只會執行讀取資料的SQL查詢。 不過,我們可以使用聊天中的「/rwa」命令,將聊天模式變更為「具有核准的讀取/寫入」,這樣就可以執行資料異動的SQL。首先在聊天視窗中直接輸入以下命令變更模式:
/rwa
請參考下圖所示:
圖 33:將聊天模式變更為「具有核准的讀取/寫入」
接著便可以請Copilot幫忙撰寫變更結構或異動資料的查詢,例如使用自然語言輸入提示如下:
建立一個Books資料表,包含Id 、 Title 、Price
、PublishDate 、InStock 、Description 欄位,並在資料表中新增幾筆測試資料
Copilot回應結果請參考下圖所示:
圖 34:變更結構或異動資料的查詢
Copilot產生的程式參考如下:
--
Created by Copilot in SSMS - review carefully before executing
-- 建立 Books 資料表
CREATE TABLE Books (
Id INT IDENTITY(1,1) PRIMARY KEY, -- 自動遞增主鍵
Title NVARCHAR(255) NOT NULL, -- 書名
Price DECIMAL(10,2) NOT NULL, -- 價格
PublishDate DATE NOT NULL, -- 出版日期
InStock BIT NOT NULL, -- 是否有庫存
Description NVARCHAR(MAX) -- 描述
);
-- 插入測試資料
INSERT INTO Books (Title, Price,
PublishDate, InStock, Description)
VALUES
('SQL Basics', 29.99, '2023-01-15', 1, 'A beginner
guide to SQL.'),
('Advanced
SQL', 49.99, '2022-11-10', 1, 'Deep dive
into SQL techniques.'),
('Database
Design', 39.99, '2021-05-20', 0, 'Learn how to
design databases effectively.'),
('Data
Analysis with SQL', 34.99, '2020-08-30', 1, 'Using SQL
for data analysis.');
-- 查詢資料表內容以確認插入成功
SELECT * FROM Books;
這個查詢的執行結果,請參考下圖所示:
圖 35:變更結構或異動資料的查詢執行結果
總結
SSMS中的Copilot 讓資料庫工作更快、更準、更簡單,無論是資深工程師或新手都能受益。特別是在寫 SQL 和管理資料庫時,它是很有力的 AI 助手,節省大量的程式撰寫功夫,現在開始擁抱它吧!
沒有留言:
張貼留言