一、完整資料庫備份與還原 (適用於同版本/相容版本)
- 企業管理器 → 右鍵資料庫 → 所有工作 → 備份資料庫。
- 備份類型選 完整,目的地「備份到」→ 新增 指定
.bak 檔案路徑,選 覆寫現有媒體,確定執行。
- 若
.bak > 1MB,建議壓縮後再透過 FTP/Remote Desktop/PCAnywhere 傳輸。
- 目標端:若無此資料庫先建立新資料庫 → 右鍵 → 所有工作 → 還原資料庫 → 從裝置 → 磁碟 → 選取
.bak → 還原備份集選「資料庫-完整」 → 確定。
- 注意:還原會完全覆蓋現有物件。若需部分還原,須另建新資料庫還原後再手工遷移特定物件。還原失敗常因資料庫被鎖定,可透過「管理 → 目前活動 → 鎖定/物件」找出進程號,在查詢分析器用
KILL <spid> 釋放。
二、單一資料表匯出匯入 (DTS 匯入/匯出精靈)
情境 A:無防火牆、同網域或可互通 IP
- 目標資料庫右鍵 → 所有工作 → 匯入資料 啟動 DTS 精靈。
- 資料來源:選 Microsoft OLE DB Provider for SQL Server,輸入來源伺服器/IP、驗證方式、資料庫。
- 目的地:同樣選 SQL Server Provider,指定目標伺服器/資料庫。
- 指定「複製資料表與檢視表」或「使用查詢指定資料」。
- 選擇來源表 → 對應目的表名 (可修改) → 轉換 可調整欄位對應、型別、長度、身分識別種子、
NOT NULL 等選項。
- 排程:立即執行或設定定期排程 → 可選擇儲存 DTS 封裝至 SQL Server 供未來重用。
情境 B:跨防火牆/不同網域 (透過文字檔中轉)
- 匯出至文字檔:來源端 DTS 精靈,目的地選 文字檔,指定檔案路徑,格式選「分隔符號」,勾選「第一列含欄位名稱」。
- 壓縮後傳輸至目標伺服器。
- 建立目標表結構:來源端查詢分析器 → 右鍵資料表 → 產生 SQL 指令碼 → 建立,複製
CREATE TABLE 語法,在目標端執行建立空表 (若同名表存在,建議改名如 table_YYYYMM)。
- 匯入文字檔:目標端 DTS 精靈,資料來源選 文字檔,格式同匯出設定,目的地選 SQL Server,對應至步驟 3 建立的表,選「在目的表中附加列」。
- 完成後若需改回原表名,企業管理器重新命名 (會造成應用程式短暫中斷)。
限制:索引、主鍵約束無法隨資料遷移,需手工重建;身分識別種子與 NOT NULL 可保留;檢視表匯入會變成實體資料表。
三、預存程序與使用者定義函數遷移
- 企業管理器 → 選取預存程序/函數 → 右鍵 → 所有工作 → 產生 SQL 指令碼 → 存為
.sql 檔。
- 跨防火牆時透過 FTP/Remote Desktop 傳輸
.sql。
- 目標端查詢分析器 → 檔案 → 開啟 載入
.sql → 執行 (綠色三角形)。
建議先執行函數腳本,再執行預存程序,避免相依性錯誤。
四、Oracle → SQL Server 異質遷移
- 目標 SQL Server 機器安裝 Oracle Client 或 ODBC Driver,設定
tnsnames.ora 別名。
- 系統管理工具 → 資料來源 (ODBC) → 系統 DSN → 新增 → Oracle ODBC Driver,填寫 Data Source Name、Service Name (tnsnames 別名)。
- SQL Server 匯入/匯出精靈 → 資料來源選 其他 (ODBC) → 選取上述 DSN、輸入 Oracle 帳密。
- 關鍵步驟:在「轉換」頁面調整欄位型別對應 (如
IMAGE → TEXT, DECIMAL → INT)。
五、SQL Server → Oracle 遷移
- 方法一:DTS 目的地選 Oracle ODBC DSN。注意 Oracle 表名全大寫。建議先在 Oracle 建好表結構,再附加資料。速度較慢。
- 方法二:透過 Windows 版 Oracle 9i Enterprise/Personal Edition 做中介,效能較佳。