2008 R2 (10.50.x) 備份還原至 2008 (10.00.x) 報錯:媒體簇結構不相容。高版本備份不可直接還原低版本。





重要:
sp_dbcmptlevel不能 讓高版本備份還原至低版本。它僅調整資料庫語法解析/優化器行為相容指定版本。
-- 核心邏輯:執行 ALTER DATABASE SET COMPATIBILITY_LEVEL SET @exec_stmt = 'ALTER DATABASE ' + QUOTENAME(@dbname) + ' SET COMPATIBILITY_LEVEL = ' + CAST(@input_cmptlevel AS NVARCHAR(128)) EXEC(@exec_stmt)
參數對照: 80=SQL 2000, 90=SQL 2005, 100=SQL 2008。
EXEC sp_dbcmptlevel 'MyDatabase', 90 -- 設定為 SQL 2005 相容
| 適用 | 不適用 |
|---|---|
| 資料庫已在低版本實例上,需調整相容行為 | 高版本 .bak 檔直接還原至低版本(根本不可行) |
| 升級後測試舊應用相容性 | 跨版本遷移部署 |
| 暫時禁用新語法特性 | 備份檔格式轉換 |
後續版本將移除
sp_dbcmptlevel,請改用ALTER DATABASE SET COMPATIBILITY_LEVEL。