我现在使用ADOConnection1连接一个sqlserver数据库[abc],并使用一个ADOQuery打开一个数据集。
然后我在利用另外一个ADOConnection2连接上 [master]库,在把 ADOQuery执行close操作,在把ADOConnection1关闭。
在通过ADOConnection2执行删除[abc]数据库操作,可总是提示我当前数据库被锁定。 我该怎么办,初步认为是我的ADOConnection1和ADOQuery没有完全关闭掉。请大家给个好思路。
然后我在利用另外一个ADOConnection2连接上 [master]库,在把 ADOQuery执行close操作,在把ADOConnection1关闭。
在通过ADOConnection2执行删除[abc]数据库操作,可总是提示我当前数据库被锁定。 我该怎么办,初步认为是我的ADOConnection1和ADOQuery没有完全关闭掉。请大家给个好思路。
adoconnectin1.connected:=false;
或者你设置adoconnection的keepconnection属性为false,这样当每个引用你的adoconnection
的数据集全部关闭的时候,你的adoconnection会自动关闭的,对于这个桌面的单用户数据库
,你用好一定要关闭,呵呵,这样才可以防止报错!
adoconnection.connected:=false
如果是彻底的关闭一个数据库的话需要KILL这个数据库的进程create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500),@temp varchar(1000)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status =0
begin
set @temp='kill '+rtrim(@spid)
exec(@temp)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
比如,你当前的adoConnection连接的是 adc,可以用 use master 语句切换数据库,然后可以对abc语句实行删除,这个情况在数据库的恢复时很常用。