遷移核心三步走策略
將 SQL Server 2005 數據庫降級遷移至 SQL Server 2000,核心流程包含三個階段:生成兼容腳本、創建目標數據庫、數據導入遷移。本文詳述每個步驟的關鍵操作與避坑指南。
第一階段:生成 SQL Server 2000 兼容腳本
- 打開 SQL Server 2005 Management Studio,按 F8 開啟「對象資源管理器」,連接實例。
- 右鍵目標數據庫 → 任務 → 生成腳本。
- 在「腳本向導」中確認選中正確數據庫,勾選「為所選數據庫中的所有對象編寫腳本」。
- 關鍵設置:在「選擇腳本選項」中找到「為服務器版本編寫腳本」,選擇 SQL Server 2000。
- 其他選項按需配置,最終將腳本保存為
.sql 文件。
⚠ 常見問題預防:若提示「目標服務器版本不支持該對象」,通常是因為數據庫兼容性級別過高。解決方法:執行 EXEC sp_dbcmptlevel '你的數據庫名', '80'; 將兼容級別調整為 80 (SQL Server 2000)。
第二階段:在 SQL Server 2000 中創建目標數據庫
- 使用查詢分析器或 SSMS 連接 SQL Server 2000 實例。
- 打開並執行第一階段生成的
.sql 腳本文件。
- 腳本執行成功後,會創建結構相同的空數據庫。
⚠ 腳本執行常見報錯及對策:
- 「max 附近有語法錯誤」:SQL 2000 不支持
MAX 指定長度,需手動將腳本中的 VARCHAR(MAX) 替換為 VARCHAR(4000) 或 NVARCHAR(4000)。
- 權限/所有者問題:若報 dbo 相關錯誤,可嘗試移除腳本中的 dbo 前綴,或確保目標登錄用戶為 db_owner。
第三階段:數據從 2005 導入 2000
- 在 SSMS 2005 中,右鍵源數據庫 → 任務 → 導出數據。
- 「選擇數據源」:確認源數據庫。
- 「選擇目標」:連接 SQL Server 2000,選中第二階段創建的目標數據庫。
- 「選擇源表和視圖」:全選所有表,點擊「編輯映射」。
- 關鍵操作:對於有標識列的表,必須勾選「使用標識插入」;若涉及主外鍵約束,需按依賴順序分批導入(先主表後從表)。
- 完成向導,等待數據傳輸結束。
💡 Express 版本提示:若使用 SQL Server 2005 Express 版,管理工具中無「導出數據」選項。可直接運行安裝目錄下的 C:\Program Files\Microsoft SQL Server\90\DTS\Binn\DTSWizard.exe 啟動導入導出向導。
SQL 2000 語法兼容性補丁:TOP 子句處理
SQL Server 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)
快速版操作清單(順風順水版)
- 生成腳本:SSMS 2005 → 任務 → 生成腳本 → 目標版本選 SQL 2000 → 勾選「編寫創建數據庫腳本」 → 保存 .sql
- 建庫:查詢分析器連接 2000 → 執行 .sql 腳本
- 導數據:企業管理器 2000 → 右鍵目標庫 → 任務 → 導入數據 → 源選 2005 → 目標選新建庫 → 全選表 → 完成
延伸閱讀:SQL Server 2005 卸載前的準備工作
- 完整備份所有用戶數據庫、系統數據庫文件、日志文件,副本存放至非 MSSQL 目錄。
- 需保留的關鍵系統文件:
Master.*, Model.*, Msdbdata.*, Mssqlsystemresource.*, ReportServer* 等。
- 刪除本地安全組、備份/重命名 Reporting Services 文件夾。
- 停止所有 SQL Server 服務,使用具備管理員權限的帳戶執行卸載。