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

taogege203354

taogege203354

2016-01-29 16:44

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

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

 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

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

go

(本文来源于图老师网站,更多请访问https://m.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

展开更多 50%)
分享

猜你喜欢

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

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

SQL Server数据库备份和恢复措施

SQLServer
SQL Server数据库备份和恢复措施

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

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

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

Sql Server数据库的备份和恢复措施

SQLServer
Sql Server数据库的备份和恢复措施

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL server 2008 数据安全(备份和恢复数据库)

编程语言 网络编程
SQL server 2008 数据安全(备份和恢复数据库)

剖析SQL Server数据库扩展存储过程

SQLServer
剖析SQL Server数据库扩展存储过程

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

保卫你的SQL Server数据库

保卫你的SQL Server数据库

SQL服务器外网IP测试故障解决

SQL服务器外网IP测试故障解决
下拉加载更多内容 ↓