在程序中动态创建了一个MS SQL Server2000 数据库,并复制了一些表进去。然后我想把这个库分离出来,但是提示数据库正在使用中,怎么办呢?我已经做的:
  adoconnection.close和adoquery.close 
  adoconnection连接到了master数据库

解决方案 »

  1.   

    procedure TFrm_Ctrol.Clear_MSSQLUser;
    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;