開發環境用 SQL Server 2005,生產環境仍為 2000,遷移時若直接用「產生腳本」預設選項,執行會報錯。本文詳細記錄遷移完整流程、必須手動取代的關鍵字對照表,以及**勾選「為所有物件產生腳本」即可避免所有取代工作**的致勝技巧。
.sql 檔複製到 SQL Server 2000 執行。| 原腳本片段 | 需取代為 | 說明 |
|---|---|---|
| WITH (IGNORE_DUP_KEY = OFF) ON | (空字串,直接刪除) | 2000 不支援此索引選項 |
| sys.objects | sysobjects | 系統表名稱差異 |
| sys.views | sysobjects | 同左 |
| object_id | id | **區分大小寫**,僅取代 object_id |
| sys.sp_addextendedproperty | dbo.sp_addextendedproperty 或 sp_addextendedproperty | 結構描述前置詞差異 |
| @level0type=N'SCHEMA' | @level0type=N'user' | 2000 無 SCHEMA 概念 |
| @name=, @value=, @level0type=, @level0name=, @level1type=, @level1name= | (空字串,刪除整組參數) | 擴充屬性參數簡化 |
在「選擇指令碼選項」頁面,**勾選「為所選資料庫中的所有物件編寫指令碼」**,其他步驟不變,產生的腳本**完全相容 SQL Server 2000,無需任何手動取代即可直接執行成功**。
dbo,避免結構描述對應問題。bcp / DTS / SSIS 匯出匯入,而非 INSERT 腳本。-- 物件數量對比
SELECT COUNT(*) FROM sysobjects WHERE xtype IN ('U','V','P','FN','IF','TF');
-- 資料筆數抽樣
SELECT TOP 1 * FROM 關鍵資料表;
掌握這個「勾選一個選項」的隱藏技巧,能將 SQL Server 版本遷移從「痛苦的字串取代」變為「一鍵產生、直接執行」的順暢體驗。