在做数据库的备份和恢复的时候,碰到了一个非常奇怪的问题,用restore database恢复数据库,在sqlserver里面数据怎么没有恢复啊!
代码如下: Data.ADOC.Connected := False;//断开旧的连接;
ADOQNewReSume.Connected := True;//新的连接
ADOQReSume.Close; //ADOQReSume连接的是ADOQNewReSume
ADOQReSume.SQL.Clear;
ADOQReSume.SQL.Text := 'use master restore database jxc From disk=''C:\备份文件-0606140048.bak''';
ADOQReSume.ExecSQL;可为什么恢复后,查看sqlserver里面的数据却根本就没有恢复,而我如果把use master restore database jxc From disk='C:\备份文件-0606140048.bak'到查询分析里面执行者一切正常,到底是什么问题啊!搞了一个晚上了,实在是奇怪!大家帮帮忙!想想问题到底是出在那,在次谢谢了!
代码如下: Data.ADOC.Connected := False;//断开旧的连接;
ADOQNewReSume.Connected := True;//新的连接
ADOQReSume.Close; //ADOQReSume连接的是ADOQNewReSume
ADOQReSume.SQL.Clear;
ADOQReSume.SQL.Text := 'use master restore database jxc From disk=''C:\备份文件-0606140048.bak''';
ADOQReSume.ExecSQL;可为什么恢复后,查看sqlserver里面的数据却根本就没有恢复,而我如果把use master restore database jxc From disk='C:\备份文件-0606140048.bak'到查询分析里面执行者一切正常,到底是什么问题啊!搞了一个晚上了,实在是奇怪!大家帮帮忙!想想问题到底是出在那,在次谢谢了!
解决方案 »
- 查询效率问题
- 大虾们,帮我推荐些多维图表展示的Delphi组件
- 在delphi中可以用堆栈吗?
- 哪位熟悉C++ BUILDER的能提供一下QQ啊?我想提问啊,问题较长
- 请问下面的这种处理数据的方式一般该怎么处理
- Edit2.Text中显示ADOQuery1的内容
- 怎样把delhi的开发环境变的和visual stduio一样的风格啊
- 求做小区物业管理系统
- 一个模糊查询的问题?
- 请教在delphi中,如何让form最小化时,缩成一个图标在屏幕右下角的状态栏上。(实现c++builder中TrayIcon1的功能)
- 关于提取图标的问题???ExtractIcon问题???????????????????
- 寻求能将通过可视化生成的单元(包括界面)转换成封装好的类的工具
// ADOQNewReSume.Connected := True;//新的连接
adOQRESUME.OPEN:
ADOQReSume.Close; //ADOQReSume连接的是ADOQNewReSume
ADOQReSume.SQL.Clear;
//ADOQReSume.SQL.Text := 'use master restore database jxc From disk=''C:\备份文件-0606140048.bak''';
ADOQRESUME.SQL.ADD('use master restore database jxc From disk=''C:\备份文件-0606140048.bak''');
//在这里加一句输出SQL
SHowMessage(ADOQRESUME.SQL.TEXT);
ADOQReSume.ExecSQL;
首先连接的是Master数据库
把当前要恢复的数据库的所有连接都断掉
然后运行恢复数据库语句
断掉所有连接的SQl语句为
private string GetDisConnectSql(string DataBaseName)
{
string Sql="";
Sql+=" declare @sql nvarchar(500) ";
Sql+=" declare @spid int ";
Sql+=" set @sql='declare getspid cursor for ";
Sql+=" select spid from sysprocesses where dbid=db_id(''"+DataBaseName+"'')' ";
Sql+=" exec (@sql) ";
Sql+=" open getspid ";
Sql+=" fetch next from getspid into @spid ";
Sql+=" while @@fetch_status < >-1 ";
Sql+=" begin ";
Sql+=" exec('kill '+@spid) ";
Sql+=" fetch next from getspid into @spid ";
Sql+=" end ";
Sql+=" close getspid ";
Sql+=" deallocate getspid ; ";
return Sql;
}