用asp.net开发的一个系统,如何给用户提供数据库备份和恢复的功能?
来源:互联网 发布:天使之翼 网络大电影 编辑:程序博客网 时间:2024/06/06 04:35
http://topic.csdn.net/t/20030526/20/1837137.html
很棘手的问题,不知道该如何实现?
其实我想直接让用户学习sql server(后台用的是sql server数据库)的备份就可以了。不过就怕他们不愿意,所以想用自己做的程序去实现。
#1楼 得分:20回复于:2003-05-26 20:45:11
sql= "BACKUP DATABASE Northwind TO DISK = 'c:\Northwind.bak ' with init "
#2楼 得分:50回复于:2003-05-26 20:47:45
using SQLDMO;
protected Backup2Class backup=new Backup2Class();
private void startBackup_Click(object sender, System.EventArgs e)
{
string servername;
string login;
string password;
string databasename;
string serverpathname;
if(Session[ "personnelID "]==null)
{
Label1.Text= "请您重新登陆本系统! ";
return;
}
if(checkText().Length!=0)
{
Label1.Text=checkText()+ " 不能为空! ";
return;
}
servername=serverName.Text.Trim();
login=loginName.Text.Trim();
password=passWord.Text.Trim()+ " ";
databasename=databaseName.Text.Trim();
serverpathname=serverpathName.Text.Trim();
sqldmoSQLServer.LoginSecure=false;
try
{
sqldmoSQLServer.Connect(servername,login,password);
databases=sqldmoSQLServer.Databases;
database2=(Database2)databases.Item(databasename,null);
backup.PercentCompleteNotification=1;
backup.Database=database2.Name;
backup.Files=@serverpathname;
backup.SQLBackup(sqldmoSQLServer);
Label1.Text= "完成备份! ";
}
catch(Exception ex)
{
Label1.Text=ex.Message.ToString();
}
catch
{
Label1.Text= "备份失败! ";
}
finally
{
SqldmoClear();
}
}
private void SqldmoClear()
{
sqldmoSQLServer.DisConnect();
sqldmoSQLServer.Close();
backup=null;
sqldmoSQLServer=null;
}
private string checkText()
{
string strState= " ";
if(serverName.Text.Trim().Length==0)
{
strState= "Server Name ";
return strState;
}
if(loginName.Text.Trim().Length==0)
{
strState= "Administrators ";
return strState;
}
if(databaseName.Text.Trim().Length==0)
{
strState= "Database Name ";
return strState;
}
if(serverpathName.Text.Trim().Length==0)
{
strState= "[Server Path] Backup To ";
return strState;
}
return strState;
}
protected Backup2Class backup=new Backup2Class();
private void startBackup_Click(object sender, System.EventArgs e)
{
string servername;
string login;
string password;
string databasename;
string serverpathname;
if(Session[ "personnelID "]==null)
{
Label1.Text= "请您重新登陆本系统! ";
return;
}
if(checkText().Length!=0)
{
Label1.Text=checkText()+ " 不能为空! ";
return;
}
servername=serverName.Text.Trim();
login=loginName.Text.Trim();
password=passWord.Text.Trim()+ " ";
databasename=databaseName.Text.Trim();
serverpathname=serverpathName.Text.Trim();
sqldmoSQLServer.LoginSecure=false;
try
{
sqldmoSQLServer.Connect(servername,login,password);
databases=sqldmoSQLServer.Databases;
database2=(Database2)databases.Item(databasename,null);
backup.PercentCompleteNotification=1;
backup.Database=database2.Name;
backup.Files=@serverpathname;
backup.SQLBackup(sqldmoSQLServer);
Label1.Text= "完成备份! ";
}
catch(Exception ex)
{
Label1.Text=ex.Message.ToString();
}
catch
{
Label1.Text= "备份失败! ";
}
finally
{
SqldmoClear();
}
}
private void SqldmoClear()
{
sqldmoSQLServer.DisConnect();
sqldmoSQLServer.Close();
backup=null;
sqldmoSQLServer=null;
}
private string checkText()
{
string strState= " ";
if(serverName.Text.Trim().Length==0)
{
strState= "Server Name ";
return strState;
}
if(loginName.Text.Trim().Length==0)
{
strState= "Administrators ";
return strState;
}
if(databaseName.Text.Trim().Length==0)
{
strState= "Database Name ";
return strState;
}
if(serverpathName.Text.Trim().Length==0)
{
strState= "[Server Path] Backup To ";
return strState;
}
return strState;
}
#8楼 得分:30回复于:2003-05-27 09:03:29
给你一个备份的存储过程你调用就可以了:
create PROCEDURE GY_DBBak
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复
@retmsg varchar(20) output --返回信息
AS
DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)
DECLARE @RC INT
SELECT @db_path = @bakpath + '.dat '
SELECT @log_path = @bakpath + 'log.dat '
SELECT @RC=0
select @DevName_data= 'dali ',@DevName_log= 'dalilog '
DBCC CHECKDB(数据库名)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN
EXEC sp_addumpdevice 'disk ', @DevName_data,@db_path
exec sp_addumpdevice 'disk ', @DevName_log,@log_path
select @rc=@@error
IF @RC <> 0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END
IF @kind= 'backup '
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg= '数据库备份成功! '
END
IF @kind= 'restore '
BEGIN
RESTORE DATABASE 数据库名 FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg= '恢复数据库成功! '
END
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
RETURN 0
---测试:
declare @ varchar(100)
exec gy_dbbak 0, 'aa ',0,0,0, 'backup ',@ output
select @
-------------------------------------------------
备份设备:
sp_helpdevice
或
use master
select * from sysdevices
create PROCEDURE GY_DBBak
@bakequip int, -- 备份设备:磁盘&磁带
@bakpath varchar(50), -- 带全路径的备份文件名
@baktype int, -- 完全备份&增量备份
@baklog int, -- ‘0’备份日志
@bakdb int, -- ‘0’备份数据库
@kind varchar(7), --备份还是恢复
@retmsg varchar(20) output --返回信息
AS
DECLARE @DevName_data varchar(50)
DECLARE @DevName_log varchar(50)
declare @db_path varchar(100)
declare @log_path varchar(100)
DECLARE @RC INT
SELECT @db_path = @bakpath + '.dat '
SELECT @log_path = @bakpath + 'log.dat '
SELECT @RC=0
select @DevName_data= 'dali ',@DevName_log= 'dalilog '
DBCC CHECKDB(数据库名)
/***********************************************************
** CREATE BACKUP AND RESTORE DEVICES
************************************************************/
IF @RC=0
BEGIN
EXEC sp_addumpdevice 'disk ', @DevName_data,@db_path
exec sp_addumpdevice 'disk ', @DevName_log,@log_path
select @rc=@@error
IF @RC <> 0
begin
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
SELECT @RC=-1000
return @rc
end
END
IF @kind= 'backup '
BEGIN
IF @bakequip=0
BEGIN
IF @baktype=0
BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE 数据库名 TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG 数据库名 WITH NO_LOG
BACKUP LOG 数据库名 TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg= '数据库备份成功! '
END
IF @kind= 'restore '
BEGIN
RESTORE DATABASE 数据库名 FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg= '恢复数据库成功! '
END
EXEC SP_DropDevice @Devname_data
exec sp_dropdevice @devname_log
RETURN 0
---测试:
declare @ varchar(100)
exec gy_dbbak 0, 'aa ',0,0,0, 'backup ',@ output
select @
-------------------------------------------------
备份设备:
sp_helpdevice
或
use master
select * from sysdevices
- 用asp.net开发的一个系统,如何给用户提供数据库备份和恢复的功能?
- MongoDB的数据库如何备份和恢复?
- MongoDB的数据库如何备份和恢复?
- MongoDB的数据库如何备份和恢复?
- ASP.NET中备份和恢复数据库
- asp.net 备份和恢复数据库
- asp.net下实现数据库的备份与恢复
- asp.net实现Ms sql数据库的备份与恢复
- asp.net下实现数据库的备份与恢复
- asp.net下实现数据库的备份与恢复
- ASP.NET下对远程SQL SERVER数据库的备份和恢复的存储过程
- ASP.NET下对远程SQL SERVER数据库的备份和恢复
- ASP.NET快速开发框架,简单美观的UI,丰富的功能,给开发一个加速度
- 在ASP.NET页面中实现数据库备份和恢复功能
- 在ASP.NET页面中实现数据库备份和恢复功能
- 在ASP.NET页面中实现数据库备份和恢复功能
- 在ASP.NET页面中实现数据库备份和恢复功能
- 给您的文字编辑程序添加一剂“后悔药”-使用RichTextBox控件提供用户编辑功能,加入类似word的“撤销”和“恢复”功能
- IT系统Monitor的那些工具。。。
- FLEX DataGrid 点击表头后按不同方式排序
- 领带打法最新10种(图解)
- 视觉中国的NoSQL之路:从MySQL到MongoDB
- 应用内拨打电话结束后返回应用
- 用asp.net开发的一个系统,如何给用户提供数据库备份和恢复的功能?
- 成长中的小菜——完善《机房收费系统》
- ArcSDE9.3.1怎么使用命令Kill直连
- .NET创建Web窗体基类
- Ffmpeg seek
- How to add a new keycode in android
- UIPopoverController的使用
- AIX系统日志学习笔记之二
- javascript(js)的小数点乘法除法问题