[SQL Server][Upgrade]SQL Server 2000移轉資料庫檔案到SQL Server 2017

維護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

升級SQL2014技術指南

Migrate from SQL Server 2000 to 2012