從Windows遷移SQL Server到Linux


前一篇博客關於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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM