windows版本sqlserver2016导数据到linux版本sqlserver2017

2022年1月13日11:18:23

因为测试服务器是linux,没有多的资源额外装一台windows,现在在跑的数据库是

导出数据库:windows sqlserver2016 

导出数据库:linux sqlserver2017

 

官方安装文档:https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup?view=sql-server-ver16 

配置文件官方文档:https://learn.microsoft.com/zh-cn/sql/linux/sql-server-linux-configure-mssql-conf?view=sql-server-ver16

 

linux安装sqlserver 2017

一、设置镜像
curl https://packages.microsoft.com/config/rhel/7/mssql-server-2017.repo > /etc/yum.repos.d/mssql-server.repo

二、进行安装
yum install -y mssql-server

三、运行安装程序
sudo /opt/mssql/bin/mssql-conf setup

四、查看
rpm -qa | grep mssql

五、设置为开机自启
systemctl enable mssql-server
/opt/mssql/bin/mssql-conf setup
选择2,developer 开发免费版本
然后选择yes
输入sa的密码
等待安装成功,默认启动,最后设置开机启动

 

注意:

https://packages.microsoft.com/config/rhel/7/目前只有 2017和2019,官方其他版本需要自己去找


insiders-fast.repo 26-Feb-2020 02:36 229 insiders-slow.repo 10-Mar-2020 18:05 211 mssql-server-2017-gdr.repo 26-Feb-2020 02:36 244 mssql-server-2017.repo 26-Feb-2020 02:36 232 mssql-server-2019-gdr.repo 26-Feb-2020 02:37 243 mssql-server-2019.repo 26-Feb-2020 02:37 231 mssql-server-preview.repo 26-Feb-2020 02:37 240 packages-microsoft-prod.rpm 14-Mar-2017 17:55 4484 prod.repo 26-Feb-2020 02:37 193

开启sql server agent

sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true 
sudo systemctl restart mssql-server

 

导出数据,推荐两种方式:

1,导出sql文件

使用脚本备份作业
  1. 打开 SQL Server Management Studio 。
  2. 展开 " SQL Server 代理",然后展开 " 作业"。
  3. 右键单击要为其创建备份脚本的作业,然后选择 " 编写作业脚本为"。
  4. 选择 " 创建到 或 删除",然后选择 " 新建查询编辑器窗口"、" 文件" 或 " 剪贴板 ",为脚本选择一个目标。 通常,目标是扩展名为 .sql 的文件。
  5. 为你要编写脚本的每个作业重复步骤 3 以后的过程。 请参考与 BizTalk Server 相关的作业列表,以确定你需要为哪些作业编写脚本。
  6. 至少应在配置备份后备份 BizTalk Server (BizTalkMgmtDb) 作业。
注意:要选择设置脚本的时候,要选择 高级 -> 要编写的脚本的数据类型 ->选择架构和数据
 
这样导出的sql还会有很多问题,建议方法2
 

2,导出二进制bak or log文件

在需要备份的数据库上点右键,选择任务->备份,弹出备份数据库窗口。

注意,选择你需要备份的位置和名称,如果是linux你需要设置为mssql用户的权限

 

 

 

点击确定即可,如果需要设置定期备份可以设置 备份选项

查看或配置备份压缩默认值选项
  1. 在对象资源管理器中,右键单击服务器并选择 “属性” 。
  2. 单击 “数据库设置” 节点。
  3. 在“备份和还原” 下,“压缩备份” 显示了 backup compression default 选项的当前设置。 该设置确定压缩备份的服务器级默认设置,如下所示:
  • 如果未选中 “压缩备份” 框,在默认情况下将不压缩新备份。
  • 如果 “压缩备份” 框已选中,则默认情况下将压缩新备份。
  1. 如果你是 sysadmin 或 serveradmin 固定服务器角色的成员,还可以通过单击“压缩备份” 框来更改默认设置。

压缩的文件和不压缩的文件 ,压缩比例大概1:3 1:4左右,还是很不错,特别是长期备份,数据库备份文件越来越大的时候

 

为什么要备份成.bak文件?

 

 因为还原的时候默认支持这几个后缀,当然可以改成选择所有文件,但是建议.bak,这样其他人知道这个做什么用的

 

导入到linux的sqlserver

注意文件权限

id mssql
chown -R mssql:mssql db-20220222/

 

 

 2,

 

 

 

sqlserver备份只能还原本机的bak文件
标题: Microsoft SQL Server Management Studio
------------------------------
还原数据库“BCS”时失败。 (Microsoft.SqlServer.Management.RelationalEngineTasks)
------------------------------
其他信息:
System.Data.SqlClient.SqlError: BACKUP LOG cannot be performed because there is no current database backup. (Microsoft.SqlServer.SmoExtended)
有关帮助信息,请单击: https://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=16.100.46521.71+(SMO-master-A)&LinkId=20476
------------------------------
 
解决办法:
1,勾选覆盖到现在的数据库
2,结尾日志备份的问题,还原的时候程序默认选中了"还原前进行结尾日志备份"
还原数据库选择中去掉结尾日志就可以了
 
然后点击确定就好了
 
默认数据存储位置: /var/opt/mssql/data
软件执行位置:/opt/mssql
配置文件:/var/opt/mssql/mssql.conf
 
官方文档主要通过 /opt/mssql/bin/mssql-conf 来设置配置文件
 
数据迁移方法:
默认数据存储位置: /var/opt/mssql/data
想迁移到 /data/mssql_data     
先执行 chown -R mssql:mssql /data/mssql_data 给与权限

/opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /data/mssql_data
/opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /data/mssql_data
/opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /data/mssql_data

systemctl restart mssql-server

配置文件内容

[sqlagent]
enabled = true

[EULA]
accepteula = Y

[filelocation]
defaultdatadir = /data/mssql_data
defaultlogdir = /data/mssql_data
defaultbackupdir = /data/mssql_data

重启服务

新的数据库就会 /data/mssql_data     

旧数据库删除即可

 
sqlserver2017 批量导出所有的作业
SQl server 代理 -- 选中作业 -- 按 F7,弹出 对象资源管理详细信息 ,里面对作业多选以后右键就有导出 sql的菜单了
 
SQL Server 维护计划实现数据库备份
 
  数据库 -> 【管理】-> 【维护计划】  -> 【维护计划向导】;
 
 

posted on 2022-01-13 14:59  zh7314  阅读(231)  评论(0编辑  收藏  举报