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
[解决办法]