天天看點

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

注意:日志收縮後,事務日志備份失敗,通過執行一次全備或差異備份解壓。