执行SQL脚本命令。关键在于首先删除数据库,然后还原数据库到指定目录,最后修改数据库路径为相对路径。
例如从(D:/Northwind.bak)还原Northwind数据库:
USE MASTER
GO
DROP DATABASE Northwind
GO
RESTORE DATABASE " & Northwind
FROM DISK = 'D:/Northwind.bak'
WITH FILE = 1,
MOVE 'Northwind_data' TO 'D:/MSSQL/data/Northwind_data.mdf',
MOVE 'Northwind_log' TO 'D:/MSSQL/data/Northwind_log.ldf'
GO
UPDATE sysaltfiles SET [filename]='./../data/Northwind_data.mdf' WHERE [NAME]='Northwind_data'
UPDATE sysaltfiles SET [filename]='./../data/Northwind_log.ldf' WHERE [NAME]='Northwind_log'
UPDATE sysdatabases SET [filename]='./../data/Northwind_data.mdf' WHERE [NAME]='Northwind'
GO
上面SQL语句关键在于根据指定备份文件能取得备份集的文件号、数据文件逻辑名、日志文件逻辑名。
查看D:/Northwind.bak的备份集信息可以使用SQL命令:
RESTORE HEADERONLY FROM DISK = 'D:/Northwind.bak'
取得备份集的文件号,即SQL语句中FILE参数。
查看D:/Northwind.bak的文件结构信息可以使用SQL命令:
RESTORE FILELISTONLY FROM DISK = 'D:/Northwind.bak' WITH FILE = 1
取得备份集的数据文件逻辑名和日志文件逻辑名。