从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的更多相关文章
- 如丝般顺滑地从Windows迁移SQLServer数据库到Linux
		
老鸟看过菜鸟的上一篇<MSSQL On Linux备份与还原>文章后,很满意,但是还是忍不住发问:"这篇文章讲的是MSSQL在Linux系统上的备份与还原,如果我之前是Windo ...
 - SQL Server on Linux: How? Introduction:   SQL Server Blog
		
SQL Server Blog Official News from Microsoft’s Information Platform https://blogs.technet.microsoft. ...
 - SQL Server On Linux:基于实际项目案例,总结功能支持情况及相关问题解决方案,讲如何快速完成迁移
		
上个月,有个朋友问我说Sql Sever向Mysql迁移有什么好的经验分享,他们公司客户明确提出不再提供Windows服务器,现在计划Mysql迁移.我说Mysql迁移成本太高了,不妨可以了解一下SQ ...
 - SQL Server on Linux 理由浅析
		
SQL Server on Linux 理由浅析 今天的爆炸性新闻<SQL Server on Linux>基本上在各大科技媒体上刷屏了 大家看到这个新闻都觉得非常震精,而美股,今天微软开 ...
 - 配置SQL Server on Linux(2)
		
1. 前言 前一篇配置SQL Server on Linux(1),地址:http://www.cnblogs.com/fishparadise/p/8125203.html ,是关于更改数据库排序规 ...
 - centos7安装配置sql server 2017 linux教程
		
一.安装教程 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker https://docs.mic ...
 - 微软发布SQL Server on Linux
		
本文参考并翻译自:微软云计算与企业执行副总裁Scott Guthrie的博客. 过去的一年,不管是对于微软的数据业务,还是整个行业,都是令人惊喜的一年.在周四刚于纽约举行的Data Driven活动中 ...
 - 关于解决Mac使用docker安装SQL server for Linux 中文乱码问题
		
本人是Mac的追随者,无奈本学期数据库课要求使用Microsoft的SQL server.但是Microsoft并没有发布SQL server for Mac ,笔者使用Google搜索后, 发现可以 ...
 - Microsoft SQL Server on Linux 踩坑指南
		
微软用 SQL Server 在 2016 年的时候搞了一个大新闻,宣传 Microsoft ❤️ Linux 打得一众软粉措手不及.但是这还是好事情,Linux 上也有好用的 SQL Server ...
 
随机推荐
- vs2013配置opencv环境
			
首先本人的opencv版本是opencv2.4.9. 步骤如下: 1. 首先下载opencv2.4.9 2. 配置环境变量: 3. 系统变量:D:\opencv\build\x86\vc12\bin ...
 - jQuery选择器(内容过滤选择器)第四节
			
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
 - 有关ActiveXObject的兼容性问题(浏览器的特有属性)
			
这个问题还得从一开始时候学习有关javascript中有关对文件的一些操作. 对于每个前端的人应该都清楚有关File对象,其中包括多种方法,就不一一描述了,比如说她是通过FileSystemObjec ...
 - C#中抽象类和接口的区别2
			
1.接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性: 2. 下面分别从声明, ...
 - 重构手法之Extrct Method(提炼函数)
			
返回总目录 本节包含3个手法: 1.Extract Method(提炼函数) 2.Inline Method(内联函数) 3.Inline Temp(内联临时变量) Extract Method(提炼 ...
 - 初识Redux-Saga
			
Redus-saga是一个redux的中间件,主要用来简便而优雅的处理redux应用里的副作用(side effect相对于pure function这类概念而言的).它之所以可以做到这一点主要是使用 ...
 - css基础-语法篇
			
CSS基础 1.css简介 cascading style sheets 汉译层叠样式表,WEB标准中的表现标准语言,表现标准语言在网页中主要对网页信息的显示进行控制,简单说就是如何修饰网页信息 ...
 - [转]查询sqlserver 正在执行的sql语句的详细信息
			
包含用户名,所在数据库,执行的sql语句,执行开始时间,驱动程序,主机名称 SELECT [Spid] = session_Id, ecid, [Database] = DB_NAME(sp. ...
 - RunLoop想入门,看这篇就够了
			
前言 刚刚听到RunLoop的时候我也是一脸懵逼,这是什么,有什么用呢,逼格貌似还挺高.然后就开始尝试去搞懂它,去找博客,但是几乎所有的博客都是枯燥乏味的,都是讲概念,然后给个实例,对于我这个小白来说 ...
 - Builder模式的思考(Effective Java)
			
<Effective Java>(第2版)中第二条中提到:遇到多个构造器参数时要考虑用构建器.在复习static关键字和内部类时回头看了一下,这才明白了为什么要用静态内部类来做处理,这里记 ...