谈对大量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数据库备份文件批量整理”文档源于网络本人编辑整理。本着保护作者知识产权的原则仅供学习交流请勿商用。如有侵犯作者权益请作者留言戒者发站内信息联系本人我将尽快删除。谢谢您的阅读与下载
螢光云官網萤光云成立于2002年,是一家自有IDC的云厂商,主打高防云服务器产品。在国内有福州、北京、上海、台湾、香港CN2节点,还有华盛顿、河内、曼谷等海外节点。萤光云的高防云服务器自带50G防御,适合高防建站、游戏高防等业务。本次萤光云中秋云活动简单无套路,直接在原有价格上砍了一大刀,最低价格16元/月,而且有没有账户限制,新老客户都可以买,就是直接满满的诚意给大家送优惠了!官网首页:www....
提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...
近日Friendhosting发布了最新的消息,新上线了美国迈阿密的云产品,之前的夏季优惠活动还在进行中,全场一次性45折优惠,最高可购买半年,超过半年优惠力度就不高了,Friendhosting商家的优势就是100Mbps带宽不限流量,有需要的朋友可以尝试一下。Friendhosting怎么样?Friendhosting服务器好不好?Friendhosting服务器值不值得购买?Friendho...