--------------------------------------------------------------
--數據庫還原
--------------------------------------------------------------
IF EXISTS (SELECT name FROM sysobjects
WHERE name = ''restore_database_proc'' AND type = ''P'')
DROP PROCEDURE restore_database_proc
GO
CREATE PROCEDURE restore_database_proc
@database_bak_path varchar(1000)
AS
exec( ''RESTORE FILELISTONLY FROM DISK = N'''''' + @database_bak_path + '''''''')
GO
--DROP TABLE #tmp_file
create table #tmp_file
(
LogicalName nvarchar(128), --文件的邏輯名稱
PhysicalName nvarchar(260), --文件的物理名稱或操作系統名稱
Type char(1), --數據文件 (D) 或日志文件 (L)
FileGroupName nvarchar(128), --包含文件的文件組名稱
Size numeric(20,0), --當前大小(以字節為單位)
MaxSize numeric(20,0) --允許的最大大小(以字節為單位)
)
--數據庫的名字
declare @database_name varchar(1000)
--數據庫備份文件的路徑
declare @database_bak_path varchar(1000)
--數據庫和日志存放文件
declare @database_path varchar(1000)
--數據庫文件完整路徑
declare @database_mdf_path varchar(1000)
--數據庫日志完整路徑
declare @database_log_path varchar(1000)
--數據庫原來文件名字
declare @database_mdf_oldname varchar(1000)
--數據庫日志原來文件名
declare @database_log_oldname varchar(1000)
--------------------------------------------------------------
/*需要修改的參數*/
--------------------------------------------------------------
--還原的數據庫名
set @database_name = ''demo_db''
--數據庫備份文件的完整路徑
set @database_bak_path = ''D:\hotop100.bak''
--數據庫文件存放的路徑
set @database_path = ''D:\data''
--------------------------------------------------------------
--------------------------------------------------------------
set @database_mdf_path = @database_path + ''\'' + @database_name + ''.mdf''
set @database_log_path = @database_path + ''\'' + @database_name + ''_Log.ldf''
INSERT INTO #tmp_file EXEC (''restore_database_proc N'''''' + @database_bak_path + '''''''')