返回列表 发帖

MSSQL2008R2的备份与还原

笺注:这是在 Windows2008R2安装MSSQL2008R2 的基础上进行的。


新建查询:
图片1.png
2022-5-4 12:03



新建库data1
create database data1;
图片2.png
2022-5-4 12:03



在库data1中创建表t_1:
Use data1;
create table t_1 (id int primary key not null identity (1,1),name nvarchar(20),age smallint)
图片3.png
2022-5-4 12:03

注释:
字段id为主键、标识符列,会自动增长;


库data1中的表t_1的表结构:
图片4.png
2022-5-4 12:04

注释:具体表名为 data1.dbo.t_1



######
往库data1中的表t_1里一次性插入多条记录:(字段id为主键、标识符列,会自动增长,不用写)
Use data1;
INSERT INTO t_1 (name,age) VALUES ('zhuohua',25);
INSERT INTO t_1 (name,age) VALUES ('Python',35);
INSERT INTO t_1 (name,age) VALUES ('李小芳',45);
INSERT INTO t_1 (name,age) VALUES ('张三',-55);
图片5.png
2022-5-4 12:05




######
查询表data1.dbo.t_1中的所有记录:
Use data1;
Select * from t_1;
图片6.png
2022-5-4 12:05

注释:可以看到标识符列id会自动增长。











######
######

创建自定义的数据库用户:
图片7.png
2022-5-4 12:05



转到常规
输入登录名(用户名)、用户密码,选择默认数据库(data1):
图片8.png
2022-5-4 12:06

注释:可以不勾选“强制实施密码策略”


数据库用户zhuohua新建成功:
图片9.png
2022-5-4 12:06




编辑数据库用户zhuohua的属性:
图片10.png
2022-5-4 12:07



转到用户映射
选择数据库(data1)、用户(zhuohua)、默认架构(dbo):
图片11.png
2022-5-4 12:07




在库data1上进行授权:
图片12.png
2022-5-4 12:07



转到权限
图片13.png
2022-5-4 12:08



新数据库用户默认只有连接的权限:
图片14.png
2022-5-4 12:08



可以根据情况,给予数据库用户更多的权限:
图片15.png
2022-5-4 12:08

笺注:实验中给予了全部权限。













######
在服务器本地使用数据库用户zhuohua备份库data1:(是完整备份;文件夹d:\backup_dir要先创建好)
C:\Users\Administrator>sqlcmd -S localhost -U zhuohua -P 123 -Q "backup database data1 to disk='d:\backup_dir\data1_2019-9-2.bak';"
已为数据库 'data1',文件 'data1' (位于文件 1 上)处理了 184 页。
已为数据库 'data1',文件 'data1_log' (位于文件 1 上)处理了 2 页。
BACKUP DATABASE 成功处理了 186 页,花费 0.121 秒(11.997 MB/秒)。


C:\Users\Administrator>


备份出来的文件:
图片16.png
2022-5-4 12:09




######
在CMD命令行程序中清空表data1.dbo.t_1中的所有记录:(字段“id”会从1重新开始)
C:\Users\Administrator>sqlcmd -S localhost -U zhuohua -P 123 -Q "Use data1;truncate table t_1;"
已将数据库上下文更改为 'data1'。

C:\Users\Administrator>



######
在CMD命令行程序中查询表data1.dbo.t_1中的所有记录:
C:\Users\Administrator>sqlcmd -S localhost -U zhuohua -P 123 -Q "Use data1;select * from t_1;"
已将数据库上下文更改为 'data1'。
id          name                 age
----------- -------------------- ------

(0 行受影响)


C:\Users\Administrator>





######
在CMD命令行程序中使用数据库管理员sa还原库data1:

先让库data1离线,以便获得对库data1的独占访问权:
C:\Users\Administrator>sqlcmd -S localhost -U sa -P Jacky888 -Q "ALTER DATABASE data1 SET OFFLINE WITH ROLLBACK IMMEDIATE;"

C:\Users\Administrator>


还原库data1:(不需要先创建库data1;假如库data1存在时,就是完整的覆盖还原)
C:\Users\Administrator>sqlcmd -S localhost -U sa -P Jacky888 -Q "RESTORE DATABASE data1 FROM DISK='d:\backup_dir\data1_2019-9-2.bak' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10;"
已处理百分之 12。
已处理百分之 21。
已处理百分之 30。
已处理百分之 43。
已处理百分之 51。
已处理百分之 60。
已处理百分之 73。
已处理百分之 81。
已处理百分之 90。
已处理百分之 100。
已为数据库 'data1',文件 'data1' (位于文件 1 上)处理了 184 页。
已为数据库 'data1',文件 'data1_log' (位于文件 1 上)处理了 2 页。
RESTORE DATABASE 成功处理了 186 页,花费 0.038 秒(38.201 MB/秒)。


C:\Users\Administrator>



######
再次在CMD命令行程序中查询表data1.dbo.t_1中的所有记录:
C:\Users\Administrator>sqlcmd -S localhost -U zhuohua -P 123 -Q "Use data1;select * from t_1;"
已将数据库上下文更改为 'data1'。
id          name                 age
----------- -------------------- ------
          1 zhuohua                  25
          2 Python                   35
          3 李小芳                      45
          4 张三                      -55

(4 行受影响)


C:\Users\Administrator>

注释:库data1还原成功,会覆盖所有的表。













######

在服务器上使用Bat脚本备份库data1:

脚本Backup_data1.bat的内容:
@echo off

set bak_name=data1_%date:~0,4%%date:~5,2%%date:~8,2%

sqlcmd -S localhost -U zhuohua -P 123 -Q "backup database data1 to disk='d:\backup_dir\%bak_name%.bak';"

图片17.png
2022-5-4 12:12

笺注:
双击脚本Backup_data1.bat即可进行备份;
是完整备份;
服务器的文件夹d:\backup_dir要先创建好;


备份出来的文件:
图片18.png
2022-5-4 12:13

笺注:数据库备份文件只留在服务器上。





相关文章:
Windows2008R2_UPUPW_网站的备份和还原

使用Navicat远程管理MSSQL2014
MSSQL2014的备份与还原

CentOS8使用Python3脚本管理MSSQL2008R2

返回列表