嘗試在 SQL Server 2000 附加 SQL Server 2005 的 .mdf 檔案,會拋出錯誤 602:「無法在 sysindexes 找到索引 ID 1 對應的列」。根因是 **資料庫檔案格式版本不相容**,2000 無法識別 2005 的內部結構。本文提供標準遷移三步走流程,徹底解決版本降級問題。
錯誤 602: 未能在 sysindexes 中找到資料庫 ID N 中物件 ID 1 的索引 ID 1 對應的列。
請對 sysindexes 執行 DBCC CHECKTABLE。
DBCC CHECKDB、sp_attach_db 皆無效。CreateSchema_2000.sql。-- 在 Query Analyzer 或 SSMS 連線 SQL 2000
CREATE DATABASE NewDB_2000;
GO
-- 開啟並執行 CreateSchema_2000.sql
NewDB_2000。# 1. 匯出每張表 (需先建立格式檔或使用 -c 字元模式)
bcp SourceDB.dbo.TableName OUT TableName.dat -c -T -S SourceServer
# 2. 在 2000 建立表結構 (用步驟 1 的腳本)
# 3. 匯入
bcp TargetDB.dbo.TableName IN TableName.dat -c -T -S TargetServer
| 問題 | 對策 |
|---|---|
| 身分識別欄位 (IDENTITY) 匯入後種子值錯誤 | 匯入後執行 DBCC CHECKIDENT ('TableName', RESEED) 或在匯出時保留身分識別值 (bcp -E) |
| 大型文字/影像欄位 (TEXT/NTEXT/IMAGE) 截斷 | 使用 bcp -N 原生模式或 SSIS 封裝 |
| 預設值/約束/觸發器遺失 | 步驟 1 勾選完整選項、步驟 3 完成後對比 sp_help 結果 |
| 排序規則不一致導致中文亂碼 | 建立 2000 資料庫時指定相同 Collation:CREATE DATABASE ... COLLATE Chinese_PRC_CI_AS |
UPDATE STATISTICS / sp_updatestats)。版本降級遷移的鐵律:**結構用腳本重建、資料用工具搬移、絕不直接附加檔案**。遵循此流程,SQL 2005 → 2000 遷移零風險。