谈对大量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数据库备份文件批量整理”文档源于网络本人编辑整理。本着保护作者知识产权的原则仅供学习交流请勿商用。如有侵犯作者权益请作者留言戒者发站内信息联系本人我将尽快删除。谢谢您的阅读与下载
RAKsmart发布了新年钜惠活动,即日起到2月28日,商家每天推出限量服务器秒杀,美国服务器每月30美元起,新上了韩国服务器、GPU服务器、香港/日本/美国常规+站群服务器、1-10Gbps不限流量大带宽服务器等大量库存;VPS主机全场提供7折优惠码,同时针对部分特惠套餐无码直购每月仅1.99美元,支持使用PayPal或者支付宝等方式付款,有中英文网页及客服支持。爆款秒杀10台/天可选精品网/大...
全球领先的IDC服务商华纳云“美国服务器”正式发售啦~~~~此次上线的美国服务器包含美国云服务器、美国服务器、美国高防服务器以及美国高防云服务器。针对此次美国服务器新品上线,华纳云也推出了史无前例的超低活动力度。美国云服务器低至3折,1核1G5M低至24元/月,20G DDos防御的美国服务器低至688元/月,年付再送2个月,两年送4个月,三年送6个月,且永久续费同价,更多款高性价比配置供您选择。...
v5.net一直做独立服务器这块儿的,自从推出云服务器(VPS)以来站长一直还没有关注过,在网友的提醒下弄了个6G内存、2核、100G SSD的美国云服务器来写测评,主机测评给大家趟雷,让你知道v5.net的美国云服务器效果怎么样。本次测评数据仅供参考,有兴趣的还是亲自测试吧! 官方网站:https://v5.net/cloud.html 从显示来看CPU是e5-2660(2.2GHz主频),...