從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
從Windows遷移SQL Server到Linux