使用SQL语句还原数据库 2012.3.20
--返回由备份集内包含的数据库和日志文件列表组成的结果集。 --主要获得逻辑文件名 USE master RESTORE FILELISTONLY FROM DISK = 'g:\back.Bak' Go ************************************************ /**//* 利用bak恢复数据库,强制还原(REPLACE) STATS = 10 每完成10%显示一条记录 DBTest和DBTest_log是上面g:\back.Bak里的逻辑文件 */ USE master RESTORE DATABASE DB FROM DISK = 'g:\back.Bak' WITH MOVE 'DBTest' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DB.mdf', MOVE 'DBTest_log' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DB_log.ldf', STATS = 10, REPLACE GO ++++++++++++++++++++++++++++++++ /**//* 备份数据DB 到.bak文件。然后利用此bak文件恢复一个新的数据库DBTest。 */ USE master BACKUP DATABASE DB TO DISK = 'g:\DBBack0930.bak' RESTORE FILELISTONLY FROM DISK = 'g:\DBBack0930.bak' RESTORE DATABASE DBTest FROM DISK = 'g:\DBBack0930.bak' WITH MOVE 'DBTest' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest.mdf', MOVE 'DBTest_log' TO 'E:\Program Files\Microsoft SQL Server2005\Data\DBTest_log.ldf' GO ---****************************** 存储过程 SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON go /*可以强制还原数据库,也可以利用备份文件重新创建一个数据库*/ ALTER PROCEDURE [dbo].[restoreDB] ( --@path NVARCHAR(32) , @name NVARCHAR(64) ,--数据库备份的名称 @mdfName NVARCHAR(64) ,--物理文件mdf的名称 @ldfName NVARCHAR(64)--物理文件ldf的名称 ) AS BEGIN DECLARE @path NVARCHAR(64)--数据库备份的地址 DECLARE @mdfPath NVARCHAR(64)--mdf文件的存放地址 DECLARE @ldfPath NVARCHAR(64)--ldf文件的存放地址 SET @path = 'E:\DB\' + @name + '.bak' SET @mdfPath = 'E:\DB\' + @mdfName + '.mdf' SET @ldfPath = 'E:\DB\' + @ldfName + '.ldf' --RESTORE FILELISTONLY FROM DISK = @path --获取逻辑文件的名称 RESTORE DATABASE @mdfName FROM DISK=@path WITH STATS = 10,REPLACE,--replace表示强制替换,STATS = 10表示每进行10%提示一下,@mdfName 就是DB的name MOVE 'Relaship' TO @mdfPath, MOVE 'Relaship_log' TO @ldfPath END