將 SQL Server 2005 數據庫遷移至 2000 環境,看似標準流程,實操中卻暗藏諸多坑點。本文記錄完整操作步驟,並重點總結實踐中遇到的問題及解決方案,供後續查閱參考。
.sql 文件。EXEC sp_dbcmptlevel '你的數據庫名', '80';
GO
版本號對照:60=6.0, 65=6.5, 70=7.0, 80=2000, 90=2005, 100=2008, 110=2012, 120=2014, 130=2016, 140=2017, 150=2019。
VARCHAR(MAX),需批量替換為 VARCHAR(4000) (上限 8000 字節,NVARCHAR 為 4000)。DTSWizard.exe (路徑通常在 C:\Program Files\Microsoft SQL Server\90\DTS\Binn\)。
SQL 2000 TOP 子句不支持變量或表達式,必須用動態 SQL 繞過:
-- 原 2005 寫法 (2000 報錯)
DECLARE @pageIndex INT
SELECT TOP (@pageIndex-1)*12 newsID FROM News
-- 2000 兼容寫法
DECLARE @strSql VARCHAR(1000), @pageIndex INT
SET @pageIndex = (@pageIndex-1)*12
SET @strSql = 'SELECT TOP ' + STR(@pageIndex) + ' newsID FROM News'
EXEC (@strSql)
1. 生成 2000 版腳本
SSMS 2005 → 對象資源管理器 → 右鍵庫 → 任務 → 生成腳本
→ 選庫 → 勾選所有對象 → 選項:目標版本=SQL 2000、編寫創建庫腳本=True
→ 保存 .sql
2. 2000 建庫
查詢分析器連 2000 → 執行 .sql
3. 導數據 (從 2000 端發起)
企業管理器 2000 → 右鍵目標庫 → 任務 → 導入數據
→ 源: 連 2005/選源庫 → 目標: 選步驟2新庫 → 全選表 → 完成
sp_dbcmptlevel ..., 80,避免 90% 的腳本生成失敗。MAX 長度、移除 dbo. 前綴,再在 2000 執行。TOP (@var)、TOP (表達式) 必須改為動態 SQL 或應用層拼接。