在作数据库恢复时出现下列情况,请帮忙
程序如下:
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('restore database lm from disk='''+‘e:\aa.mdf’+'''');
adoquery1.ExecSQL;
运行后出现提示:‘因为数据库正在使用,所以未能获得对数据库的排它访问权’
请问是何原因?如何处理?
注释如下:e盘下绝对有aa.mdf数据库文件
数据库是sql sever 2000;
在SQL的查询分析器中:
use master
restore database lm
from disk = 'e:\lvzhi\aa.mdf 'with replace还是出现:‘因为数据库正在使用,所以未能获得对数据库的排它访问权’
程序如下:
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('restore database lm from disk='''+‘e:\aa.mdf’+'''');
adoquery1.ExecSQL;
运行后出现提示:‘因为数据库正在使用,所以未能获得对数据库的排它访问权’
请问是何原因?如何处理?
注释如下:e盘下绝对有aa.mdf数据库文件
数据库是sql sever 2000;
在SQL的查询分析器中:
use master
restore database lm
from disk = 'e:\lvzhi\aa.mdf 'with replace还是出现:‘因为数据库正在使用,所以未能获得对数据库的排它访问权’
2 你可以用sp_who或者
select dbname = case
when dbid = 0 then null
when dbid <> 0 then db_name(dbid)
end, loginame from master..sysprocesses where hostname is not null
group by dbid,loginame
等列出现在正在使用的进程/用户
3 调用kill proccess干掉他们
4 然后再进行恢复
你能否写的详细一些啊!我还很菜哎!
毕业课程设计,急啊!!
它也出现:‘因为数据库正在使用,所以未能获得对数据库的排它访问权’
那是为什么啊?
select dbname = case
when dbid = 0 then null
when dbid <> 0 then db_name(dbid)
end, loginame from master..sysprocesses where hostname is not null
group by dbid,loginame
找到三个数据库名
你的1,2不是在delphi中写代码吗?
2 你可以在query.sql.add上面的语句然后执行,注意引号的使用
with tquery1 do
begin
close;
sql.clear;
sql.add('sql语句');
open;
end;
之后
1 adoquery1.sql.add('restore database lm from disk='''+‘e:\aa.mdf’+''''where dbid = DB_ID('要恢复的数据库名'));
2 sql.add('sql语句');
use [master];//连接别的数据库
Restore DataBase MyDB From Disk='c:\data'//data为备份的数据库文件
adoquery分别执行这3条sql语句。