谈对大量SQL数据库备份文件批量整理
文档信息
主题 关于IT计算机中的Python”的参考范文。
属性 Doc-027JL9doc格式正文2693字。质优实惠欢迎下载
谈对大量SQL数据库备份文件批量整理
2016年3月11日湖北省荆门市审计局许方义同志在审计署网站“理论探讨”栏目发表的《浅谈审计大数据分析快速定位表及字段方法》 引起了笔者的共鸣。本人刚好也参加了今年年初署里统一安排的地方财政信息系统数据采集工作。当时县市 、区级的财政报送的信息系统有一半都是扩展名为bak的SQL数据库备份文件地区合计有近800多个。
地区汇总接收人员即要验证备份文件能否还原又要对数据库及文件的命名规范迚行检查发现不符合规范的备份文件还要按通知要求更改。如果手工一个一个的还原检查耗时耗力难以完成。编写存储过程让计算机自行批量检查并完成数据库与备份同名的工作达到事半功倍的效果。
首先定义存储过程createPROCPROC_RESTORE_BACKUP
@DIRECTORYNVARCHAR(1000) --bak文件所在路径变量
@PREDSTDIRECTORYNVARCHAR(600)–还原后数据库的存放路径变量
AS
DECLARE@DBNAMENVARCHAR(600)
SET@DBNAME=SUBSTRING(@DIRECTORY LEN(@DIRECTORY)-CHARINDEX(
REVERS E(@DIRECTO RY))+2 CHARIN D EX('\'
REVERS E(@DIRECTO RY))-5)
CREATEtable#FILELISTINFO---定义临时表存放
RESTOREFILELISTONLY读出的信息
LOGICALNAMENVARCHAR(128)NULL
PHYSICALNAMENVARCHAR(260)NULL
TYPECHAR(1)NULL
FILEGROUPNAMENVARCHAR(128)NULL
FILESIZEBIGINTNULL
FILEMAXSIZEBIGINTNULL
FILEIDBIGINT
CREATELSNNUMERIC(25 0)
DROPLSNNUMERIC(25 0)NULL
UNIQUEIDUNIQUEIDENTIFIER
READONLYLSNNUMERIC(25 0)NULL
READWRITELSNNUMERIC(25 0)NULL
BACKUPSIZEINBYTESBIGINT
SOURCEBLOCKSIZEINT
FILEGROU PIDINT
LOGGROUPGUIDUNIQUEIDENTIFIERNULL DIFFERENTIALBASELSNNUMERIC(25 0)NULL DIFFERENTIALBASEGUIDUNIQUEIDENTIFIERISREADONLYBIT
ISPRESENTBIT
TDETHUMBPRINTNVARCHAR(200)
DECLARE@FILELISTSQLVARCHAR(8000)
SET@FILELISTSQL='RESTOREFILELISTONLYFROMDISK=' ' '+@DIRECTO RY+'
INSERTINTO#FILELISTINFOEXEC(@FILELISTSQL)
DECLARE@DLNAMENVARCHAR(128)
@DPNAMENVARCHAR(260)--数据文件
DECLARE@LLNAMENVARCHAR(128)
@LPNAMENVARCHAR(260)--逻辑文件
SELECT@DLNAME=LOGICALNAME
@DPNAME=PHYSICALNAMEFROM#FILELISTINFOWHERETYPE='D'SELECT@LLNAME=LOGICALNAME
@LPNAME=PHYSICALNAMEFROM#FILELISTINFOWHERETYPE='L'DECLARE@TODATAFILENVARCHAR(1000)
@TOLOGFILENVARCHAR(1000)
SET@TODATAFILE=@PREDSTDIRECTORY+@DBNAME+'.MDF'SET@TOLOGFILE=@PREDSTDIRECTORY+@DBNAM E+'
B EGINT RY
--还原数据库生成MDF LDF文件与原BAK文件同名
RESTOREDATABASE@DBNAM E
FROM DISK=@DIRECTORY
WITHMOVE@DLNAMETO@TODATAFILE
MOVE@LLNAMETO@TOLOGFILE
REPLACE
--备份现数据库产生的备份文件将覆盖原BAK文件
BACKUPDATABASE@DBNAME
TODISK=@DIRECTORY
WITHFO RMAT
ENDTRY
BEGINCATCH
SELECT'
SELECT'ERROR!@'+@DIRECTORY+'@'+ERROR_MESSAGE()--发生错误提示
ENDCATCH
DROPtable#FILELISTINFO
GO
接下来通过设定好的两个变量利用游标遍历所设路径的文件完成想要的工作。
USEtest--打开事先建好的数据库declare@strPathasvarchar(50)declare@aasvarchar(200)set@strPath='D:\bak文件'--bak文件所在的目录
SETNOCOUNTON--调用存储过程不返回计数declare@Fi leListtable(idintidentity(1 1)primarykeyfi l lnamevarchar(200) deathint isfi leint)insertinto@Fi leList
@strPath 1 1
DECLARE@FILENAMENVARCHAR(600)
DECLARECRBAKLISTCURSORFOR
SELECT[fi l lname]FROM@Fi leList
OPENCRBAKLIST
FETCHNEXTFROMCRBAKLISTINTO@FILENAM E
WHILE@@FETCH_STATUS=0
BEGINprint@strPath+'\'+@FILENAMEset@a=@strPath+'\'+@FILENAME
EXECPROC_RESTORE_BACKUP@a 'D:\backup\'--存放还原后数据库的路径
FETCHNEXTFROMCRBAKLISTINTO@FILENAM E
END
CLOSECRBAKLIST
DEALLOCATECRBAKLIST
执行结果为原sql数据库文件被自动完成还原、改名、重新备份覆盖原文件等操作操作过程中某个文件发生错误产生提示。
通过这个脚本可以达到对大量SQL数据库备份文件批量整理的目的。庞子涛
“谈对大量SQL数据库备份文件批量整理”文档源于网络本人编辑整理。本着保护作者知识产权的原则仅供学习交流请勿商用。如有侵犯作者权益请作者留言戒者发站内信息联系本人我将尽快删除。谢谢您的阅读与下载
819云互联是海外领先的互联网业务平台服务提供商。专注为用户提供低价高性能云计算产品,致力于云计算应用的易用性开发,并引导云计算在国内普及。目前平台研发以及运营云服务基础设施服务平台(IaaS),面向全球客户提供基于云计算的IT解决方案与客户服务,拥有丰富的海外资源、香港,日本,美国等各国优质的IDC资源。官方网站:https://www.819yun.com香港特价物理服务器:地区CPU内存带宽...
819云互联 在本月发布了一个购买香港,日本独立服务器的活动,相对之前的首月活动性价比更高,最多只能享受1个月的活动 续费价格恢复原价 是有些颇高 这次819云互联与机房是合作伙伴 本次拿到机房 活动7天内购买独立服务器后期的长期续费价格 加大力度 确实来说这次的就可以买年付或者更长时间了…本次是5个机房可供选择,独立服务器最低默认是50M带宽,不限制流量,。官网:https://ww...
Pia云这个商家的云服务器在前面也有介绍过几次,从价格上确实比较便宜。我们可以看到最低云服务器低至月付20元,服务器均采用KVM虚拟架构技术,数据中心包括美国洛杉矶、中国香港、俄罗斯和深圳地区,这次春节活动商家的活动力度比较大推出出全场6.66折,如果我们有需要可以体验。初次体验的记得月付方案,如果合适再续约。pia云春节活动优惠券:piayun-2022 Pia云服务商官方网站我们一起看看这次活...