This Domain(Admin5.com) is for Sale:

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

时间:2007-12-23  来源:不详  作者:迈克DB
/*备份数据库的过程*/
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
CREATEprocpr_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
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=’notexist’/*备份文件不存在*/
return/*退出过程*/
end
/*创建临时表,保存由备份集内包含的数据库和日志文件列表组成的结果集*/
createtable#tem(
LogicalNamenvarchar(128),/*文件的逻辑名称*/
PhysicalNamenvarchar(260),/*文件的物理名称或操作系统名称*/

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息