`
王仕军
  • 浏览: 21336 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类
最新评论

数据备份恢存储过程

阅读更多
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_RestoreDb]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_RestoreDb]
GO

/**//*--恢复指定目录下的所有数据库

恢复的数据库名为备份文件名(不含扩展名)
备份文件的扩展名固定为.bak
/*--调用示例
--恢复指定目录下的所有数据库
exec p_RestoreDb @bkpath='c:'

--恢复指定目录下的指定数据库
exec p_RestoreDb @bkpath='c:',@bkfile='客户资料,xzkh_new'
--*/


create proc p_RestoreDb
@bkpath nvarchar(1000)='', --定义备份文件的存放目录,默认为SQL的备份目录
@bkfile nvarchar(4000)='',--定义要恢复的备份文件名,不含扩展名
@dbpath nvarchar(260)='',--恢复后的数据库存放目录,不指定则为SQL的默认数据目录
@overexist bit=1,      --是否覆盖已经存在的数据库,仅@retype为'DB'/'DBNOR'是有效
@killuser bit=1   --是否关闭用户使用进程,仅@overexist=1时有效
as
declare @sql varchar(8000),@dbname sysname

if isnull(@bkpath,'')=''
begin
select @bkpath=rtrim(reverse(filename)) from master..sysfiles where name='master'
select @bkpath=substring(@bkpath,charindex('',@bkpath)+1,4000)
,@bkpath=reverse(substring(@bkpath,charindex('',@bkpath),4000))+'BACKUP'
end
else if right(@bkpath,1)<>'' set @bkpath=@bkpath+''

--得到恢复后的数据库存放目录
if isnull(@dbpath,'')=''
begin
select @dbpath=rtrim(reverse(filename)) from master..sysfiles where name='master'
select @dbpath=reverse(substring(@dbpath,charindex('',@dbpath),4000))
end
else if right(@dbpath,1)<>'' set @dbpath=@dbpath+''

--得到指定目录下的所有备份文件
create table #t(fname varchar(260),depth int,isf bit)
insert into #t exec master..xp_dirtree @bkpath,1,1

if isnull(@bkfile,'')=''
declare tb cursor local for select fn=left(fname,patindex('%.bak',fname)-1) from #t
where isf=1 and fname like '%.bak'  --取.bak文件
else
begin
set @bkfile=','+replace(@bkfile,',','.bak,')+'.bak,'
declare tb cursor local for select fn=left(fname,patindex('%.bak',fname)-1) from #t
where isf=1 and fname like '%.bak' and @bkfile like '%,'+fname+',%'
end

--恢复数据库处理
open tb
fetch next from tb into @dbname
while @@fetch_status=0
begin
--生成数据库恢复语句
set @sql='restore database ['+@dbname
+'] from disk='''+@bkpath+@dbname+'.bak'''
+' with RECOVERY'
+case when @overexist=1 then ',replace' else '' end

--添加移动逻辑文件的处理
--从备份文件中获取逻辑文件名
declare @lfn nvarchar(128),@tp char(1),@i int

--创建临时表,保存获取的信息
create table #tb(ln nvarchar(128),pn nvarchar(260),tp char(1),fgn nvarchar(128),sz numeric(20,0),Msz numeric(20,0))
--从备份文件中获取信息
insert into #tb exec('restore filelistonly from disk='''+@bkpath+@dbname+'.bak''')
declare #f cursor local for select ln,tp from #tb order by tp
open #f
fetch next from #f into @lfn,@tp
set @i=0
while @@fetch_status=0
begin
select @sql=@sql+',move '''+@lfn+''' to '''+@dbpath+@dbname+cast(@i as varchar)
+case @tp when 'D' then '.mdf''' else '.ldf''' end
,@i=@i+1
fetch next from #f into @lfn,@tp
end
close #f
deallocate #f
drop table #tb

--关闭用户进程处理
if @overexist=1 and @killuser=1
begin
declare hCForEach cursor for
select s='kill '+cast(spid as varchar) from master..sysprocesses
where dbid=db_id(@dbname)
exec sp_msforeach_worker '?'
end

--恢复数据库
exec(@sql)
fetch next from tb into @dbname
end
close tb
deallocate tb
go
分享到:
评论

相关推荐

    数据复恢软件

    3. **多种存储设备支持**:Final Data不仅可以处理传统的硬盘,还支持SD卡、USB驱动器、数码相机内存卡等多种存储设备的数据恢复。 4. **预览功能**:在恢复文件前,用户可以通过软件的预览功能查看文件内容,确认...

    硬盘格式化后数据恢100%复软件

    5. **数据备份**:为防止类似问题再次发生,定期备份重要数据至关重要。 6. **软件选择**:市场上的数据恢复软件众多,选择有良好口碑、支持更新且用户评价较高的软件,可以提高恢复成功率。 总的来说,数据恢复是...

    Acronis True Image Home 超详细中文图解教程(2010可用)--备份

    Acronis True Image Home是一款功能强大的数据备份与恢复软件,适用于个人和家庭用户。它能够为用户提供全面的数据保护解决方案,包括磁盘备份、文件备份、系统恢复、克隆等功能。本文将详细介绍如何使用Acronis ...

    开启Win 8自动备份 轻松恢误删文件.docx

    它不仅能够帮助用户保护重要数据不因意外删除或系统故障而丢失,还能够简化数据恢复的过程。本文将详细介绍如何在Windows 8系统中开启自动备份功能,并利用它轻松恢复误删文件的步骤。 首先,用户需要了解Windows 8...

    Oracle-RMAN增量备份恢复测试记录.docx

    数据记录可以用于追踪备份和恢复的过程,了解备份和恢复的结果。 8. 归档日志状态: 归档日志状态是指对数据库的归档日志状态,包括当前的归档日志序列号、数据库的时间、归档日志的状态等。归档日志状态可以用于...

    北亚苹果数据恢复

    【北亚苹果数据恢复】就是为解决这一问题而设计的,它能够深度扫描iOS设备的存储空间,查找并恢复那些被误删或丢失的数据。 该软件支持多种类型的数据恢复,包括但不限于: 1. **短信恢复**:无论是普通短信还是...

    恢復輸出—用於備份自用

    【描述】:“恢復輸出—用於備份自用”的描述重复了标题,这可能是强调该过程的个人用途,比如个人电脑上的数据备份,或者是针对个人项目或业务的小型数据管理。这种情况下,备份可能是为了防止意外的数据损坏、硬件...

    Cognos报表备份和恢复

    Cognos报表备份和恢复是企业管理其业务智能数据和报告的重要环节,确保数据安全和业务连续性。在本文中,我们将深入探讨如何在Cognos环境中执行这些操作。 首先,登录到Cognos服务器至关重要。根据提供的信息,...

    云存储与备份 你要知道的6件事

    云存储与备份是现代企业数据管理的重要组成部分,随着云计算的普及,越来越多的企业开始考虑将数据存储和备份工作迁移到云端。以下是你需要了解的六件关键事情: 1. **云服务的私有性质**:大多数云服务都是基于...

    刪除文件恢復软件

    在IT领域,数据丢失是常有的事情,尤其是当我们意外删除了重要的文件且清空了回收站后,这种问题显得尤为紧迫。...不过,为了避免不必要的麻烦,我们在日常使用电脑时应该养成良好的数据管理习惯,及时备份重要数据。

    AIX_系统备份与恢复

    【AIX系统备份与恢复】是IBM AIX操作系统中至关重要的一环,确保系统在遭遇故障或灾难性事件后能够快速恢复。AIX操作系统基于UNIX,具有独特的对象...正确理解和执行备份过程能有效防止数据丢失,提高系统的恢复效率。

    Oracle9i数据库的备份与恢复.ppt

    在Oracle9i数据库管理中,备份是为了防止数据丢失而将数据库的重要组成元素复制到安全的存储介质上。这些元素包括初始化参数文件、数据文件、控制文件和重做日志文件等。备份可以手工完成,也可以通过Oracle提供的...

    基于Java和SQL Server 2008开发的一款图书馆管理系统,具备基本的增、改、查、备份与恢.zip

    5. 数据备份与恢复:为了防止数据丢失或系统崩溃带来的损失,系统需要具备数据备份功能,能够在必要时恢复数据。 6. 系统维护:系统应提供日志记录、系统状态监控、数据校验、性能优化等功能,确保图书馆管理系统的...

    虚拟机备份设计方案.pdf

    云祺解决方案介绍 针对用户的这一需求, 本方案在用户公司总部的计算中心中部署一套云祺灾难备份与恢 复系统,在需要进行备份的非虚拟化应用服务器、办公 PC 和个人笔记本电脑上安装云祺备 份代理,将这些设备上的...

    分布式数据库设计方案.docx

    5. 备份恢復:为了保证数据的可靠性,需要实现数据的备份和恢复机制,以便在系统故障时能够快速恢复数据。 6. 网络通信:分布式数据库需要实现高效的网络通信机制,以保证不同数据库服务器之间的数据传输速度和稳定...

    email資料恢復工具

    尽管有了数据恢复工具,但我们仍应重视预防数据丢失,比如定期备份、使用可靠的防病毒软件、谨慎处理邮件删除等。 总结,邮箱数据恢复工具在现代数字生活中扮演着至关重要的角色,它不仅可以挽回因操作失误导致的...

    DG5611580-x64数据恢复软件分享.zip

    在信息时代,数据的重要性不言而喻,无论是个人还是企业,都可能遇到数据丢失的情况,因此数据恢复技术显得尤为...通过正确使用数据恢复软件,并采取预防措施进行数据备份,用户可以最大限度地减少数据丢失带来的风险。

    面對CyberAttack、勒索軟體 - 最佳資料恢復計畫指引.pdf

    根据统计,超过76%的数据泄露源于经济动机,而93%的组织认为应对勒索软件的策略应包括隔离受影响的系统并从备份中恢复。 勒索软件的增长速度迅猛,从2010年到2016年的年复合增长率超过100%,并且已经成为首要的安全...

    三星手机照片数据恢复软件-回天照片恢复软件

    此外,尽管有了回天照片恢复软件这样的工具,但我们仍需强调数据备份的重要性。定期备份数据是预防数据丢失最有效的策略。通过将照片同步到云服务或存储到其他设备中,用户可以确保即使在最糟糕的情况下,也能保留...

    VMware數據恢復管理員︰安裝和使用VDR指導手冊

    **VMware 数据恢复**(简称 **VDR**)是 VMware 公司推出的一款针对虚拟环境的数据备份解决方案。它旨在帮助用户保护虚拟机数据,并提供高效的数据去重功能,从而减少存储空间的需求。 VDR 的主要特性包括: - **...

Global site tag (gtag.js) - Google Analytics