Centos7.3 下SQL Server 备份及还原的两种方式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7.3 下SQL Server 备份及还原的两种方式相关的知识,希望对你有一定的参考价值。

Centos7.3 下SQL Server 备份及还原的两种方式

我们前面两篇文章介绍了Centos7.3下SQL Server的安装配置及使用Powershell的管理介绍,今天我们接着介绍如何实现Centos7.3 下SQL Server  备份及还原,有两种方式:1、使用SSMS备份及还原,该方式最为简单也最方便操作的方式,2、使用Linux下SQL Server自带功能命令备份,具体见下:

我们上一篇中创建了一个测试数据库,我们接着拿这个数据库进行测试,我们首先使用第一种方式,使用SSMS进行连接备份;

我们首先使用SSMS连接数据库,然后右击数据库---tasks---Back up

技术分享

我们可以看见默认的备份路劲:默认的备份路劲 /var/opt/mssql/data/下;数据库的格式还是跟windows上的一样.bak格式;

单击--ok开始备份

技术分享

备份完成

技术分享

我们查看备份文件

cd /var/opt/mssql/data/

技术分享

接下来我们查看默认数据,然后尝试还原一下;

我们通过powershell进行操作;默认是有两条数据的

select * from xllinfo;
go

技术分享

接下来我们插入一条数据

insert into xllinfo values (3,‘gavin‘,29);
go

技术分享

接下来我们我们通过SSMS进行查看一下

select * from xllinfo

技术分享

接下来我们尝试使用SSMS用刚才的备份还原一下

右击数据库-会话-还原--数据库

技术分享

我们可以看见默认的源,但是我们不使用这样的方式

技术分享

我们选择Device---浏览

技术分享

选择添加文件

技术分享

选择备份路劲的备份文件

技术分享

单击确认

技术分享

如果确认信息的话,就可以单击还原了

技术分享

我们还原提示数据库正在使用,所以我们需要停掉访问数据库进程

技术分享

我们使用脚本

我们在系统数据库下执行

ALTER DATABASE [xll]
SET OFFLINE WITH ROLLBACK IMMEDIATE

技术分享

接下来我们重新尝试还原,但是需要勾选--选项中的--覆盖已经存在的数据库

技术分享

还原成功

技术分享

接下来我们查看数据,我们还原后,我们发现新增的一条数据没了;

技术分享

接下来我们使用第二种方法进行能备份,使用在Linux下进行备份

我们在备份前,需要重新插入几条数据,因为上面的还原已经把之前插入的数据覆盖了;我们使用sqlcmd进行插入数据

sqlcmd –S localhost –U sa
回车输入密码

技术分享

使用xll数据库,然后查询默认数据

use xll;
select * from xxlinfo;
go

技术分享

接下来我们插入数据

insert into xllinfo values (4,’user01’,20);
insert into xllinfo values (4,’user02’,30);
insert into xllinfo values (4,’user03’,40);
go

技术分享

接下来就是通过sqlcmd进行备份

sqlcmd -H localhost -U SA -Q "BACKUP DATABASE [xll] TO DISK = N‘/var/opt/mssql/data/xlldb01.bak‘ WITH NOFORMAT, NOINIT, NAME = ‘xll-full‘, SKIP, NOREWIND, NOUNLOAD, STATS = 10"

技术分享

我们接下来查看一下备份文件

cd /var/opt/mssql/data/

技术分享

接下来我们备份log

sqlcmd -H localhost -U SA -Q "BACKUP LOG [xll] TO DISK = N‘/var/opt/mssql/data/xlldb01_LogBackup_2017-03-04_12-10-10.bak‘ WITH NOFORMAT, NOINIT, NAME = N‘xlldb01_LogBackup_2017-03-04_12-10-10‘, NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 5"

技术分享

接下来我们删除里面的数据,然后进行查看、

use xll;
select * from xllinfo;
go

技术分享

然后我们删除数据

delete xllinfo where name = ‘ls‘;
delete xllinfo where name = ‘zs‘;
go

技术分享

我们再次查看

技术分享

接下来我们进行还原了;

提示数据库正在使用,无法还原

sqlcmd -H localhost -U SA -Q "RESTORE DATABASE [xll] FROM DISK = N‘/var/opt/mssql/data/xlldb01.bak‘ WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5"

技术分享

所以我们需要端口所有连接数据库的会话才可以

我们需要执行一下操作

ALTER DATABASE [xll]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
或者
ALTER DATABASE [xll]
SET OFFLINE WITH ROLLBACK IMMEDIATE
GO

技术分享

两种方式都是可以执行的;接下来我们尝试还原

sqlcmd -H localhost -U SA -Q "RESTORE DATABASE [xll] FROM DISK = N‘/var/opt/mssql/data/xlldb01.bak‘ WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5"

技术分享

我们最后查看

use xll;
select * from xllinfo;
go

技术分享

本文出自 “高文龙” 博客,谢绝转载!

以上是关于Centos7.3 下SQL Server 备份及还原的两种方式的主要内容,如果未能解决你的问题,请参考以下文章

sql server 备份与恢复系列四 大容量模式下的备份与还原

sql server 备份与恢复系列三 简单恢复模式下的备份与还原

Centos 7.3下 Linux For SQL Server安装及配置介绍

sql server 备份与恢复系列五 完整模式下的备份与还原

Linux下备份SQL Server的Shell脚本

sql server2008备份出来的数据库如何在在sql server 2005或2000中还原