問題現象
在 SQL Server Management Studio 中對 SQL Server 2005 數據庫執行「生成腳本」任務,目標版本選擇「SQL Server 2000」時,報錯:
「目標服務器版本不支持該對象或該對象的一個屬性」
根本原因
數據庫的兼容級別 仍設置為 SQL Server 2005 (90),導致腳本生成器嘗試腳本化 2005 專有特性(如 MAX 數據類型、PIVOT、TRY/CATCH 等),而目標版本 2000 不支持這些特性。
解決方法
- 在 SSMS 對象資源管理器中右鍵點擊目標數據庫 → 選擇「屬性」
- 在「選項」頁面中找到「兼容級別」
- 將其從 SQL Server 2005 (90) 改為 SQL Server 2000 (80)
- 點擊「確定」保存
- 重新執行「生成腳本」任務,目標版本選擇 SQL Server 2000,錯誤消失
原理說明
兼容級別控制數據庫引擎的語法解析行為:
- 80 (SQL Server 2000):禁用 2005+ 新語法,腳本生成器只輸出 2000 兼容語法
- 90 (SQL Server 2005):允許使用 2005 新特性,腳本中會包含不兼容語法
修改兼容級別不影響現有數據,僅影響新語法的解析與腳本生成。
注意事項
- 生成腳本後,建議將兼容級別改回 90,以便應用繼續使用 2005 新特性
- 若數據庫已使用 2005 專有特性(如
VARCHAR(MAX)、分區表等),降級腳本可能仍會失敗,需手動調整表結構
- SQL Server 2008+ 版本同理,兼容級別對應:100 (2008)、110 (2012)、120 (2014)、130 (2016)、140 (2017)、150 (2019)、160 (2022)