前一篇博客关于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的更多相关文章

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

    老鸟看过菜鸟的上一篇<MSSQL On Linux备份与还原>文章后,很满意,但是还是忍不住发问:"这篇文章讲的是MSSQL在Linux系统上的备份与还原,如果我之前是Windo ...

  2. SQL Server on Linux: How? Introduction: SQL Server Blog

    SQL Server Blog Official News from Microsoft’s Information Platform https://blogs.technet.microsoft. ...

  3. SQL Server On Linux:基于实际项目案例,总结功能支持情况及相关问题解决方案,讲如何快速完成迁移

    上个月,有个朋友问我说Sql Sever向Mysql迁移有什么好的经验分享,他们公司客户明确提出不再提供Windows服务器,现在计划Mysql迁移.我说Mysql迁移成本太高了,不妨可以了解一下SQ ...

  4. SQL Server on Linux 理由浅析

    SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...

  5. 配置SQL Server on Linux(2)

    1. 前言 前一篇配置SQL Server on Linux(1),地址:http://www.cnblogs.com/fishparadise/p/8125203.html ,是关于更改数据库排序规 ...

  6. centos7安装配置sql server 2017 linux教程

    一.安装教程 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker https://docs.mic ...

  7. 微软发布SQL Server on Linux

    本文参考并翻译自:微软云计算与企业执行副总裁Scott Guthrie的博客. 过去的一年,不管是对于微软的数据业务,还是整个行业,都是令人惊喜的一年.在周四刚于纽约举行的Data Driven活动中 ...

  8. 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题

    本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...

  9. Microsoft SQL Server on Linux 踩坑指南

    微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ❤️ Linux 打得一众软粉措手不及.但是这还是好事情,Linux 上也有好用的 SQL Server ...

随机推荐

  1. BabeLua常见问题

    BabeLua常见问题 来源: http://blog.csdn.net/babestudio/article/details/27228865 怎样升级BabeLua? https://babelu ...

  2. C++获取Windows7 32位系统中所有进程名(类似于任务管理器中的进程)

    代码是网上查找资料,然后自己调试,修改之后可以运行. 系统:win7 32位,VS2008 ------------------------------------------------------ ...

  3. CentOs6.8 hadoop集群搭建过程中的问题

    1.Error: Java heap space 网上有很多说是java虚拟机内存不够的,我也试着修改内存大小,但是没起作用,后来发现是文件在传输过程中失真.文件在上传到HDFS后变成乱码,重新上传文 ...

  4. Flex 基础语法(一)

    任何一个容器都可以指定为Flex布局. .box{ display: flex; } 行内元素也可以使用Flex布局. .box{ display: inline-flex; } Webkit内核的浏 ...

  5. ruby 安装 mysql2 命令

    sudo apt-get install libmysql-ruby libmyclient-dev

  6. 深入分析Android动画(一)

    动画的分类: ①View动画 View动画顾名思义其作用对象为View,包含平移.缩放.旋转.透明,这四类变化分别对应着Animation的子类TranlateAnimation.ScaleAnima ...

  7. threejs 组成的3d管道,寻最短路径问题

    threejs 里面的3d管道的每个节点ID是唯一的,且对应x,y,z坐标.那么当需要从A点到B点的时候,可能出现有多条路径可走,此时便需要求出最短行走路径,因此用到一个寻路径算法.我们将问题简化如下 ...

  8. 一个简单的MVC框架的实现-基于注解的实现

    1.@Action注解声明 package com.togogo.webtoservice.annotations; import java.lang.annotation.Documented; i ...

  9. Java中的Redis应用

    1.配置redis集群   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0" encoding ...

  10. 虚拟机通信配置与Xshell连接

    本文主要讲解虚拟机通信配置的详细步骤和Xshell工具连接,以及如何诊断网络问题并进行相应配置的问题. 1. 虚拟机通信配置 虚拟机通信配置的基本流程如图所示: 首先,我们先打开新建的虚拟机,然后输入 ...