我备份时正常.还原时提示成功,但是数据却没有变.但手工在<SQL Server企业管理器>中还原时就正常.这是为什么?
备份:
ADOQBak.SQL.Add('use master');
ADOQBak.SQL.Add('Backup DataBase sms to Disk='+ ''''+OutputFile+'''');还原:1
ADOQBak.SQL.Add('use master');
ADOQBak.SQL.Add('Restore DataBase sms from Disk='+ ''''+InputFile+'''');
还原:2
ADOQBak.SQL.Add('use master');
ADOQBak.SQL.Add('Restore DataBase sms from Tape='+ ''''+InputFile+'''');
备份:
ADOQBak.SQL.Add('use master');
ADOQBak.SQL.Add('Backup DataBase sms to Disk='+ ''''+OutputFile+'''');还原:1
ADOQBak.SQL.Add('use master');
ADOQBak.SQL.Add('Restore DataBase sms from Disk='+ ''''+InputFile+'''');
还原:2
ADOQBak.SQL.Add('use master');
ADOQBak.SQL.Add('Restore DataBase sms from Tape='+ ''''+InputFile+'''');
解决方案 »
- 有那位高手有使用WinHttp.WinHttpRequest.5.1 post数据的delphi例子,高分重酬
- 软件是一门科学,更是一门艺术
- 使用mydac组件时问题,自带的dll封装MyConnection1的,MyTable1只能保存一次,保存第二次就出现FUpdateQuery is TCustomMyDataSet错误
- 如何给一事件绑定函数
- 如何用键盘选择DBGrid的某行数据
- TADOTable+TDBGridEH+TDataSource中编辑一有关键字的表时,怎样做到避免在输入相同的关键字时的出错?也就是在Post前能检查出?
- ** 不同单元间的动态数组赋值 **
- pro*c和delphi
- 我把csdn的贴子另存为.xml文件, 为什么在本机打不开。
- 我的人生,我的工作,我的无奈。我应该到哪里去?
- 明天要去一家公司笔试,请各位大侠出出主意。
- 利用api如何修改显示器分辨率?
ADOQBak.SQL.Add('Restore DataBase sms from Tape='+ ''''+InputFile+''''+'with replace');
也不行
@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 DBCC CHECKDB(Northwind)
/***********************************************************
** 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 Northwind TO DISK=@Devname_data
WITH INIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH INIT,NO_TRUNCATE
END
END
ELSE BEGIN
IF @bakdb=0
BEGIN
BACKUP DATABASE Northwind TO DISK=@DevName_data
WITH NOINIT
END
IF @baklog=0
BEGIN
BACKUP LOG Northwind WITH NO_LOG
BACKUP LOG Northwind TO DISK=@DevName_log
WITH NOINIT,NO_TRUNCATE
END
END
END
SELECT @retmsg='数据库备份成功!'
END
IF @kind='restore'
BEGIN
RESTORE DATABASE Northwind FROM DISK= @DevName_data WITH REPLACE
SELECT @retmsg='恢复数据库成功!'
END
RETURN 0
ADOQBak.execsql;
ADOQBak.SQL.text :='Restore DataBase sms from Tape='+ ''''+InputFile+''''+'with replace';
adoqbak.execsql;
够简单了吧
我试了.结果还是一样.提示还原成功!,但数据库还是不变.
ADOQBak.execsql;
ADOQBak.SQL.text :='Restore DataBase sms from disk='+ ''''+InputFile+''''+'with replace';
adoqbak.execsql;InputFile为'c:\sms.bak'
我写了一个存储过程.结果总是提示'数据库正在使用'
CREATE Procedure dbo.SP_ResSaveSMS
@InputPath varchar(200)
as
Restore DataBase Savesms from Disk=@InputPath with replace
GO 程序代码:
ADOConnSave.Connected:=false; //源来是连接 sms数据库 的
ADOSPRstore.Connection:=ADOConnSource; //连接的是Savesms数据库
ADOSPRstore.ProcedureName:='SP_ResSaveSMS';
ADOSPRstore.Parameters.CreateParameter('@InputPath',ftString,pdInput,200,InputFile);
ADOSPRstore.Prepared:=true;
ADOSPRstore.ExecProc;