谈对大量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数据库备份文件批量整理”文档源于网络本人编辑整理。本着保护作者知识产权的原则仅供学习交流请勿商用。如有侵犯作者权益请作者留言戒者发站内信息联系本人我将尽快删除。谢谢您的阅读与下载
最近看到群里的不少网友在搭建大数据内容网站,内容量有百万篇幅,包括图片可能有超过50GB,如果一台服务器有需要多个站点的话,那肯定默认的服务器50GB存储空间是不够用的。如果单独在购买数据盘会成本提高不少。这里我们看到腾讯云促销活动中有2款带大数据盘的套餐还是比较实惠的,一台是400GB数据盘,一台是800GB数据盘,适合他们的大数据网站。 直达链接 - 腾讯云 大数据盘套餐服务器这里我们看到当前...
在之前的一些文章中有提到HostYun商家的信息,这个商家源头是比较老的,这两年有更换新的品牌域名。在陆续的有新增机房,价格上还是走的低价格路线,所以平时的折扣力度已经是比较低的。在前面我也有介绍到提供九折优惠,这个品牌商家就是走的低价量大为主。中秋节即将到,商家也有推出稍微更低的88折。全场88折优惠码:moon88这里,整理部分HostYun商家的套餐。所有的价格目前都是原价,我们需要用折扣码...
Virmach 商家算是比较久且一直在低价便宜VPS方案中玩的不亦乐乎的商家,有很多同时期的商家纷纷关闭转让,也有的转型到中高端用户。而前一段时间也有分享过一次Virmach商家推出所谓的一次性便宜VPS主机,比如很低的价格半年时间,时间到服务器也就关闭。这不今天又看到商家有提供这样的产品。这次的活动产品包括圣何塞和水牛城两个机房,为期六个月,一次性付费用完将会取消,就这么特别的产品,适合短期玩玩...