完全以T-SQL打造企業級RAG應用

作者:楊先民
精誠資訊/恆逸教育訓練中心資深講師
※網路引用請註明完整出處
前言
完全以 T-SQL 打造企業級 RAG 應用:Azure SQL Database原生向量與 Azure OpenAI 整合實戰。

作者:楊先民
精誠資訊/恆逸教育訓練中心資深講師
※網路引用請註明完整出處
完全以 T-SQL 打造企業級 RAG 應用:Azure SQL Database原生向量與 Azure OpenAI 整合實戰。

作者:楊先民
精誠資訊/恆逸教育訓練中心資深講師
※網路引用請註明完整出處
對於廣大的資料庫管理員(DBA)、資料工程師以及 IT 架構師而言,SQL Server Management Studio(SSMS)無疑是每日工作中不可或缺的核心利器。從早期單純的地端(On-Premises)資料庫管理、T-SQL 查詢撰寫,到近年來支援雲端 SQL 服務,SSMS 一直扮演著極其關鍵的角色。
然而,隨著企業加速推進雲端數位轉型,傳統地端 SQL Server 工作負載遷移至 Azure 的需求呈現爆發式增長。過去,DBA 在進行雲端遷移時,往往需要在多個獨立工具之間切換——例如使用 Database Migration Assistant (DMA) 進行相容性評估、使用 Azure Database Migration Service (DMS) 執行資料轉移、或者使用 Azure Data Studio 進行現代化管理。這種分散式的工具體驗不僅增加了學習成本,也提升了跨團隊溝通與維運的複雜度。
為了徹底解決此痛點,微軟在 SSMS 最新版本中推出了全新的「SQL Server 遷移至 Azure」(Migrate SQL Server to Azure)體驗。這是一項集成了相容性評估、目標資源部署(Provisioning)、資料遷移以及監控的全流程一站式解決方案,代表著 SSMS 正式從「純地端工具」全面演化為「混合雲地一體化管理平台」。

當我們的多個Azure subscription(訂用帳戶)們在不同的 Microsoft Entra ID tenant(租用戶)或是我們要為客戶管理 Azure 中的資源時,使用B2C 將管理者帳戶邀請到被管理的subscription所在的Entra ID tenants 再授予權限雖然可行,但是管理者在進行管理時就需要在不同的 tenant 間進行切換目錄(switch directory),這並不方便集中管理,而使用 Azure Lighthouse 是更好的解決方案。
Azure Lighthouse支援多租用戶管理,管理者(服務提供者)可以透過Azure平台的工具,跨租用戶為客戶提供管理服務,客戶可以控制誰可存取或管理他們的訂用帳戶或資源群組。
以下我們就以 Contoso 與 TPNIC 為例來說明如何使用Azure Lighthouse 進行跨租用戶管理。在這個情境中,Contoso 是管理者帳戶所在的 Entra ID tenant,而TPNIC是Azure subscription 所在 Entra ID tenant,TPNIC 要讓 Contoso 的管理人員可以管理 TPNIC 的 Azure subscription。也就是說在Azure Lighthouse,Contoso扮演服務提供者而TPNIC扮演客戶。
完成這些程序,Contoso 中被選取的帳戶(例如:MOD Administrator)就可以管理在 TPNIC 的那一個 Azure 訂用帳戶了!

拒絕零散的工具教學!為企業與 IT 專業人員打造的端到端 AI 生態系整合架構。從程式開發、雲端部署到自動化營運,全面提升 AI 即戰力!


