Sun_china

交流更多,收获更多?

博客园 首页 新随笔 联系 订阅 管理

 

 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
posted on 2007-05-09 13:39  Sun_china  阅读(491)  评论(0编辑  收藏  举报