看了好多贴,也试了N次了,可是老是不行,总是提示“未能获得排它性访问权”?
还想再问问:看到过这么一个贴:
http://search.csdn.net/expert/topic/53/5301/2003/6/17/1926442.htm里面说:
1 不要将程序连接到你要恢复的数据库上,你可以用use master2 你可以用sp_who或者select dbname = casewhen dbid = 0 then nullwhen dbid <> 0 then db_name(dbid)end, loginame from master..sysprocesses where hostname is not nullgroup by dbid,loginame等列出现在正在使用的进程/用户3 调用kill proccess干掉他们4 然后再进行恢复---------
想问一下,如何调用KILL PROCCESS呢??谁帮忙写一下代码?
我在查询分析器里做了第二步,
返回如下结果:
DBNAME LOGINNAME
NULL SA
MASTER SA
MASTER XINGZI/BENBACON
BEN SA
那然后怎么把他们KILL掉呢??
第4步是不是这样写呢?
sql.text := 'restore database BEN from disk = :2 with replace ';
parameters.parambyname('2').value := edit4.text;
<我是想恢复一个叫“BEN”的数据库>我也试过在restore database BEN from disk = :2 with replace前加
USER MASTER
但是还是会有“未能获得排他性访问权”,
是不是因为我的ADOCONNECTION是放在DATAMODULE里的缘故呢?
还想再问问:看到过这么一个贴:
http://search.csdn.net/expert/topic/53/5301/2003/6/17/1926442.htm里面说:
1 不要将程序连接到你要恢复的数据库上,你可以用use master2 你可以用sp_who或者select dbname = casewhen dbid = 0 then nullwhen dbid <> 0 then db_name(dbid)end, loginame from master..sysprocesses where hostname is not nullgroup by dbid,loginame等列出现在正在使用的进程/用户3 调用kill proccess干掉他们4 然后再进行恢复---------
想问一下,如何调用KILL PROCCESS呢??谁帮忙写一下代码?
我在查询分析器里做了第二步,
返回如下结果:
DBNAME LOGINNAME
NULL SA
MASTER SA
MASTER XINGZI/BENBACON
BEN SA
那然后怎么把他们KILL掉呢??
第4步是不是这样写呢?
sql.text := 'restore database BEN from disk = :2 with replace ';
parameters.parambyname('2').value := edit4.text;
<我是想恢复一个叫“BEN”的数据库>我也试过在restore database BEN from disk = :2 with replace前加
USER MASTER
但是还是会有“未能获得排他性访问权”,
是不是因为我的ADOCONNECTION是放在DATAMODULE里的缘故呢?
解决方案 »
- 请高手帮忙FTP上载的问题!!!!急呀!!!
- 求一算法两字符串abcdef123与xbcyzf123最大相同字符串数
- 【紧急求助】这条分页查询SQL有错吗?
- SQL语句的问题,大家帮我看看啊!
- 急!急!急!怎么读取word文档中的某一行,或者是遍历读取word文档的行内容
- 新手诚心请教如何实现对打印机的使用,急!!
- 结合Delphi用RaveReports制作报表遇到的问题(急急急)
- 请问用PolyPolyline画多义线时,怎么样让它画出来的线更粗啊?
- 帮忙看看[Error] CopyFile.pas(83): '.' expected but '(' found 是什么原因?
- 请问哪个大侠有进程和模块管理的资料??
- 打印问题,急?
- 请问能否将ADODataSet1查询得到的数据集, 赋给ADODataSet2 ???
procedure TForm1.BitBtn1Click(Sender: TObject);
var
str:string;
begin
adoc1.Connected:=false; //这是连接业务数据库的
ADOC.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=master;Data Source=SUMMER';
ADOC.LoginPrompt:=false;
ADOC.Connected:=true;
adoq_1.Connection:=adoc;
adoq_2.Connection:=adoc;
// ADOQ_1和ADOQ_2 是TADOquery
adoq_1.close;
adoq_1.sql.clear;
adoq_1.sql.add('sp_who');
adoq_1.open; adoq_1.Filter:='dbname=''pp''';
//pp为你的业务数据库
adoq_1.filtered:=true;
adoq_1.first;
while not adoq_1.Eof do
begin
str:=adoq_1.FieldByName('spid').asstring;
adoq_2.close;
adoq_2.sql.clear;
adoq_2.sql.add(' kill ' + str );
adoq_2.ExecSQL;
adoq_1.Next;
end;
adoq_1.close;
adoq_1.sql.clear;
adoq_1.sql.add('restore database pp from disk='''+opendialog1.filename+''' with replace ');
adoq_1.ExecSQL;
showmessage('恢复成功');
//你自己调试吧!
解决 先停止sql服条器再启动
2、Select dbid as DBID from syscursortables where name = '数据库名';
3、Delete sysprocesses where dbid=DBID
4、....即可开始恢复