從組織層級規劃 AI 採用路線圖 (Roadmap)。這不是一堂技術課,而是一堂企業戰略課。
🛡️ 考照雙重保險 (重考優惠)
大幅降低考照壓力!若首次未通過,提供專屬重考優惠價 (NT$600 - NT$1,000 依科目而定),確保您順利取得國際認證。
🎓 學生專屬投資方案
參加「校園 IT 職涯學習護照方案」,報名指定課程 (Azure OpenAI, ChatGPT, GitHub Copilot) 享有超值 5 折優惠。
💬 『對談機器人與AI Agent開發實戰–使用OpenAI API』「課堂中,老師對 Azure OpenAI 的功能進行了講解與演示,並且讓同學實際進行操作,讓我們體驗到 Azure OpenAI 所提供的功能之多樣,使用之便利;然而對我而言,讓我收穫最多的,其實是與建構Line Bot相關的教程中。在Line Bot相關的教程中,我們申請了自己的Line Bot,使用VS Code建構可接收Line訊息的服務,將服務與Azure OpenAI等大語言模型串接,獲取回應,最後將大語言模型的回應或動作指令回應給使用者。
在這一連串的實作教程中,包含的是自己架設的服務如何與Line Bot的串接、服務接受到訊息後該如何對訊息進行篩查、附加歷史對話紀錄、嵌入訊息相關資料以及對LLM回應內容的限制;這一整段流程的實作與細節講解,是我覺得在此課程中最有收穫,對我工作幫助最大的部分。」
💬 『為員工提供Copilot for Microsoft 365使用案例』「講師在教學過程中大量使用真實的企業情境範例,例如如何用 Copilot 在 Teams 會議結束後自動整理會議摘要與待辦事項、如何在 Outlook 中快速生成專業回覆草稿、如何在 Word 中透過 Copilot 協助撰寫提案文件初稿等,每一個範例都貼近日常辦公室實際發生的場景,讓在場學員頻頻點頭共鳴。課程節奏掌控得宜,理論與實作穿插進行,不會因為長時間聆聽而感到疲乏。講師也非常樂於回答學員提問,對於較為進階的技術問題,他會耐心拆解,確保每位學員都能跟上。
回到工作崗位後,課程所學幾乎立刻就被付諸實踐。身為數位科技的推動者,我的首要任務是為公司各部門進行評估,讓不同職能的同仁都能找到與自身工作最相關的應用場景。課程所提供的情境思考框架,讓我能夠系統性地拆解每個部門的日常工作流程,找出最適合 Copilot 介入的環節,大幅縮短了使用案例設計的時間。」
💬 『使用Microsoft 365 Copilot協作企業工作流程』「講師針對 Microsoft Copilot 在不同 M365 應用(Word、Outlook、Teams、PowerPoint)中的差異化場景做了深入說明,讓我了解到每個應用中的 Copilot 其實有各自的「強項情境」,學會對症下藥才能真正發揮效益。
課程中有一段讓我非常受益的設計:講師帶著學員一起「解構」一份常見的商務報告撰寫流程,逐步標示出哪些步驟適合交給 Copilot 處理(如資料摘要、段落草稿)、哪些步驟必須留給人類判斷(如策略定調、客戶關係語氣拿捏),整個過程讓我對 AI 協作的邊界有了非常清晰的認識。這門課最珍貴的地方,在於它給了我一套可以直接落地的思考框架,而不只是介紹工具功能。對於任何在職場中想要認真將生成式 AI 融入日常工作的人來說,這絕對是一門值得投資時間的課程。」
“ 以前我認為AI需要深厚的程式設計能力與數學基礎,但這門課程讓我發現,透過Azure AI平台,即使是不會寫程式的人,也能夠利用預訓練模型和AI服務API來開發應用。例如,只要幾行設定,就可以讓電腦自動分析圖片、辨識人臉,甚至判斷顧客的情緒,這讓我對AI的應用有了新的體會!”
Azure Point to Site(P2S) VPN 可以讓小型分支辦事處或出差在外的員工使用撥號連線連到 Azure 虛擬網路的 VPN Gateway 後,使用 private ip address 存取 Azure 虛擬網路中的虛擬機器或私人端點等服務,這樣比透過 Internet 使用 public ip address 進行存取有更好的安全性。在十年前(2015年) Azure P2S VPN 僅支援 SSTP 協定並且只能使用憑證驗證,這對於沒有部署 Enterprise CA 的企業並不方便。
隨著 Azure 不斷的革新與進步,現在Azure P2S VPN 不只支援 SSTP 協定,也支援 IKEv2 與 Open VPN 協定,而驗證方式除了憑證驗證外也支援 RADIUS 與 Microsoft Entra ID 驗證。使用 Microsoft Entra ID 驗證可以讓使用者在撥號連線時使用帳號密碼進行驗證,並且如果Entra ID 的授權(License)是 Premium(P1或P2)還可以使用條件存取原則來進行控制,甚至要求使用者需要 MFA 第二層驗證通過才授予存取權。但是,Azure P2S VPN 使用Microsoft Entra ID 驗證,目前只支援 Open VPN 協定並且需下載安裝 Azure VPN Client(支援Windows、Linux 或 MacOS,下載的安裝程式是不同的版本)。
當我們已經在 Azure 中部署虛擬網路、建立 Gateway Subnet 並部署 VPN Gateway(SKU為VPNGW1~5包含AZ,Basic SKU的 VPN Gateway目前不支援 Open VPN)後,您可以參考以下的步驟設定您的 P2S VPN 使用Microsoft Entra ID 驗證。
設定步驟:

