谈对大量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数据库备份文件批量整理”文档源于网络本人编辑整理。本着保护作者知识产权的原则仅供学习交流请勿商用。如有侵犯作者权益请作者留言戒者发站内信息联系本人我将尽快删除。谢谢您的阅读与下载
对于如今的云服务商的竞争着实很激烈,我们可以看到国内国外服务商的各种内卷,使得我们很多个人服务商压力还是比较大的。我们看到这几年的服务商变动还是比较大的,很多新服务商坚持不超过三个月,有的是多个品牌同步进行然后分别的跑路赚一波走人。对于我们用户来说,便宜的服务商固然可以试试,但是如果是不确定的,建议月付或者主力业务尽量的还是注意备份。HostYun 最近几个月还是比较活跃的,在前面也有多次介绍到商...
Hostodo发布了几款采用NVMe磁盘的促销套餐,从512MB内存起,最低年付14.99美元,基于KVM架构,开设在拉斯维加斯机房。这是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,产品性能一般,数据中心目前在拉斯维加斯和迈阿密,支持使用PayPal或者支付宝等付款方式。下面列出几款NVMe硬盘套餐配置信息。CPU:1core内存:512MB...
触摸云触摸云(cmzi.com),国人商家,有IDC/ISP正规资质,主营香港线路VPS、物理机等产品。本次为大家带上的是美国高防2区的套餐。去程普通线路,回程cn2 gia,均衡防御速度与防御,防御值为200G,无视UDP攻击,可选择性是否开启CC防御策略,超过峰值黑洞1-2小时。最低套餐20M起,多数套餐为50M,适合有防御型建站需求使用。美国高防2区 弹性云[大宽带]· 配置:1-16核· ...