未能获得对数据库的排它访问权(100分)

  • 主题发起人 主题发起人 sanjin
  • 开始时间 开始时间
S

sanjin

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么执行这条语句出现错误?
Restore DataBase shenji from shenji200207212115 with replace
[shenji200207212115]是我的设备名!
错误是:
因为数据库正在使用,所以未能获得对数据库的排它访问权。
RESTORE DATABASE 操作异常终止。
我用的是自己的机器呀!我先用Query执行不通过,然后在查询分析器里执行也是这个错误!而且我把其他连接也关了!
请教! 该怎样写query语句,怎样获得排它权? 错误出在哪?

as_DeviceName:=ListView1.Selected.Caption;
ls_Sql:='Restore DataBase shenji from '+as_DeviceName+' with replace';

DataM.Database1.Connected:=False;
DataM.Database2.Connected:=True;

DataM.Q_backup.Close;
DataM.Q_backup.SQL.Clear;
DataM.Q_backup.SQL.Add(ls_Sql);
两个DataBase都是KeepConnection:=False,还是一样的错误呀!
总是说数据库正在使用,可是我并没有使用呀!

DataM.Q_backup.ExecSQL;
DataM.Q_backup.Close;
而且我刚做过一个试验!两个DataBase:
DataBase1:
Connected=Ture
KeepConnection = False
LoginPrompt = False
DataBase2:
Connected=False
KeepConnection = False
LoginPrompt = False
DataBase1连接shenji库,DataBase2连接master库,用于恢复备份的Query连接在DataBase2上!
button代码:
DataBase1.Connected:=False;
DataBase2.Connected:=True;
Query2.ExecSQL;
DataBase2.Connected:=False;
DataBase1.Connected:=True;
Table1.Open;
还是原来的错误!
如果开始DataBase1.connected=False在运行,就可以恢复了!
这可怎么办呀! 我还有其他好多Table和Query要在备份恢复前打开呢!
请高手帮忙呀!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
查询分析器里头通得过吗??????????????????
 
是呀! 当然能通过! 是Delphi的问题!
 
你是用BDE还是ADO??
 
Bde呀! 怎么?
 
大家帮帮忙呀! 这个帖子我在中国软件发过没有答案!
 
你用的是SQL SERVER吗?用ADO,连接使用SQLOLEDB1试
 
好! 试一试! 不过我只能将备份恢复的database改为ado! 不会需要都改吧? 有好多T
Table和Query连接在第一个Database上!
 
我做试验时DataBase2默认连接在Master上!
我就是不明白为什么DataBase1如果连接库,Database2就没有排他权,我都在代码中关闭连接了呀! 不应该没有呀!
必须! DataBase1一开始就不连接,DataBase2才好用! 这不等于DataBase1没有用吗! 我还有好多Table和Query连在上面有用呢!
请问怎么办!
难道BDE不行,非要改ADO这可麻烦了!
 
我用ADO也试过了!
也是这样! 这是怎么回事呀!
除非程序一开始数据库什么也连就能恢复备份!
否则就不行! 好像是断不开其他与数据库相连的控件!
可是!我在代码中将:Connected=False KeepConnection = False
应该可以断开吧! (use master我也试过,跟这个没关系)
请大家帮帮忙呀!!!!!!!!!!!!!!!!!!
 
多人接受答案了。
 
后退
顶部