圖一:Point-to-site configuration

圖二:Entra ID 的 Tenant ID

圖三、Azure Active Directory

圖四、Azure VPN 要求的權限

圖五、複製連結網址

圖六、下載Azure VPN Client 軟體

圖七、開啟開發人員模式

圖八、安裝Azure VPN Client 軟體

圖九、開啟 Azure VPN Client

圖十、匯入 VPN 連線設定

圖十一、使用 P2S VPN 進行連線
如果再配合 Microsoft Entra Connect 將企業內部 Active Directory 網域中的使用者帳戶同步到此 Entra ID tenant,進行 Azure P2S VPN 撥號連線時使用者即可使用與地端(AD 網域中)相同的使用者名稱及密碼進行驗證。
人工智慧(AI)的採用正在激增,助力各地的團隊取得更大的成就。Microsoft 近期委託的一項 IDC 研究發現,71%的公司已經在使用AI,而22%的公司計畫在未來12個月內使用AI。然而,儘管勢頭強勁,仍有52%的公司表示,相關技能人才短缺才是大規模實現AI的最大障礙。
AI廣泛用於各業務職能部門,這意味著公司需要以不同於傳統技術學習計畫的方式來對待AI技能培訓。企業必須思考如何提升其全體員工的技能 - 從領導層到IT部門再到業務用戶,以最大化其在 AI 領域的投資回報。
透過微軟培訓立即開始企業的AI轉型,幫助團隊提升技能並準備好利用Microsoft Cloud助力AI轉型的可靠資訊來源。
作者:楊先民 恆逸教育訓練中心資深講師
微軟為每個新版本的 Microsoft SQL Server 提供創新而感到相當的自豪。然而,總有一天產品生命週期必須結束。時間若是來到公元 2024 年 7 月 9 日,SQL Server 2014 將會結束支援。而微軟則是希望他們的客戶,已開始規劃將其SQL 工作負載遷移到Microsoft Azure 或更新到SQL Server 2022。技術加速創新。
本篇文章將引導客戶了解在面臨 SQL Server 支援終止時刻時採用的幾種最佳實務解決方法。客戶可以透過三種選擇來處理不支援的 SQL Server 工作負載:遷移或更新至 Azure、升級至 SQL Server 2022 或取得擴充安全性更新 (ESU) 以取得額外的準備時間。
長期以來,無論是執行在企業內部部署的資料中心、或是主機代管的設施中,網頁應用程式(Web Application)都需依附在實體或虛擬的「伺服器」上才能運作,從而帶來了高昂的維運費用。就算採用的是雲端運算模型,也是運作在雲端服務提供者環境的虛擬伺服器或執行個體上,縱然減少了維運硬體的負荷,但是仍然必須配置、設定、更新、分載、可用性和擴展能力,而且也要處理這些虛擬伺服器的高可用與災難復原。此外就算應用程式沒有耗用資源時,還是得支付虛擬機器或執行個體所佔用資源的費用,進而產生了許多無謂的成本。
為了解決前述應用程式需配置在伺服器上運作,也就是所謂「具伺服器運算(Severed Computing)」的缺點,雲端服務提供者推出了「無伺服器運算(Serverless Computing)」的開發模型,由其管理建置、擴展和維護的底層基礎架構,以及處理作業系統管理、修補、容量擴展、負載平衡、監控和記錄... 等例行工作;同時用戶只需支付程式碼執行時所耗用的處理器、記憶體等運算資源的費用,沒有閒置資源時的支出,確保良好的資源使用率,且不會有過度建置而產生的費用或資源浪費;這種方式讓應用程式的開發更具成本效益,開發人員只需專注在應用程式的設計、建置和部署,也得以更快的將應用程式推向市場。
Microsoft Azure 雲端服務提供兩個無伺服器運算的資源:Azure Functions與Azure Logic Apps,兩者處理的方式大不相同,最主要不同之處在於前者是無伺服器計算的服務,需撰寫程式碼及使用Durable Functions延伸模組來開發協調流程;而後者則是無伺服器工作流程整合平台,直接使用內建的圖形介面設計工具、或編輯設定檔,即可產生和執行自動化的工作流程,多數時候完全不需要撰寫程式、或只要很少的程式碼片段,下表列出Azure Functions與Azure Logic Apps一些主要的差異:

