1. 程式人生 > >從Windows遷移SQL Server到Linux

從Windows遷移SQL Server到Linux

dir 工具 創建目錄 文件目錄 stat 安裝 windows option eight

前一篇博客關於SQL Server on Linux的安裝,地址:http://www.cnblogs.com/fishparadise/p/8057650.html,現在測試把Windows平臺下的一個數據庫遷移到Linux平臺下。

1. 環境

Windows: Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)
Linux: CentOS 7.4,SQL Server 2017 (RC2) - 14.0.900.75 (X64)

2. 在Windows下創建備份

在Windows下使用SSMS完整備份數據庫

BACKUP DATABASE db1 TO DISK
= D:\sql_bak\db1\db1.bak WITH COMPRESSION, INIT, SKIP, NAME = full_backup,STATS = 1 GO

code-1: 備份數據庫

3. 復制備份文件到Liunx

把備份文件復制到Linux,如放到/tmp/下。可以用FTP,或rz等工具。


4. 在Linux下還原數據庫

使用終端(如Xshell)連接到Linux。默認數據文件目錄在/var/opt/mssql/data/下,如果要指定數據目錄的話,可創建自定義目錄並賦予相應權限。

mkdir -p /data/mssql_data
chown -R mssql:mssql /data/mssql_data

code-2: 創建目錄並修改權限



使用sqlcmd連接到數據庫

sqlcmd -S localhost -U sa

code-3: 連接到數據庫

RESTORE DATABASE db1 FROM DISK = /tmp/db1.bak
WITH
MOVE db1 TO /data/mssql_data/db1.mdf,
MOVE db1_log TO /data/mssql_data/db1_log.ldf,
STATS = 1, REPLACE, RECOVERY
GO

code-4: 還原數據庫


註意:不能復制並粘貼整個多行命令一次,只能復制每個行後按 enter 鍵。最後以GO結束,回車後執行。



當然,也可以把上面的還原數據庫的命令寫到一個文件,再使用sqlcmd執行腳本方式來還原數據庫。

sqlcmd -S localhost -U sa -i /data/mssql_data/restore_db.txt

code-5: 執行腳本文件還原數據庫


5. 查詢驗證

在Linux下的sqlcmd查詢:

技術分享圖片

Figure-1: sqlcmd下的查詢

技術分享圖片

Figure-2: SSMS下db1數據庫的屬性(Files)

在Windows的SSMS連接到Linux下的數據庫,發現數據庫文件的路徑不是Linux的正斜杠,而是Windows的反斜杠;Compatibility level也無法修改。

技術分享圖片

Figure-2: SSMS下db1數據庫的屬性(Options)

技術分享圖片

Figure-2: SSMS下的查詢



6. 參考

https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-migrate-restore-database

從Windows遷移SQL Server到Linux