在程序中动态创建了一个MS SQL Server2000 数据库,并复制了一些表进去。然后我想把这个库分离出来,但是提示数据库正在使用中,怎么办呢?我已经做的:
adoconnection.close和adoquery.close
adoconnection连接到了master数据库
adoconnection.close和adoquery.close
adoconnection连接到了master数据库
var
SelectQuery : TAdoQuery;
ClearProUser : TAdoQuery;
begin
try
SelectQuery :=TAdoQuery.Create(self);
ClearProUser:=TAdoQuery.Create(self);
SelectQuery.Connection :=ADOConnection1;
ClearProUser.Connection:=ADOConnection1;
SelectQuery.SQL.Clear;
ClearProUser.SQL.Clear;
SelectQuery.SQL.Add('select * from dbo.sysobjects where '+
'id = object_id(N''[dbo].[p_killspid]'') and OBJECTPROPERTY(id, N''IsProcedure'') = 1');
SelectQuery.Open;
if SelectQuery.Eof then
begin
adocommand1.CommandText:='create proc p_killspid ' +
'@dbname sysname ' +
'as '+
'declare @s nvarchar(1000) ' +
'declare tb cursor local for ' +
'select s=''kill ''+cast(spid as varchar) '+
'from master..sysprocesses '+
'where dbid=db_id(@dbname) '+
'open tb '+
'fetch next from tb into @s '+
'while @@fetch_status=0 '+
'begin '+
' exec(@s) '+
' fetch next from tb into @s '+
'end '+
'close tb '+
'deallocate tb';
adocommand1.Execute;
end;
adocommand1.CommandText:='exec p_killspid ''数据库名称''';
adocommand1.Execute;
finally
freeandnil(SelectQuery);
freeandnil(ClearProUser);
end;
end;