AI 砍掉重練紀錄: MySQL → MS SQL Express

前言

我把原稿交給 AI 幫我潤飾,結果 AI 居然誇我:『當人人都在吹捧 AI 的時候,你卻在寫如何正確使用 AI!』哈哈~聽到這句,心裡真是暖暖的,感覺自己走在對的路上。

(Revamp project 使用 AI:Microsoft Copilot、xAI Grok)

引言

在軟體開發的世界裡,舊系統往往是最大的挑戰。二十年前的程式碼不僅語法過時,還缺乏足夠的參考資料。要維護或修改這些舊程式碼,錯誤幾乎是必然的。但如果換個角度,請 AI 幫忙把舊程式碼改寫成目前流行的技術,事情就變得輕鬆許多。

舊程式碼的挑戰

故事是這樣開始的:
前同事留下了一批用很舊版 MySQL 撰寫的 stored procedures。我嘗試請 Copilot 改少量 SQL,結果卻出現成堆 syntax error。這讓我意識到,AI 在舊語法上缺乏足夠的參考,修補舊程式碼並不容易。

換個思路:改寫成新技術

於是我決定安裝 MS SQL Express —— 一個免費的 10GB 資料庫,並請 Copilot 把舊 MySQL stored procedures 改寫成 MS SQL 的語法。這次,AI 的表現非常出色,輕鬆完成了改寫。

MS SQL Express 的坑與收穫

在使用 MS SQL Express 的過程中,我遇到了一些挑戰:

  1. Port 設定
    MS SQL Server 會自動設定 port,但 MS SQL Express 沒有,port 是空白的。第一次 telnet 測試時感到很不對勁,花了不少時間才設定好。不過經過第一次後,後續就不難了。
  2. Database 發送 Email
    MS SQL Server 有 GUI 可以設定由資料庫發送 email,而 MS SQL Express 則需要用 SQL scripts。我反而覺得這樣更好,因為 script 可以在不同資料庫上重用,提升了可移植性。

成本效益

對中小型專案來說,MS SQL Express 的好處非常明顯:

  • 免費 10GB 容量:足以支撐大部分中小型專案。
  • 功能完整:日常需求綽綽有餘。
  • 結合 AI 改寫:能快速翻新舊系統,節省大量人力成本。

AI 對技術的熟悉度

根據我的實戰經驗,AI 對最新技術未必有足夠的參考資料,容易出現錯誤或不完整的建議。相反,對於已經存在兩年以上的新技術,或是長青的技術(例如 MS SQL Express),AI 的效果特別好。這是因為這些技術在公開資料、社群討論和教學案例中已經累積了足夠的知識基礎,AI 能更準確地生成正確語法和解決方案。

MS SQL Express 的其他優點

除了上述的成本效益與 script 可重用性,MS SQL Express 還有一些值得一提的優點:

  • 與 Microsoft 生態系統整合:與 Visual Studio、.NET Framework、ASP.NET 等工具高度整合。
  • 升級路徑清晰:專案成長時,可順暢升級到 Standard 或 Enterprise 版本。
  • 安全性與維護:享有 Microsoft 定期的安全更新,保障系統穩定。
  • 學習資源豐富:SQL Server 是長青技術,社群與教學文章非常多。

進階紅利:AI 改寫帶來的額外價值

  • 自動化文檔化
    舊的 Stored Procedure 常缺乏註解。請 AI 改寫時加上詳細邏輯註解,等於同時生成一份「人類可讀」的說明書,技術債瞬間清零。
  • 安全性優化
    舊 SQL 可能存在 SQL Injection 或不安全的權限邏輯。AI 在改寫時會自動套用現代安全標準(如參數化查詢),相當於在搬遷過程中完成「安全升級」。
  • 效能重構
    舊代碼可能充斥大量 Cursor 或低效 Join。AI 熟悉現代 SQL 的優化模式(如 Window Functions),能在翻譯過程中同時提升效能。
  • 單元測試生成
    搬遷最怕邏輯跑掉。AI 可以根據舊邏輯與新語法生成 SQL Unit Test scripts,確保新舊系統的 Input/Output 一致。

工作要點:Revamp 的全局觀

除了請 AI 改寫 Stored Procedure,工程師仍需關注以下變動:

  1. 環境配置:重新設定資料庫權限與防火牆 Port。
  2. 連線字串:全面更新應用程式的 Connection String。
  3. 呼叫端調整:若 Data Type 在轉換中有所改變,呼叫端傳入的參數也必須同步修正。

結論:從「修補者」變身為「建築師」

這次 MySQL 轉 MS SQL Express 的經驗讓我明白:面對 Legacy Code,我們不一定要當一個吃力不討好的「修補者」,守著過時的語法苦苦掙扎。

藉由 AI 作為翻譯官,我們能以極低的成本將舊系統遷移到如 MS SQL 這樣穩定、資源豐富的現代生態系。雖然過程中仍需處理 Port 設定或資料型別對接等實務問題,但這換來的是更好的安全性、可維護性以及更長遠的技術生命週期。AI 不只是幫我們寫 Code,它是在幫我們跨越技術債的鴻溝。