码迷,mamicode.com
首页 > 数据库 > 详细

从Windows迁移SQL Server到Linux

时间:2017-12-25 13:38:54      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:ace   数据库迁移   sqlcmd   png   with   技术分享   x64   logs   span   

原文:从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

标签:ace   数据库迁移   sqlcmd   png   with   技术分享   x64   logs   span   

原文地址:http://www.cnblogs.com/lonelyxmas/p/8108443.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!