1
我们通常备份数据库时,需要登录数据库服务器去备份和恢复,这样很不方便,其实SQL SERVER自带的命令可能让我们很简单地实现远程通过Asp.Net备份和恢复数据库。
2
BACKUP DATABASE '被备份的数据库名' TO DISK = '备份文件路径';
3
ALTER DATABASE '被恢复的数据库名' SET OFFLINE WITH ROOLBACK IMMEDIATE;
4
RESTORE DATABASE '被恢复的数据库名' FROM DISK = '备份文件路径';
5
ALTER DATABASE '被恢复的数据库名' SET ONLINE WITH ROOLBACK IMMEDIATE;
6
7
简单几条命令就可以完成数据库的备份和恢复,在Asp.Net中,可以像调用Sql语句一样调用这四条语句,轻轻松松实现SQL SERVER数据库的备份和恢复。
8
9
例子(以Northwind为例):
10
1、备份Northwind数据库到C盘根目录下,以'Northwind.bak'为名:
11
BACKUP DATABASE 'Northwind' TO DISK = 'C:\Northwind.bak';
12
13
2、恢复Northwind数据库,C盘根目录下的'Northwind.bak'备份文件:
14
a、将数据库置于离线状态
15
ALTER DATABASE 'Northwind' SET OFFLINE WITH ROOLBACK IMMEDIATE;
16
b、恢复Northwind数据库
17
RESTORE DATABASE 'Northwind' FROM DISK = 'C:\Northwind.bak';
18
c、将数据库置于在线状态
19
ALTER DATABASE 'Northwind' SET ONLINE WITH ROOLBACK IMMEDIATE;
20
21
使用存储过程:
22
create proc BackupDB
23
@dbname sysname='', --要备份的数据库名称,不指定则备份当前数据库
24
@bkpath nvarchar(260)='', --备份文件的存放目录,不指定则使用SQL默认的备份目录
25
@bkfname nvarchar(260)='', --备份文件名,文件名中可以用\DBNAME\代表数据库名,\DATE\代表日期,\TIME\代表时间
26
@bktype nvarchar(10)='DB', --备份类型:'DB'备份数据库,'DF' 差异备份,'LOG' 日志备份
27
@appendfile bit=1 --追加/覆盖备份文件
28
as
29
declare @sql varchar(8000)
30
if isnull(@dbname,'')='' set @dbname=db_name()
31
if isnull(@bkpath,'')='' set @bkpath=dbo.f_getdbpath(null)
32
if isnull(@bkfname,'')='' set @bkfname='\DBNAME\_\DATE\_\TIME\.BAK'
33
set @bkfname=replace(replace(replace(@bkfname,'\DBNAME\',@dbname)
34
,'\DATE\',convert(varchar,getdate(),112))
35
,'\TIME\',replace(convert(varchar,getdate(),108),':',''))
36
set @sql='backup '+case @bktype when 'LOG' then 'log ' else 'database ' end +@dbname
37
+' to disk='''+@bkpath+@bkfname
38
+''' with '+case @bktype when 'DF' then 'DIFFERENTIAL,' else '' end
39
+case @appendfile when 1 then 'NOINIT' else 'INIT' end
40
print @sql
41
exec(@sql)
42
43
44
GO
45
46

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
