如丝般顺滑地从Windows迁移SQLServer数据库到Linux

    xiaoxiao2026-05-05  12

    问题引出

    老鸟看过菜鸟的上一篇《MSSQL On Linux备份与还原》文章后,很满意,但是还是忍不住发问:“这篇文章讲的是MSSQL在Linux系统上的备份与还原,如果我之前是Windows系统的用户,怎么把我的数据库如丝般顺滑地迁移到MSSQL On Linux呢?”。“嗯,老鸟,这个问题问的非常好,毕竟Windows的License费用不低,如果能够使用免费的Linux系统,的确会节约一大笔开销啊。”,于是菜鸟开始马不停蹄的研究如何将Windows上的数据库迁移到Linux系统中。随着菜鸟的深入研究,决定选择使用备份还原的方式来试试从Windows迁移SQL Server数据库到Linux。

    Windows上备份数据库

    使用SSMS在源头Windows上的数据库执行下面语句,做一个AdventureWorks2008R2数据库的全备。

    --execute on source database USE master GO EXEC sys.xp_create_subdir 'C:\Temp\' GO --Generate at Dec 10 2016 10:34AM on server CHERISH-PC RAISERROR ('%d/%d database backup %s to %s ',10,1 ,1,1,'CHERISH-PC.AdventureWorks2008R2','C:\Temp\') WITH NOWAIT BACKUP DATABASE [AdventureWorks2008R2] TO DISK = 'C:\Temp\AdventureWorks2008R2_full_20161210.bak' WITH STATS = 2 , compression;

    检查Windows上全备文件

    上传备份文件到Linux

    在Windows上完成全备以后,接下来我们需要将备份文件上传到Linux系统,菜鸟用的是MobaXterm这个工具自带的上传功能。

    Linux上检查上传的文件

    # ls -l /var/opt/mssql/data/ | grep AdventureWorks2008R2_full_20161210.bak -rw-r--r--. 1 root root 46030848 Dec 10 00:17 AdventureWorks2008R2_full_20161210.bak

    Linux上还原数据库文件已经上传到Linux系统并检查没有问题以后,接下来就是在Linux上还原数据库了。使用SSMS连接到Linux版本的SQLServer,执行下面的语句还原数据库到MSSQL ON Linux

    --execute on destination database USE master GO EXEC sys.xp_create_subdir 'C:\var\opt\mssql\data\AdventureWorks2008R2\SQL' EXEC sys.xp_create_subdir 'C:\var\opt\mssql\data\AdventureWorks2008R2\LOG' GO USE master GO RESTORE DATABASE [AdventureWorks2008R2] FROM DISK = N'C:\var\opt\mssql\data\AdventureWorks2008R2_full_20161210.bak' WITH MOVE N'AdventureWorks2008R2_Data' TO N'C:\var\opt\mssql\data\AdventureWorks2008R2\SQL\AdventureWorks2008R2_Data.mdf' ,MOVE N'AdventureWorks2008R2_Log' TO N'C:\var\opt\mssql\data\AdventureWorks2008R2\LOG\AdventureWorks2008R2_log.LDF' ,STATS=2 GO

    检查Linux中数据库文件结构

    Linux中执行简单的查询

    SSMS中GUI查看

    写在最后

    从测试结果来看,MSSQL ON Linux完全兼容从Windows数据库的备份的文件,并且版本还做到了向下兼容,这点非常好,完全做到了如丝般顺滑过度到MSSQL On Linux。细心的你一定注意到了,菜鸟是从MSSQL 2008R2的数据库备份还原到Linux上的。

    相关资源:Linux环境下访问Windows环境下的SQL Server数据库
    最新回复(0)