本文示範如何使用Azure Logic Apps,快速且輕鬆建立當雲端「儲存資料」產生異動時,以「電子郵件」通知儲存帳戶管理人員的工作流程。






藉由Azure Logic Apps視覺化設計工具並選取預建的作業項目,可以快速建置工作流程以整合及管理應用程式、資料、服務和系統,從而簡化了跨雲端、內部部署和混合式環境,連線舊版、新式和最先進系統,提供低程式碼到無程式碼的設計工具,開發高度可調整的整合解決方案。
Azure storage account 可提供我們儲存資料的服務,包括 blob、file、table與 queue。其中 blob container 可以讓我們儲存各種非結構化的資料,例如:文字檔或二進位檔,並且有低成本、高輸出量、高延展性、高可用性、高耐久性等多種優點。而 block 類型與 append 類型 blob 還有存取層(access tier) 的選項,選擇合適的存取層及刪除不需要的 blob可降低所要支付的費用。轉換存取層或刪除 blob 除了可以人工手動外,也可使用生命週期管理原則自動進行。
| 存取層 | 儲存費用 | 存取費用 | 默認合約天數 |
| Hot 層 (經常性) | 高 | 低 | 無 |
| Cool 層 (非經常性) | 中 | 中 | 30天 |
| Cold 層 (極非經常性) | 低 | 高 | 90天 |
| Archive 層 (封存) | 非常低 | 離線儲存 | 180天 |
註:
| 儲存體帳戶的種類 | 效能 | 轉換存取層 | 刪除 blob |
| 一般用途 v1 | 標準 或 進階 | 不支援 | 不支援 |
| 一般用途 v2 | 標準 | 支援 | 支援 |
| 一般用途 v2 | 進階 | 不支援 | 支援 |
| BlobStorage | 標準 | 支援 | 支援 |
| BlockBlobStorage | 進階 | 不支援 | 支援 |
註:

圖一、儲存體帳戶的生命週期管理

圖二、新增規則

圖三、規則條件

圖四、多個條件
假設 1 個 block 類型的blob 原本是 hot 層,最後一次修改是 2024/1/1,它將在 2024/1/31 變更為 cool 層,然後在2024/3/31 變更為 cold 層,之後在2024/12/31 變更為 archive 層,最後它會在 2030/12/30 被刪除。此外,若有多個條件設定相同的天數,則以變更為最低成本的為結果。