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 的過程中,我遇到了一些挑戰:
- Port 設定
MS SQL Server 會自動設定 port,但 MS SQL Express 沒有,port 是空白的。第一次 telnet 測試時感到很不對勁,花了不少時間才設定好。不過經過第一次後,後續就不難了。 - 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,工程師仍需關注以下變動:
- 環境配置:重新設定資料庫權限與防火牆 Port。
- 連線字串:全面更新應用程式的 Connection String。
- 呼叫端調整:若 Data Type 在轉換中有所改變,呼叫端傳入的參數也必須同步修正。
結論:從「修補者」變身為「建築師」
這次 MySQL 轉 MS SQL Express 的經驗讓我明白:面對 Legacy Code,我們不一定要當一個吃力不討好的「修補者」,守著過時的語法苦苦掙扎。
藉由 AI 作為翻譯官,我們能以極低的成本將舊系統遷移到如 MS SQL 這樣穩定、資源豐富的現代生態系。雖然過程中仍需處理 Port 設定或資料型別對接等實務問題,但這換來的是更好的安全性、可維護性以及更長遠的技術生命週期。AI 不只是幫我們寫 Code,它是在幫我們跨越技術債的鴻溝。
