社区
数据库及相关技术
帖子详情
数据库还原中的问题。
xlz0306
2003-08-20 01:45:01
在数据库还原中,遇到这样的问题:说要还原的数据库正在访问,不能获得该数据库操作的排他操作。
可是我运行程序的时候就是连数据库的,关掉了还怎么还原啊?
请教:
...全文
37
20
打赏
收藏
数据库还原中的问题。
在数据库还原中,遇到这样的问题:说要还原的数据库正在访问,不能获得该数据库操作的排他操作。 可是我运行程序的时候就是连数据库的,关掉了还怎么还原啊? 请教:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xlz0306
2003-08-25
打赏
举报
回复
300 分哪! 天文数字哎!
我先的把我给卖了才有分给你 :)
ljianq
2003-08-22
打赏
举报
回复
请看以下是我的实际应用:
//DBSavePath是备份文件的完整路径名(包括文件名);
//ExportTempData是数据库名
//sPath是数据恢复后的安装路径
//adoQuery为TADOQuery,其数据连接对象可以指向任意数据库
//如果你不知道其中的文件名,请在查询分析器中使用RESTORE FILELISTONLY查看
try {
AnsiString sCmd;
sCmd="Use Master\r\nRESTORE DATABASE ExportTempData FROM DISK = '";
sCmd+=DBSavePath+"' WITH MOVE 'EmigrantReg_Data' TO '";
sCmd+=sPath+"ExportTempData_dat.mdf',MOVE 'EmigrantReg_Log' TO '";
sCmd+=sPath+"ExportTempData_log.ldf'";
adoQuery->SQL->Text=sCmd;
adoQuery->ExecSQL();
}
catch(...) {
//失败。
}
xlz0306
2003-08-22
打赏
举报
回复
分啊…… 大家都是出来混的,信用当然是很重要的了,你的方法确实可行,我自然会给你全分的。
bluecyclone
2003-08-22
打赏
举报
回复
300分!我把问题给你解决了!首付200分,不讨价还价!~解决后,付另外的100分!
bluecyclone
2003-08-21
打赏
举报
回复
我的问题已经摆平了,你把分给我全给我,我传消息给你一段代码!保证解决你的问题!
或者我发Email给你也行!你的先把分给我!
bluecyclone
2003-08-21
打赏
举报
回复
http://expert.csdn.net/Expert/topic/2170/2170806.xml?temp=5.631655E-02
我有办法解决!~你把我的问题摆平了,我就帮你!~
xlz0306
2003-08-21
打赏
举报
回复
不是吧?
我的restore 是在程序中用的数据备份功能,关掉程序??????????
杀了我吧……
bluecyclone
2003-08-21
打赏
举报
回复
你先把分给我,我说了有完美解决方案!拖到明天,200分,我都不给!~
hong668
2003-08-21
打赏
举报
回复
关闭后:use master
然后:restore,,,,,,,,,,,,,,
zhpsam109
2003-08-21
打赏
举报
回复
应该是你的程序正在使用数据库,你应该关闭你的应用程序与数据库的所有连接!然后连接master数据库,在执行restore命令!
如果不行,你可以关闭你的应用程序,在查询分析器中执行你的restore命令!(用sa登陆,选择master数据库)!
xlz0306
2003-08-21
打赏
举报
回复
:)
是sql server 2000 数据库,c++ builder 5.0
使用restore database 命令还原,执行语句是,报错如下:
General SQL error.因为数据库正在使用,所以未能获得数据库的排他访问权。Rostore
Database 操作异常终止。
就这样。请教:)
xlz0306
2003-08-21
打赏
举报
回复
不过我要的是解决数据库占用的问题,能不能把你的 restoredatabase 函数给我看看啊 ?
发消息或者 邮件 : xlzhu0306@sohu.com 都可以
先谢了:)
xlz0306
2003-08-21
打赏
举报
回复
to : starstargao(高顾)
谢谢,我去看看行不行。
starstargao
2003-08-21
打赏
举报
回复
还原
void __fastcall TFmWriteToDatabaseFromFile::FormActivate(TObject *Sender)
{
if(DirectoryExists(RestorePath)){
Screen->Cursor = crHourGlass;
try{
RestoreDatabase(RestorePath);
Application->MessageBoxA("数据库还原已顺利完成!","消息",MB_OK|MB_ICONINFORMATION);
}catch(Exception &e){
String caption;
caption = "执行还原操作时发生了一些异常错误,一些资料没有恢复到数据库中,请及时联系数据库管理员\n错误代码为:\n"+e.Message;
Application->MessageBoxA(caption.c_str(),"错误",MB_OK|MB_ICONSTOP);
}
Screen->Cursor = crDefault;
}else if(RestorePath=="Restore Database has been canceled"){
;
}
else{
Application->MessageBoxA("没有当天的备份文件!","提示",MB_OK|MB_ICONINFORMATION);
}
Close();
}
此程序经过多人测试, 应该没有什么问题
starstargao
2003-08-21
打赏
举报
回复
我是这样解决的
starstargao
2003-08-21
打赏
举报
回复
void RestoreDatabase(String FilePath)
{
if(FileExists(FilePath+"\\sys_fee_total.bak"))
WriteToTable("sys_fee_total",FilePath+"\\sys_fee_total.bak",10);
if(FileExists(FilePath+"\\tran_ls.bak"))
WriteToTable("tran_ls",FilePath+"\\tran_ls.bak",14);
if(FileExists(FilePath+"\\user_fee.bak"))
WriteToTable("user_fee",FilePath+"\\user_fee.bak",14);
if(FileExists(FilePath+"\\user_info.bak"))
WriteToTable("user_info",FilePath+"\\user_info.bak",27);
if(FileExists(FilePath+"\\user_tran.bak"))
WriteToTable("user_tran",FilePath+"\\user_tran.bak",9);
if(FileExists(FilePath+"\\work_manager.bak"))
WriteToTable("work_manager",FilePath+"\\work_manager.bak",14);
}
//---------------------------------------------------------------------------
void WriteToTable(String TableName,String DataFilePath,int FieldCount)
{
TADOQuery *RestoreQuery = new TADOQuery(Application);
RestoreQuery->Connection = catvmain->ADOConnection1;
FILE *stream;
char ALineData[10000],*p;
int len =10000,myCount;
String sql;
stream = fopen(DataFilePath.c_str(), "r");
if(stream){
RestoreQuery->Close();
RestoreQuery->SQL->Clear();
RestoreQuery->SQL->Text = "delete from " + TableName;
RestoreQuery->ExecSQL();
while(fgets(ALineData, len, stream)){
myCount = FieldCount;
sql = "insert into "+TableName +" values(";
p = strtok(ALineData,"#*#$#*#");
if(p){
sql += "'"+AnsiString(p)+"'";
myCount -= 1;
}
while(p){
p = strtok(NULL,"#*#$#*#");
if(p && myCount>0){
if(AnsiString(p).Trim()=="")
sql += ",null";
else
sql += ",'"+AnsiString(p)+"'";
myCount -= 1;
}
}
sql += ")";
RestoreQuery->Close();
RestoreQuery->SQL->Clear();
RestoreQuery->SQL->Text = sql;
try{
RestoreQuery->ExecSQL();
}catch(...){
continue;
}
}
}
fclose(stream);
}
Santos
2003-08-20
打赏
举报
回复
把问题描述清楚,才好帮你把脉。:)
lvjack
2003-08-20
打赏
举报
回复
另外什么数据库?什么方法还原?
lvjack
2003-08-20
打赏
举报
回复
不清楚,安慰一下
xlz0306
2003-08-20
打赏
举报
回复
不是吧,就算来个人安慰一下也好
居然后来的帖子跟那么长了,我的还是 0
hoho ^^^^^^^^^^^^
日程控件的
数据库
还原
文件
日程控件的
数据库
还原
文件,
数据库
备份,原来日程控件里面那个
数据库
还原
文件用不了,现在重新上传一个
数据库
开发 维护 性能调优 备份
还原
各种复杂
问题
的解决方案
数据库
开发 维护 性能调优 备份
还原
各种复杂
问题
的解决方案 这时对CSDN上出现的很多
问题
的解决方案的总结 免费分享 大家多多下载哦
sql server 系列课程
数据库
维护篇
本课程重点讲解了关于sql server 的四个方面,第一个是
数据库
的创建以及维护,第二个部分主要讲解了表的建立和维护,第三个部分重点讲解了
数据库
的备份
还原
,导入导出,分离附加等相关知识,第四个部分重点讲解了管理权限和管理角色的相关知识以及其他知识等,本课程没有作业,本课程为连载课,大约40小节左右,在每周的周二晚更新,三到四小节。
SQL SERVER 2012
数据库
还原
SQL SERVER 2012
数据库
还原
还原
成新
数据库
:
还原
时可以不用先建立一个空
数据库
,直接
还原
成新
数据库
,步骤如下: 1.右键
数据库
–
还原
数据库
。在常规–源设备:选择需要
还原
数据库
的路径。在目标–
数据库
:自定义此次
还原
数据库
的名称。
还原
计划:勾选。 2.选
中
还原
:将
还原
路径进行自定义修改。 D:\SQL\Sql2012\hbposv10_test1_Data.MDF D:\SQL\Sql2012hbposv10_test1_Log.LDF 3.选项–结尾日志备份。取消勾选:
还原
前进行结尾日志备份
oracle
数据库
的
还原
步骤,Oracle
数据库
还原
代码步骤
Oracle
数据库
还原
代码步骤,最近项目用到从oracle的dmp文件
中
还原
数据,因为之前未涉猎到该
数据库
操作,也这方面的资料,在网上搜集了一些,最后总结出下面一点方法,供大家参考,可以成功地将dmp文件用命令行的方式
还原
回去。--创建表空间------------------------------------------------------create smallfile tablespa...
数据库及相关技术
1,178
社区成员
18,939
社区内容
发帖
与我相关
我的任务
数据库及相关技术
C++ Builder 数据库及相关技术
复制链接
扫一扫
分享
社区描述
C++ Builder 数据库及相关技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章