开发测试环境日志文件没有定期维护,越来越大,甚至比数据文件还大,所以定期进行日志收缩:
def shrinklog(ip,mark):
ms = MSSQL(host=ip,user="dumper",pwd="123456",db="master")
# 要收缩数据库
query = "SELECT name FROM Master..SysDatabases Where dbid >6"
dblist = ms.ExecQuery(query)
for db in dblist:
dbname = db[0]
# 收缩语句
sql = "USE [%s] ; ALTER DATABASE [%s] SET RECOVERY SIMPLE ;DBCC SHRINKFILE (2, 500) ;ALTER DATABASE [%s] SET RECOVERY FULL;"%(dbname,dbname,dbname)
print(sql)
# 执行语句
ms.ExecNonQuery(sql)
logging.info("Shrink log for %s %s"%(ip,dbname))
注意:日志收缩后,事务日志备份失败,通过执行一次全备或差异备份解压。