前一篇博客關於SQL Server on Linux的安裝,地址:http://www.cnblogs.com/fishparadise/p/8057650.html,現在測試把Windows平臺下的一個資料庫遷移到Linux平臺下。 1. 環境 Windows: Microsoft SQL Ser ...
前一篇博客關於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