您好,欢迎来到思海网络,我们将竭诚为您提供优质的服务! 诚征网络推广 | 网站备案 | 帮助中心 | 软件下载 | 购买流程 | 付款方式 | 联系我们 [ 会员登录/注册 ]
促销推广
客服中心
业务咨询
有事点击这里…  531199185
有事点击这里…  61352289
点击这里给我发消息  81721488
有事点击这里…  376585780
有事点击这里…  872642803
有事点击这里…  459248018
有事点击这里…  61352288
有事点击这里…  380791050
技术支持
有事点击这里…  714236853
有事点击这里…  719304487
有事点击这里…  1208894568
有事点击这里…  61352289
在线客服
有事点击这里…  531199185
有事点击这里…  61352288
有事点击这里…  983054746
有事点击这里…  893984210
当前位置:首页 >> 技术文章 >> 文章浏览
技术文章

SQL SERVER2000备份和恢复存储过程

添加时间:2014-10-23 2:05:13  添加: 思海网络 
/*备份数据库的过程*/ 
if exists( 
 select * from sysobjects 
  where name=’pr_backup_db’ and xtype=’p’ 
          ) 
begin 
 drop proc pr_backup_db 
end 
go 
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 
说明:pr_backup_db过程是备份你的数据库 
  
  
/*创建函数,得到文件得路径*/ 
if exists( 
 select * from sysobjects 
  where name=’fn_GetFilePath’ and xtype=’fn’ 
        ) 
begin 
 drop function fn_GetFilePath 
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 

/*恢复数据库的过程*/ 
if exists( 
 select * from sysobjects 
  where name=’pr_restore_db’ and xtype=’p’ 
          ) 
begin 
 drop proc pr_restore_db 
end 
go 
CREATE  proc pr_restore_db     
@flag varchar(20) out,    /*过程运行的状态标志,是输入参数*/       
@restore_db_name nvarchar(128),  /*要恢复的数据名字*/ 
@filename nvarchar(260)         /*备份文件存放的路径+备份文件名字*/ 
as 
declare @proc_result tinyint  /*返回系统存储过程xp_cmdshell运行结果*/ 
declare @loop_time smallint  /*循环次数*/ 
declare @max_ids smallint    /*@tem表的ids列最大数*/ 
declare @file_bak_path nvarchar(260)  /*原数据库存放路径*/ 
declare @flag_file bit   /*文件存放标志*/ 
declare @master_path nvarchar(260)  /*数据库master文件路径*/ 
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 
 IF (@proc_result<>0)  /*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/ 
 begin 
  select @flag=’not exist’   /*备份文件不存在*/ 
  return  /*退出过程*/ 
 end 
 /*创建临时表,保存由备份集内包含的数据库和日志文件列表组成的结果集*/ 
 create table #tem( 
     LogicalName nvarchar(128), /*文件的逻辑名称*/ 
     PhysicalName nvarchar(260) , /*文件的物理名称或操作系统名称*/ 
     Type char(1),  /*数据文件 (D) 或日志文件 (L)*/ 
     FileGroupName nvarchar(128), /*包含文件的文件组名称*/ 
     [Size] numeric(20,0),  /*当前大小(以字节为单位)*/ 
     [MaxSize] numeric(20,0)  /*允许的最大大小(以字节为单位)*/ 

   )

关键字:SQL SERVER、数据库、存储过程

分享到:

顶部 】 【 关闭
版权所有:佛山思海电脑网络有限公司 ©1998-2024 All Rights Reserved.
联系电话:(0757)22630313、22633833
中华人民共和国增值电信业务经营许可证: 粤B1.B2-20030321 备案号:粤B2-20030321-1
网站公安备案编号:44060602000007 交互式栏目专项备案编号:200303DD003  
察察 工商 网安 举报有奖  警警  手机打开网站