1我们通常备份数据库时,需要登录数据库服务器去备份和恢复,这样很不方便,其实SQL SERVER自带的命令可能让我们很简单地实现远程通过Asp.Net备份和恢复数据库。
2BACKUP DATABASE '被备份的数据库名' TO DISK = '备份文件路径';
3ALTER DATABASE '被恢复的数据库名' SET OFFLINE WITH ROOLBACK IMMEDIATE;
4RESTORE DATABASE '被恢复的数据库名' FROM DISK = '备份文件路径';
5ALTER 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使用存储过程:
22create 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 --追加/覆盖备份文件
28as
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
44GO
45
46
2BACKUP DATABASE '被备份的数据库名' TO DISK = '备份文件路径';
3ALTER DATABASE '被恢复的数据库名' SET OFFLINE WITH ROOLBACK IMMEDIATE;
4RESTORE DATABASE '被恢复的数据库名' FROM DISK = '备份文件路径';
5ALTER 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使用存储过程:
22create 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 --追加/覆盖备份文件
28as
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
44GO
45
46