天天看点

python收缩SQL Server事务日志

开发测试环境日志文件没有定期维护,越来越大,甚至比数据文件还大,所以定期进行日志收缩:

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))
           

注意:日志收缩后,事务日志备份失败,通过执行一次全备或差异备份解压。