SQL Server 数据库备份的两种方式

时间:2024-03-05 07:30:07

为了保证数据不丢失,我们需要对数据库定时器备份。使用数据库的不同,可能方式有所不同,本文以 Windows Server 2016,SQL Server Express 2017 为例。

我们可以有两种备份方式:

一 、自动备份计划

如果使用的数据库支持自动备份计划,那么可以在使用 SQL Server Managment Studio 连接数据库,然后选中要备份的数据库,右键选择任务,设置备份即可。由于我这使用的数据库版本(Express)无法设置备份计划,所以我们需要使用任务计划及自己编写备份脚本实现自动备份。

首先编写备份脚本,脚本很简单,具体的语法详见 https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility?view=sql-server-ver15

https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/managed-backup-sp-backup-on-demand-transact-sql?view=sql-server-ver15

sqlcmd -S SERVER\SQLEXPRESS -E -Q "[sp_BackupDatabase] N\'要备份的数据库\',N\'F\',N\'F:\数据库备份\\'"

批处理脚本写好后,可以保存为 backup.dat。

接下来我们需要设置任务计划,让任务计划定时执行我们写好的脚本。

1. 搜索 任务计划 打开后如下图所示:

2. 新建任务计划,创建任务,如下图,可以填写名称及任务描述,选择执行的用户

 

3. 设置触发器,也就是定时执行设置,点击触发器,显示如下图

4. 设置操作,也就是根据上面的触发器定时执行我们写好的数据库备份脚本,如下图所示,浏览选择我们的备份脚本,确定即可

5. 设置成功后会在任务计划中显示,至此,已经设置好数据库备份计划

二 、第二种备份的方式严格来说不算是备份,只是把数据通过脚本的形式导出来。有时候会用到这种方式,例如硬盘扇区损坏,数据库任然能够正常读写,可是不能备份,手工备份也不能成功。尝试在停止数据库服务后,复制数据库文件,复制也提示复制失败。这时,我们可以把数据库架构和数据导出到一个 sql 脚本文件中,然后再通过运行脚本生成数据库,这样数据库就可以转移到其它文件夹中,而且数据库也能够恢复正常备份。

1. 首先使用 SQL Server Managment Studio 连接数据库,如下图,我要导出下面这个数据,可以右键选择任务,生成脚本

2. 根据向导,一步一步设置如下。向导的第三步需要注意,需要在高级中设置一下要编写的脚本的数据的类型,一定要选择:架构和数据,如果只选择架构,则运行脚本的时候只会生成架构,不包含数据库现存的数据;直到最后全部生成完毕,我们就可以根据生成的脚本恢复数据库

 

3. 根据脚本恢复数据库,在生成的脚本中我们可以指定生成的数据库文件的位置及名称,打开脚本,如下图,要保证其中的文件目录存在,使用 SQL Server Managment Studio 打开文件,然后执行即可。由于生成的脚本带有数据,所以生成的文件会特别的大,运行会比较慢。