/*******************************************
 * 还原数据库
 *******************************************/
ALTER PROC sp_ReCreateDataBase
@TargetDataBase NVARCHAR(500),  --目标数据库
@BakDBPath NVARCHAR(500),  --源数据库备份文件硬盘地址
@SavePath NVARCHAR(500)  --数据库文件存储目录
AS

DECLARE @Sql NVARCHAR(MAX)


SET @TargetDataBase = 'p20-ls-3787'  ---目标数据库
SET @BakDBPath = 'c:\p20-ls-3787.bak'  --源数据库备份文件硬盘地址


--------------------------------分割线------------------------------------
SET @Sql = '
	declare @dumpfile varchar(50)  
	declare @msg varchar(70)  
	   select @dumpfile = ''' + @BakDBPath + '''  --TODO: ①源数据库备份文件
	   select @msg=convert(char(26),getdate(),9)  
	   print @msg  
     
	RESTORE DATABASE [' + @TargetDataBase + ']  --TODO: ②目标数据库名称
	   FROM disk=@dumpfile  
	   WITH RECOVERY,  
	   MOVE ''YiDianTongV2'' TO ''' + @SavePath + @TargetDataBase + '.mdf'',   --TODO: ③目标数据库名称
	   MOVE ''YiDianTongV2_Log'' TO ''' + @SavePath  + @TargetDataBase + '_Log.ldf''   --TODO: ④目标数据库名称

	if (@@ERROR <> 0 )  
	begin  
	   select @msg=convert(char(26),getdate(),9)+''-----error''
	   print @msg  
	end  
	else  
	begin  
	   select @msg=convert(char(26),getdate(),9)+''-----ok''  
	   print @msg  
	end  
'
--PRINT @Sql
EXEC(@Sql)

/*******************************************
 * 测试
 * 
 * EXEC sp_ReCreateDataBase 'p20-ls-3787', 'c:\p20-ls-3787.bak','D:\MyData\'
 *******************************************/


本文转载:CSDN博客