急,急!关于数据库备份跟恢复的问题!进者有分!` 请问在Delphi中,如何编程实现SQL数据库的备份跟恢复,是直接写SQL语句吗?请指教,我不知道该怎么下手! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我不知道sql是否可以备份单你可备份数据库表呀 备份BACKUP DATABASE projectdb TO disk='c:\1.dat'恢复RESTORE DATABASE projectdb FROM disk='c:\1.dat'ok? BACKUP DATABASE 和RESTORE DATABASE 都是对整个库备份的,具体用法很简单,看一下帮助就行了。 执行存储过程添加备份设备:exec sp_addumpdevice N'disk', N'aa', N'd:\Microsoft SQL Server\MSSQL\BACKUP\aa.BAK'备份数据库:BACKUP DATABASE [storage ] TO [PowerTemp] WITH NOINIT , NOUNLOAD , NAME = N'storage 备份', NOSKIP , STATS = 10, NOFORMAT 还原数据库:RESTORE DATABASE [storage ] FROM DISK = N'd:\Microsoft SQL Server\MSSQL\BACKUP\PowerTemp.BAK' WITH FILE = 4, NOUNLOAD , STATS = 10, RECOVERY --该存储过程只能放在masterCREATE PROCEDURE gp_BackupRestoreDb1( @bakfilename varchar(200), @flag int=1, --1:备份数据 --2:恢复数据 @dbname varchar(128)) AS IF @DBNAME=DB_NAME() AND @FLAG=2 RETURN -3 --不能恢复数据库 if @flag=1 --备份文件 BACKUP DATABASE @dbname TO disk=@bakfilename else if @flag=2 --恢复文件 RESTORE DATABASE @dbname from disk=@bakfilename with REPLACE Return @@Error 如果是SQL Server的话:1、在master库中建立如下存储过程:CREATE PROCEDURE backupdb @database varchar(10), @directory varchar(100)AS backup database @database to disk=@directoryCREATE PROCEDURE restoredb @directory varchar(100), @database varchar(10)AS restore database @database from disk=@directory2、获得SQL Server路径:AnsiString __fastcall TFrmDM::GetSqlServerPath(){ AnsiString result,tmp; TADOQuery *Query=new TADOQuery(this); Query->Connection=ADOConnection_Master; Query->Close(); Query->SQL->Clear(); Query->SQL->Add("select filename from sysdatabases where name='master'"); Query->Open(); tmp=Query->FieldByName("filename")->AsString; result=tmp.SubString(1,tmp.Length()-15); Query->Free(); return result;} 3、在客户端调用存储过程d=FormatDateTime("yyyy-mm-dd hh-mm-ss",FrmDM->GetServerTime()); try{ path=FrmDM->GetSqlServerPath()+"backup\\"; FrmDM->ADOStoredProc1->Close(); FrmDM->ADOStoredProc1->Connection=FrmDM->ADOConnection_Master; FrmDM->ADOStoredProc1->Prepared=true; FrmDM->ADOStoredProc1->ProcedureName="backupdb;1"; FrmDM->ADOStoredProc1->Parameters->ParamByName("@database")->Value = "db_name_to_backup"; FrmDM->ADOStoredProc1->Parameters->ParamByName("@directory")->Value =path+"db_name_to_backup"+d; FrmDM->ADOStoredProc1->ExecProc(); Application->MessageBox("备份完成","提示",MB_OK+MB_ICONINFORMATION); this->Close(); } catch(...){ Application->MessageBox("备份出错,请重新再来","警告",MB_OK+MB_ICONWARNING); return; }4、恢复的存储过程类似,一般做在程序外部. excel数据导入SQLSERVER问题 结婚散分咯~(之二) delphi 中的sql语句问题 票据打印的几个疑问? 视屏采集的难题(分不够可以再加) 一星期来的问题? 关于LINUX嵌入式系统开发!急急急!在线等待! image不能被保存? delphi下哪个xml解析器比较快? tikkypeng(千两狂死郎)请看!! 请问如何实现选择edit1中的内容,按f1,可以调用自己编写的帮助文件? 关于TDBLookupComboBox的困惑
单你可备份数据库表呀
BACKUP DATABASE projectdb TO disk='c:\1.dat'恢复
RESTORE DATABASE projectdb
FROM disk='c:\1.dat'
ok?
exec sp_addumpdevice N'disk', N'aa', N'd:\Microsoft SQL Server\MSSQL\BACKUP\aa.BAK'备份数据库:
BACKUP DATABASE [storage ] TO [PowerTemp] WITH NOINIT , NOUNLOAD , NAME = N'storage 备份', NOSKIP , STATS = 10, NOFORMAT 还原数据库:
RESTORE DATABASE [storage ] FROM DISK = N'd:\Microsoft SQL Server\MSSQL\BACKUP\PowerTemp.BAK' WITH FILE = 4, NOUNLOAD , STATS = 10, RECOVERY
(
@bakfilename varchar(200),
@flag int=1, --1:备份数据 --2:恢复数据
@dbname varchar(128)
)
AS
IF @DBNAME=DB_NAME() AND @FLAG=2 RETURN -3 --不能恢复数据库
if @flag=1
--备份文件
BACKUP DATABASE @dbname TO disk=@bakfilename
else
if @flag=2
--恢复文件
RESTORE DATABASE @dbname from disk=@bakfilename with REPLACE
Return @@Error
1、在master库中建立如下存储过程:
CREATE PROCEDURE backupdb
@database varchar(10),
@directory varchar(100)
AS
backup database @database
to disk=@directoryCREATE PROCEDURE restoredb
@directory varchar(100),
@database varchar(10)
AS
restore database @database
from disk=@directory
2、获得SQL Server路径:
AnsiString __fastcall TFrmDM::GetSqlServerPath(){
AnsiString result,tmp;
TADOQuery *Query=new TADOQuery(this);
Query->Connection=ADOConnection_Master;
Query->Close();
Query->SQL->Clear();
Query->SQL->Add("select filename from sysdatabases where name='master'");
Query->Open();
tmp=Query->FieldByName("filename")->AsString;
result=tmp.SubString(1,tmp.Length()-15);
Query->Free();
return result;
}
d=FormatDateTime("yyyy-mm-dd hh-mm-ss",FrmDM->GetServerTime());
try{
path=FrmDM->GetSqlServerPath()+"backup\\";
FrmDM->ADOStoredProc1->Close();
FrmDM->ADOStoredProc1->Connection=FrmDM->ADOConnection_Master;
FrmDM->ADOStoredProc1->Prepared=true;
FrmDM->ADOStoredProc1->ProcedureName="backupdb;1";
FrmDM->ADOStoredProc1->Parameters->ParamByName("@database")->Value = "db_name_to_backup";
FrmDM->ADOStoredProc1->Parameters->ParamByName("@directory")->Value =path+"db_name_to_backup"+d;
FrmDM->ADOStoredProc1->ExecProc();
Application->MessageBox("备份完成","提示",MB_OK+MB_ICONINFORMATION);
this->Close();
}
catch(...){
Application->MessageBox("备份出错,请重新再来","警告",MB_OK+MB_ICONWARNING);
return;
}
4、恢复的存储过程类似,一般做在程序外部.