`

MS SQL数据库备份和恢复存储过程(加强版本)

阅读更多

上次写了MS SQL数据库备份和恢复存储过程
详细情况见(http://www.cnblogs.com/aierong/archive/2004/05/10/8789.aspx)
自感觉功能不太齐全,就重新写了一加强版本,经过测试成功!
先将代码发布出来,大家共享。
如有发现BUG,请大家指教或EMAIL:aierong@vip.sina.com

/**//*备份数据库*/
create proc pr_backup_db
@flag 
varchar(20) out,
@backup_db_name 
varchar(128),
@filename 
varchar(1000)  --路径+文件名字
as
declare @sql nvarchar(4000),@par nvarchar(1000)
if not exists(
 
select * from master..sysdatabases
  
where name=@backup_db_name
  )
begin
 
select @flag='db not exist'  /**//*数据库不存在*/
 
return
end
else
begin
 
if right(@filename,1)<>'' and charindex('',@filename)<>0
 
begin
  
select @par='@filename varchar(1000)'
  
select @sql='BACKUP DATABASE '+@backup_db_name
                         +' to disk=@filename with init'
  
execute sp_executesql @sql,@par,@filename
  
select @flag='ok' 
  
return
 
end
 
else
 
begin
  
select @flag='file type error'  /**//*参数@filename输入格式错误*/
  
return
 
end
end

GO

 

/**//*创建函数,得到文件得路径*/
create function fn_GetFilePath(@filename nvarchar(260))
returns nvarchar(260)   
as
begin
 
declare @file_path nvarchar(260)
 
declare @filename_reverse nvarchar(260)
 
select @filename_reverse=reverse(@filename)
 
select @file_path=substring(@filename,1,len(@filename)+1-charindex('',@filename_reverse))
 
return @file_path
end


GO

 




/**//*恢复数据库*/
CREATE  proc pr_restore_db    
/**//*
------------------------------------------------
Create Time:    2004-03-20 
Update Time:    2004-03-29 11:05
Author:         aierong
Remark:         恢复数据库
  
------------------------------------------------
*/

/**//*过程运行的状态标志,是输入参数*/      
@flag 
varchar(20) out,    
/**//*要恢复的数据名字*/
@restore_db_name 
nvarchar(128), 
/**//*备份文件存放的路径+备份文件名字*/ 
@filename 
nvarchar(260)         
as
/**//*返回系统存储过程xp_cmdshell运行结果*/
declare @proc_result tinyint 
/**//*循环次数*/ 
declare @loop_time smallint  
/**//*@tem表的ids列最大数*/
declare @max_ids smallint    
/**//*原数据库存放路径*/
declare @file_bak_path nvarchar(260)  
/**//*文件存放标志*/
declare @flag_file bit   
/**//*数据库master文件路径*/
declare @master_path nvarchar(260)  
declare @sql nvarchar(4000),@par nvarchar(1000)
declare @sql_sub nvarchar(4000)
declare @sql_cmd nvarchar(100
declare @sql_kill nvarchar(100
/**//*
判断参数@filename文件格式合法性,以防止用户输入类似d: 或者 c:a 等非法文件名
参数@filename里面必须有''并且不以''结尾
*/

if right(@filename,1)<>'' and charindex('',@filename)<>0
begin 
 
select @sql_cmd='dir '+@filename
 
EXEC @proc_result = master..xp_cmdshell @sql_cmd,no_output
 
/**//*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/
 
IF (@proc_result<>0)  
 
begin
  
/**//*备份文件不存在*/
  
select @flag='not exist'   
  
/**//*退出过程*/
  
return  
 
end
 
/**//*创建临时表,保存由备份集内包含的数据库和日志文件列表组成的结果集*/
 
create table #tem(
     
/**//*文件的逻辑名称*/ 
     LogicalName 
nvarchar(128), 
     
/**//*文件的物理名称或操作系统名称*/
     PhysicalName 
nvarchar(260) , 
            
/**//*数据文件 (D) 或日志文件 (L)*/
     Type 
char(1),  
     
/**//*包含文件的文件组名称*/
     FileGroupName 
nvarchar(128), 
                          
/**//*当前大小(以字节为单位)*/
     
[Size] numeric(20,0),  
     
/**//*允许的最大大小(以字节为单位)*/
     
[MaxSize] numeric(20,0)  
   )
 
/**//*
 创建表变量,表结构与临时表基本一样
 就是多了两列,
 列ids(自增编号列),
 列file_path,存放文件的路径
 
*/

 
declare @tem table(       
     
/**//*自增编号列*/
     ids 
smallint identity,  
     LogicalName 
nvarchar(128), 
     PhysicalName 
nvarchar(260), 
     File_path 
nvarchar(260), 
     Type 
char(1),  
     FileGroupName 
nvarchar(128)
   )
 
insert into #tem 
  
execute('restore filelistonly from disk='''+@filename+'''')
 
/**//*将临时表导入表变量中,并且计算出相应得路径*/
 
insert into @tem(LogicalName,PhysicalName,File_path,Type,FileGroupName)  
  
select LogicalName,PhysicalName,dbo.fn_GetFilePath(PhysicalName),Type,FileGroupName 
   
from #tem
 
if @@rowcount>0 
 
begin
分享到:
评论

相关推荐

    MS SQL数据库备份和恢复存储过程

    综上所述,MS SQL Server的数据库备份和恢复存储过程是通过动态SQL和系统存储过程`sp_executesql`以及`xp_cmdshell`来实现的。它们提供了灵活的方式来自动化数据库的备份和恢复任务,确保在数据丢失或系统故障时能够...

    MS SQL数据库系统备份与恢复

    "MS SQL数据库系统备份与恢复"这一主题主要关注如何有效地保护SQL Server中的数据,以防数据丢失或系统故障。 SQL Server提供了多种备份类型,包括完整备份、差异备份、日志备份等,每种都有其特定的应用场景。完整...

    MS SQL 数据库备份和还原的几种方法

    本篇文章将详细介绍在MS SQL中如何进行数据库的备份和还原,以便于在数据丢失或系统故障时能迅速恢复。 一、通过企业管理器进行单个数据库备份 这是最基础的备份方式,适合于偶尔需要备份的情况。首先,打开SQL ...

    ms sql 数据库操作

    在MS SQL数据库操作中,有几项关键的知识点是任何数据库管理员或开发人员都需要掌握的,包括数据库备份与恢复、SQL脚本执行以及数据库应用程序的配置。 首先,我们来探讨数据库备份与恢复。这是确保数据安全和业务...

    MSSQL数据库备份程序

    MSSQL数据库备份程序就是用于这一目的的关键工具,它能够定期创建数据库的副本,以防数据丢失或系统故障。 "易特SQL SERVER自动备份工具"是一款专门针对MSSQL数据库设计的自动化备份解决方案。这类工具通常包含以下...

    SQLServer数据库备份再还原之后登录名丢失解决方法

    ### SQL Server 数据库备份后登录名丢失问题及解决方法 #### 背景与问题概述 在进行SQL Server数据库的备份与恢复操作时,经常会出现一个棘手的问题:原本数据库中的登录名在恢复到另一台服务器后消失不见,导致...

    自动SQL数据库备份

    "自动SQL数据库备份"是一个核心话题,它涉及到确保企业关键信息的完整性和防止潜在的数据丢失。下面将详细阐述这个主题的相关知识点。 首先,我们要理解SQL数据库备份的基本概念。SQL数据库是用于存储和管理结构化...

    只能还原ms sql 数据库

    标题中的“只能还原MS SQL数据库”表明这是一个专为恢复Microsoft SQL Server数据库而设计的应用程序。在IT领域,数据库是存储和管理数据的核心组件,而SQL Server是微软公司提供的一种关系型数据库管理系统,广泛...

    Sql Server数据库自动全备份的脚本(带7z压缩)

    综上所述,利用VBScript和CMD调用SQL Server的备份命令及7-Zip压缩功能,可以创建一个高效、自动化的数据库备份解决方案。同时,结合Oracle备份的相关知识,我们可以为不同类型的数据库构建全面的数据保护策略。

    ms sql 2000数据库的备份与恢复(例程下载).rar_sql 2000_数据库SQL 2000

    使用这些资源,你可以更深入地了解如何在SQL Server 2000中执行备份和恢复操作,从而更好地保护你的数据。 总的来说,理解并熟练掌握SQL Server 2000的备份与恢复机制对于数据库管理员来说至关重要,它能确保在各种...

    MS SQL Server数据库Web管理.pdf

    在MS SQL Server数据库Web管理中,管理员可以通过Web界面来执行各种数据库管理任务,例如创建和管理数据库用户、管理数据库权限、监控数据库性能、执行数据库备份和恢复等。 MS SQL Server数据库Web管理的主要功能...

    计算机软件-编程源码-ms sql 2000数据库的备份与恢复(例程下载).zip

    本资源包"计算机软件-编程源码-ms sql 2000数据库的备份与恢复(例程下载).zip"显然专注于SQL Server 2000数据库的备份和恢复过程,这对于确保数据安全和业务连续性至关重要。 首先,我们来讨论数据库备份。在SQL ...

    MS SQL Server数据库数据恢复的研究.pdf

    在当今信息技术快速发展的时代,数据库...随着信息技术的持续发展和对数据库依赖性的日益增强,数据库的备份与恢复技术将变得越来越重要,并且需要不断地进行研究和创新,以适应未来更加复杂和多样化的数据恢复需求。

    数据库差异备份与恢复图解.doc

    完整备份是数据库备份的基础,它会保存数据库的所有数据,包括结构、数据和日志。在SQL Server 2005中,可以创建一个名为"ScoreCard 每月一次完全备份"的SQL Server代理作业来自动化这个过程。在作业的“步骤”选项...

    MSsql 数据库备份恢复源码

    描述中提到的“MSsql 数据库备份恢复源码”是一个程序,它支持MS SQL Server的各个版本,这意味着无论你使用的是哪个版本的SQL Server,都可以利用这个源码进行数据库的备份和恢复操作。源码的测试表明,它的运行...

    MS sql数据库检测工具

    标题提到的“MS sql数据库检测工具”就是专门针对MSSQL数据库进行健康检查的实用程序,它可以帮助我们识别和解决可能出现的问题。 描述中提到,这个工具能够检测出数据库中的哪些页存在问题。在MSSQL中,数据是存储...

    PB中对MS SQL SERVER数据库进行联接,创建、备份、恢复数据库,创建ODBC数据源

    在本文中,我们将深入探讨如何在PowerBuilder(PB)环境中与Microsoft SQL Server数据库进行交互,包括连接数据库、创建和管理数据库、备份与恢复操作以及设置ODBC数据源。这些都是在PB开发过程中至关重要的技能,...

    基于SQLServer的数据库备份与还原

    ### 基于SQL Server的数据库备份与还原 #### 一、引言 在现代信息技术领域,数据库系统作为数据管理的核心部分,在企业运营和个人信息管理中扮演着至关重要的角色。然而,无论是硬件故障还是软件错误,都可能对...

    MS SQL SERVER 全自动备份服务程序(完美版本)

    【MS SQL SERVER 全自动备份服务程序(完美版本)】是一个专为Microsoft SQL Server设计的高效备份解决方案。这个程序利用Delphi 2007开发,以实现全自动化备份流程,减轻DBA的工作负担,确保数据库的安全性。下面将...

Global site tag (gtag.js) - Google Analytics