sqlserver(MSSQL)数据库备份还原必读,cmd或bat精细化操作

  • A+

加入VIP,可以享受无广告视频播放!更可享受教程提前看!详情猛戳:VIP介绍

新VIP系统上线大酬宾!最高150-200元优惠!详情猛戳:新VIP系统上线

最近啊,我在捣鼓一个之前没接触过的数据库,sqlserver(简称MSSQL,我估计应该全称是Microsoft SQL Server)。这个数据库是微软出品的数据库,一些asp为网站语言的网站,可能会用到该数据库来连接并存储数据。

 

我们知道做网站最重要的就是服务器的数据库了,其次是网站的站点文件。这两者势必每天都需要备份的。

 

咱们这节课来一起讲讲这个数据库的备份和还原。采用cmd或者bat操作的方式,这种方式,方便命令行操作或者由别的软件生成批处理文件来操作,实现自动化。

 

sqlcmd是sqlserver连接数据库的一个程序,使用这个程序在服务器端连接数据库的时候,不需要数据库的账户密码,我估计是采用了windows用户验证方式。前提是这个程序的目录已经加入到环境变量了,才能调用。

我这里使用来测试的sqlserver版本为2008。

 

============数据库备份==================
cmd方式:
1.打开cmd。
2.命令:

sqlcmd -s 数据库名
go
backup database 数据库名 to disk='这里面填入完整备份到的路径,以bak结尾'
go

即可成功全量备份某数据库到文件中。

============数据库的还原==================
在新服务器中先建立好要存放的数据库,若有需要,可改名,网站内容配置需要做对应修改即可。
然后在sqlserver管理器中,右键该数据库,依次选择 任务-还原-数据库 ,在弹出的界面中,选择“源设备”,然后点击后面的按钮,选择备份的bak文件,可以存放在任意位置。然后就会读取到下面的列表中,在列表的第一列有一个方框,勾上。
然后切换到选项部分,勾选覆盖现有数据库(一定要勾上,否则报错,说数据库和现有数据库不一样)。
然后确定即可还原成功数据库。

-----------数据库登录用户的还原----------------
原网站使用新创建的登录用户来访问数据库的,还需要还原用户。不还原的情况下该用户为孤立用户,无法获取数据库访问权限。
方法是先创建一个跟之前一样的数据库新登录名。(必须先做这一步,否则还原孤立用户时会提示用户不存在)比如你之前自己创建的登录用户为xxuser,那么之前的登录名部分就填写xxuser。

(注意:之前我在测这一块的时候,跟着网上一些博客文章的指导来走,之前的登录名写进去之后,怎么都不成功,后来终于测试明白了,原来我一直是漏了use 数据库名和go这两行代码,不修改上下文数据库的指向的话,后面的存储过程会一直提示找不到用户名的。这一点需要特别的注意)

然后打开cmd,输入命令:

sqlcmd -s 数据库名
go
use 数据库名
go
sp_change_users_login 'update_one','之前的登录名','之前的登录名'
go

运行sp_change_users_login存储过程,即可将过去的孤立用户与新数据库建立连接,这样就可以赋予权限了。
该数据库登录名的没有试过,可以尝试。

=====================================================

========使用bat文件来实现批量备份数据库==========
文件均配置为ANSI编码,支持中文。
1.编辑一个bat文件,写入如下信息:

@echo off
echo 数据库备份开始
sqlcmd -i "另一个你要调用的sql文件的路径"
echo 数据库备份完成
pause

(若自动处理的话,这个pause不要加)
2.编辑一个sql文件,它的路径填写到bat文件中。(这种方式为增量备份,所以若原文件存在可以考虑先删除原文件,再运行该sql)
内容为:

backup database 数据库名 to disk = "备份到的文件的全路径,bak结尾"
go

这两行代码可以根据数据库的多少重复添加。
最后调用的时候sql是动态生成放在那里的,bat文件无需程序修改,直接调用即可。
=========使用bat文件来实现登录用户的还原=========

文件均配置为ANSI编码,支持中文。
1.编辑bat文件,写入

@echo off
echo 孤立用户还原开始
sqlcmd -i "还原的sql文件路径"
echo 孤立用户还原完成
pause

(若自动处理的话,这个pause不要加)
2.编辑sql文件,写入

use 数据库名
go
sp_change_users_login 'update_one','之前的登录名','之前的登录名'
go

比如先创建好登录名,再运行还原,否则会提示用户不存在。

 

 

===============

另外,数据库的还原,应该不是挪动服务器一般应用场景较少,可以写bat也可以不写了。我就打算手动还原数据库了。如前面已经提到手动还原的方法了。

 

 

希望我的总结能对大家有所帮助。