維護SQL2000的系統要作資料移轉時,除了寫AP程式或是用ETL工具轉換資料,其實也能繼續用舊機卸離 x 新機附加直接移轉user databse的資料庫檔案。
上一篇實驗了移轉SQL2005的檔案到SQL2017,實驗結果可以直升;這次實驗SQL2000的user database,事前從ms blog的討論發現需要先轉到SQL2005或SQL2008,再跳到SQL2017。
下載SQL 2000資料庫
從微軟下載找到SQL 2000的資料庫檔案
https://www.microsoft.com/en-us/download/confirmation.aspx?id=23654
下載之後,會有一個SQL2000SampleDb.msi,點選安裝後,
同意授權條款
選擇安裝選項
安裝完畢
預設會跑資料庫解壓縮在C:\SQL Server 2000 Sample Databases\,果然找到2004年12月的北風範例資料庫,一種回到學校的概念(遠目)。
先升級到SQL 2008
1.將資料庫檔案搬到SQL2008的機器上
2.確認過渡機器上的SQL版本
3.附加資料庫(如果碰到SQL 3415錯誤,文章最後有說明解決方式)
USE [master]
GO
CREATE DATABASE NORTHWND2000 ON
( FILENAME = N'D:\AP\NORTHWND.MDF' ),
( FILENAME = N'D:\AP\NORTHWND.LDF' )
FOR ATTACH
GO
順利成功!
訊息中,可以發現SQL正在轉換內部版本從539(SQL2000)到661(SQL2008 R2)
4.檢視資料庫資訊
USE NORTHWND2000
DBCC TRACEON (3604)
DBCC DBINFO
DBCC TRACEOFF (3604)
GO
建立在539(SQL2000),目前是661(SQL2008 R2)
SQL 2008的相容層級可以是80(2000),90(2005),100(2008)
5.卸離資料庫,準備再升級到SQL2017
USE [master]
GO
ALTER DATABASE [NORTHWND2000] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N'NORTHWND2000'
GO
再升級到SQL 2017
1.先把掛在SQL2008的資料庫檔案複製到SQL2017的機器上
2.附加資料庫(如果碰到SQL 3415錯誤,文章最後有說明解決方式)
USE [master]
GO
CREATE DATABASE NORTHWND2000 ON
( FILENAME = N'F:\Data\SQL2000\NORTHWND.MDF' ),
( FILENAME = N'F:\Data\SQL2000\NORTHWND.LDF' )
FOR ATTACH
GO
順利成功!
訊息中,可以發現SQL正在轉換內部版本從661(SQL2008 R2)到869(SQL2017)
3.檢視資料庫資訊
USE NORTHWND2000
DBCC TRACEON (3604)
DBCC DBINFO
DBCC TRACEOFF (3604)
GO
NORTHWND2000資料庫搬到SQL 2017 Instance了
SQL 3415 cannot be upgraded because it is read-only
如果過程中發生SQL 3415 cannot be upgraded because it is read-only的錯誤,問題原因是SQL啟動的服務帳號是否能取得資料庫檔案權限有關,解決方式有2:
1.修改SQL啟動的服務帳號,改為windows帳號。
2.或是可以使用Windows驗證(具有sysadmin)登入Instance執行。
3415本人生活照
訊息 3415,層級 16,狀態 2,行 6
Database 'NORTHWND2000' cannot be upgraded because it is read-only, has read-only files or
the user does not have permissions to modify some of the files. Make the database or files writeable, and rerun recovery.
小結:
- 資料庫檔案移轉上去就很難下來了,她喜新厭舊,是變了心的女朋友
- 留一台SQL2005或SQL2008來承先啟後
- SQL資料庫內部版本是關鍵,可以參考上一篇的表格整理。
- SQL帳號權限、各版本停用或被取代的SQL引擎功能...blah blah blah是另外一個工程。
- AP系統升級、Table schema也修改是另外一個大工程。
參考:
Northwind and pubs Sample Databases for SQL Server 2000下載
Migrate from SQL Server 2000 to SQL Server 2014 Step by Step
Migrate from SQL Server 2000 to 2012