276 字
1 分鐘
Error: invalid version 16?SMO 抓不到語法直接炸掉
結論
- SMO 版本過舊無法解析新版 SQL Server(v16),更新 SSMS 就能解。
適合用在哪裡
- 使用 SMO 取得 Table / View Script
- 自動化產生 SQL Schema
- 使用舊版 SSMS / 舊 SDK 的環境
- 出現 version 16 / 版本不支援錯誤
流程步驟
1. 確認錯誤來源(SMO 版本不支援)
- 執行取得 Create Table / View 語法時出現
invalid version 16 - 代表 SMO 無法識別 SQL Server 2022(v16)
- 常見於:
- 舊版 SSMS
- 舊版 NuGet:Microsoft.SqlServer.Smo

2. 更新 SSMS(最快解)
- 到微軟官方下載最新版 SSMS
- 安裝後會自動更新 SMO 相關元件
- 為什麼:
- SMO 版本跟 SSMS 綁在一起
- 新版 SSMS 才支援 SQL Server 2022+
3. (程式端)更新 NuGet 套件(如果有用 SMO)
- 更新 SMO 套件版本
# 更新 SMO 套件dotnet add package Microsoft.SqlServer.SqlManagementObjects- 確保版本 >= 支援 SQL Server 2022
補充
- SSMS 跟 SQL Server 版本不需要一致,但不能太舊
- SMO 很吃版本,不是 DB 問題,是 client 問題
- 若 CI/CD 有用 SMO,也要同步升級套件
收尾
- 看到 version 16 別懷疑人生,九成是工具太老,更新就好。
Error: invalid version 16?SMO 抓不到語法直接炸掉
https://joyceowo.github.io/posts/23ba78ea09fa8185bbdedd283180ed59/