SQL 2008 R2 Express 怎么用Delphi开发的程序恢复BAK备份

SQL 2008 R2 Express 如何用Delphi开发的程序恢复BAK备份BAK 备份文件是SQL2000备份的,早先该BAK文件是通

SQL 2008 R2 Express 如何用Delphi开发的程序恢复BAK备份
BAK 备份文件是SQL2000备份的,早先该BAK文件是通过以下语句恢复

use master 
alter database DB set offline with rollback immediate
restore database DB from disk='D:\qqq.bak'
alter database DB set online with rollback immediate
use DB

在SQL2000 MSDE 里,用Delphi程序执行以上语句可以恢复,但是在SQL 2008 R2 Express 里,这个语句在Delphi程序里执行,只会恢复字段,里面的数据根本不能恢复,如果用SQL 2008 R2 Express 执行,会报

消息 3154,级别 16,状态 4,第 3 行
备份集中的数据库备份与现有的 'DB' 数据库不同。
消息 3013,级别 16,状态 1,第 3 行
RESTORE DATABASE 正在异常终止。 

错误,如果把已经存在的DB数据库删除,SQL2008 执行以上语句可以恢复,或者用以下语句在SQL 2008里执行,也行。

use master
drop database DB
restore database DB from disk='D:\qqq.bak'

但是以上语句在Delphi程序里,在drop database DB就执行无效(不会报错),请问怎么在Delphi程序里往SQL 2008 数据库里恢复BAK文件 
[解决办法]
ALTER DATABASE DB_1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE 
RESTORE DATABASE DB_1 FROM DISK = 'c:\2.bak'
WITH Replace, MOVE 'DB_Data' TO 'd:\Data\DB_1.mdf', MOVE 'DB_log' TO 'd:\Data\DB_log.mdf' 
ALTER DATABASE DB_1 SET MULTI_USER 

[解决办法]

引用:
的确是要覆盖现有数据库,用restore database DB from disk='D:\qqq.bak' REPLACE 执行报告REPLACE附近语法错误,好像要加with mdf 到具体位置的mdf之类。但是具体位置不清楚,或者难以获取。为什么SQL 2000 MSDE 能执行的,怎么到SQL 2008 R2 Express 无法执行。

restore database DB from disk='D:\qqq.bak' with REPLACE