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

2016-01-29 16:44 8 1 收藏

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

【 tulaoshi.com - SQLServer 】

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(10) out,
@backup_db_name varchar(128),
@filename varchar(1000)  --路径+文件名字
as
declare @sql nvarchar(4000),@par nvarchar(1000)
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'
go

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

 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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/sqlserver/)

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(4000)
/*
判断参数@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)  /*允许的最大大小(以字节为单位)*/
   )
 /*
 创建表变量,表结构与临时表基本一样
 就是多了两列,
 列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)
 &nbs

来源:http://www.tulaoshi.com/n/20160129/1499431.html

延伸阅读
标签: ASP
  51windows(原作) 一个用asp备份与恢复SQL Server数据库的例子代码,希望对一些朋友有用。(注意:数据库使用中可能无法恢复) <HTML<HEAD<TITLESQL Server 数据库的备份与恢复</TITLE<meta http-equiv="Content-Type" content="text/html; charset=gb2312"</HEAD<BODY<form method="post" name=myform选择...
   2.1 基本知识     Oracle 的  SQL* LOADER  可以将外部格式化的文本数据加载到数据库表中。通常 与 SPOOL导出文本数据方法配合使用。     1.命令格式     SQLLDR keyword=value [,keyword=value,……]     例:$ sqlldr user/pwd control=emp.ctl d...
标签: ASP
  选择自 hanghwp 的 Blog 1、ASP中怎么实现SQL数据库备份、恢复! 答:asp在线备份sql server数据库: 1、备份 <% SQL="backup database 数据库名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'" set cnn=Server.createobject("adodb.connection") cnn.open "driver={SQL Server};Server=服务器名...
代码如下: /*  数据库分页存储过程,支持倒序和升序  参数说明:    @tablename:为搜索表名    @tablefield:为表的字段,约定为表的主键,    @where:为搜索表名,要显示所有记录请设为"1=1"    @orderby:为搜索结果排序,如order by id des...
标签: SQLServer
第一种,最简单。 1、启动SQL服务器 2、打开企业管理器 3、进入你服务器下“管理”,启动“SQL Server代理”,如果这个启动不了的话什么都不能做。 4、进入“管理”下的“数据库维护计划” 5、右键,“新建维护计划” 6、下一步 7、选择你要备份的数据库,下一步 8、下一步 9、下一步 10、点“更改”,详细设定你要备份的周...

经验教程

826

收藏

16
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部