如絲般順滑地從Windows遷移SQLServer資料庫到Linux
老鳥看過菜鳥的上一篇《MSSQL On Linux備份與還原》文章後,很滿意,但是還是忍不住發問:“這篇文章講的是MSSQL在Linux系統上的備份與還原,如果我之前是Windows系統的使用者,怎麼把我的資料庫如絲般順滑地遷移到MSSQL On Linux呢?”。
“嗯,老鳥,這個問題問的非常好,畢竟Windows的License費用不低,如果能夠使用免費的Linux系統,的確會節約一大筆開銷啊。”,於是菜鳥開始馬不停蹄的研究如何將Windows上的資料庫遷移到Linux系統中。
隨著菜鳥的深入研究,決定選擇使用備份還原的方式來試試從Windows遷移SQL Server資料庫到Linux。
使用SSMS在源頭Windows上的資料庫執行下面語句,做一個AdventureWorks2008R2資料庫的全備。
--execute on source database
USE master
GO
EXEC sys.xp_create_subdir 'C:\Temp\'
GO
--Generate at Dec 10 2016 10:34AM on server CHERISH-PC
RAISERROR ('%d/%d database backup %s to %s ',10,1 ,1,1,'CHERISH-PC.AdventureWorks2008R2','C:\Temp\') WITH NOWAIT
BACKUP DATABASE [AdventureWorks2008R2]
TO DISK = 'C:\Temp\AdventureWorks2008R2_full_20161210.bak'
WITH STATS = 2 , compression;
檢查Windows上全備檔案
在Windows上完成全備以後,接下來我們需要將備份檔案上傳到Linux系統,菜鳥用的是MobaXterm這個工具自帶的上傳功能。
Linux上檢查上傳的檔案
# ls -l /var/opt/mssql/data/ | grep AdventureWorks2008R2_full_20161210.bak
-rw-r--r--. 1 root root 46030848 Dec 10 00:17 AdventureWorks2008R2_full_20161210.bak
Linux上還原資料庫
檔案已經上傳到Linux系統並檢查沒有問題以後,接下來就是在Linux上還原資料庫了。
使用SSMS連線到Linux版本的SQLServer,執行下面的語句還原資料庫到MSSQL ON Linux
--execute on destination database
USE master
GO
EXEC sys.xp_create_subdir 'C:\var\opt\mssql\data\AdventureWorks2008R2\SQL'
EXEC sys.xp_create_subdir 'C:\var\opt\mssql\data\AdventureWorks2008R2\LOG'
GO
USE master
GO
RESTORE DATABASE [AdventureWorks2008R2]
FROM DISK = N'C:\var\opt\mssql\data\AdventureWorks2008R2_full_20161210.bak'
WITH MOVE N'AdventureWorks2008R2_Data'
TO N'C:\var\opt\mssql\data\AdventureWorks2008R2\SQL\AdventureWorks2008R2_Data.mdf'
,MOVE N'AdventureWorks2008R2_Log'
TO N'C:\var\opt\mssql\data\AdventureWorks2008R2\LOG\AdventureWorks2008R2_log.LDF'
,STATS=2
GO
檢查Linux中資料庫檔案結構
Linux中執行簡單的查詢
SSMS中GUI檢視
從測試結果來看,MSSQL ON Linux完全相容從Windows資料庫的備份的檔案,並且版本還做到了向下相容,這點非常好,完全做到了如絲般順滑過度到MSSQL On Linux。細心的你一定注意到了,菜鳥是從MSSQL 2008R2的資料庫備份還原到Linux上的。