delphi控制SQL Server数据恢复的问题!(三层结构〉〉客户端恢复疑问?)
应用程序服务器:adoconnection /adoquery/ datasetprovider
客户端:dcomconnection/clientdataset/
//
如何在不断开数据库连接的情况下进行数据库备份的还原
adoquery1.SQL.Clear;
adoquery1.SQL.Add('use master');
adoquery1.SQL.Add('restore database mydb from disk='''c:\mydb.bak''');
adoquery1.SQL.Add('use mydb');
这种方法好像不行!
/////////////////////////
 回复人: forgot2000(忘记2000年) ( ) 信誉:100  2003-01-20 17:34:00  得分:0 
 
 
  在Master数据库中建如下存储过程:
Create Procedure killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
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<>-1
begin
exec('kill '+@spid)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
endGO
在恢复数据库之前先执行此存储过程,像这样:Use Master
Go
exec killspid 'mydb'
Go
restore database mydb from disk='c:\mydb.bak'在Delphi中直接用ExecSQL先后执行以上SQL语句即可//这种方法好像可以但是需要断开连接同时加入触发器,断开后还寻重新连接!//谁有没有更好的方法?????????