SQLSERVER2000备份和恢复存储过程(加强版本)

来源:互联网 发布:dell网络驱动下载 编辑:程序博客网 时间:2024/06/05 15:39
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

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

我自己写的2个过程和一个函数,用于SQLSERVER2000数据库备份和恢复
拿出来和大家交流一下,过程和函数的详细说明在代码中
谢谢


/*备份数据库的过程*/
ifexists(
 select*fromsysobjects
  wherename='pr_backup_db'andxtype='p'
         )
begin
 dropprocpr_backup_db
end
go

createprocpr_backup_db
@flagvarchar(20)out,
@backup_db_namevarchar(128),
@filenamevarchar(1000) --路径+文件名字
as
declare@sqlnvarchar(4000),@parnvarchar(1000)
ifnotexists(
 select*frommaster..sysdatabases
  wherename=@backup_db_name
  )
begin
 select@flag='dbnotexist' /*数据库不存在*/
 return
end
else
begin
 ifright(@filename,1)<>'/'andcharindex('/',@filename)<>0
 begin
  select@par='@filenamevarchar(1000)'
  select@sql='BACKUPDATABASE'+@backup_db_name+'todisk=@filenamewithinit'
  executesp_executesql@sql,@par,@filename
  select@flag='ok' 
  return
 end
 else
 begin
  select@flag='filetypeerror' /*参数@filename输入格式错误*/
  return
 end
end

GO

说明:pr_backup_db过程是备份你的数据库

 

 

/*创建函数,得到文件得路径*/
ifexists(
 select*fromsysobjects
  wherename='fn_GetFilePath'andxtype='fn'
       )
begin
 dropfunctionfn_GetFilePath
end
go

createfunctionfn_GetFilePath(@filenamenvarchar(260))
returnsnvarchar(260)  
as
begin
 declare@file_pathnvarchar(260)
 declare@filename_reversenvarchar(260)
 select@filename_reverse=reverse(@filename)
 select@file_path=substring(@filename,1,len(@filename)+1-charindex('/',@filename_reverse))
 return@file_path
end


GO


/*恢复数据库的过程*/
ifexists(
 select*fromsysobjects
  wherename='pr_restore_db'andxtype='p'
         )
begin
 dropprocpr_restore_db
end
go

CREATE procpr_restore_db   
@flagvarchar(20)out,   /*过程运行的状态标志,是输入参数*/     
@restore_db_namenvarchar(128), /*要恢复的数据名字*/
@filenamenvarchar(260)        /*备份文件存放的路径+备份文件名字*/
as
declare@proc_resulttinyint /*返回系统存储过程xp_cmdshell运行结果*/
declare@loop_timesmallint /*循环次数*/
declare@max_idssmallint   /*@tem表的ids列最大数*/
declare@file_bak_pathnvarchar(260) /*原数据库存放路径*/
declare@flag_filebit  /*文件存放标志*/
declare@master_pathnvarchar(260) /*数据库master文件路径*/
declare@sqlnvarchar(4000),@parnvarchar(1000)
declare@sql_subnvarchar(4000)
declare@sql_cmdnvarchar(100)
declare@sql_killnvarchar(100)
/*
判断参数@filename文件格式合法性,以防止用户输入类似d:或者c:/a/等非法文件名
参数@filename里面必须有'/'并且不以'/'结尾
*/
ifright(@filename,1)<>'/'andcharindex('/',@filename)<>0共4页  第1页   
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
原创粉丝点击