阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

从Windows迁移SQL Server到Linux

218次阅读
没有评论

共计 1336 个字符,预计需要花费 4 分钟才能阅读完成。

前一篇文章关于 SQL Server on Linux 的安装,地址:http://www.linuxidc.com/Linux/2017-12/149607.htm,现在测试把 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 查询:

从 Windows 迁移 SQL Server 到 Linux

Figure-1: sqlcmd 下的查询

 

从 Windows 迁移 SQL Server 到 Linux

Figure-2: SSMS 下 db1 数据库的属性(Files)

在 Windows 的 SSMS 连接到 Linux 下的数据库,发现数据库文件的路径不是 Linux 的正斜杠,而是 Windows 的反斜杠;Compatibility level 也无法修改。

从 Windows 迁移 SQL Server 到 Linux

Figure-2: SSMS 下 db1 数据库的属性(Options)

从 Windows 迁移 SQL Server 到 Linux

Figure-2: SSMS 下的查询

6. 参考

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

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-12/149608.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1336字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中