一.MS SQL SERVER 2005
--1.清空日记
exec('DUMP TRANSACTION 数据库名 WITH NO_LOG')
--2.截断事件日记:
exec('BACKUP LOG 数据库名 WITH NO_LOG')
--3.紧缩数据库文件(假如不紧缩,数据库的文件不会减小
exec('DBCC SHRINKDATABASE(数据库名) ')
--4.设置自动紧缩
exec('EXEC sp_dboption 数据库名,autoshrink,TRUE')
二.MS SQL SERVER 2008 &2008r2 &2012 &2016
--在SQL2008中消灭日记就必须在简朴形式下举行,等消灭行动终了再调回到完全形式。 USE [master] GO ALTER DATABASE 数据库名 SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE 数据库名 SET RECOVERY SIMPLE --简朴形式 GO USE 数据库名 GO --crm50sp1_log 为数据库日记文件逻辑名 DBCC SHRINKFILE (N'crm50sp1_log' , 11, TRUNCATEONLY) GO USE [master] GO ALTER DATABASE 数据库名 SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE 数据库名 SET RECOVERY FULL --还原为完全形式 GO
三. 日记文件非常大没法紧缩的题目
假如日记文件非常大,且紧缩的时刻没法紧缩,这个时刻,须要检察是不是有未提交或者回滚的事件
实行DBCC OPENTRAN 敕令,检察是不是有很早运转的事件(音讯中显现的有事件最先时候),显现出来的都示意该事件没有提交或回滚所以一向致使MinLSN没法前滚。
假如有这类的话,能够两种要领,一经由过程信息显现的历程号,杀掉该历程。kill 历程号;(固然重启SQL效劳也行,假如许可停机操纵的话);
假如没有长时候未封闭的事件, 简朴形式: 先备份数据库,然后实行BACKUP LOG 数据库称号 WITH NO_LOG 完全形式: 假如没有举行过完全备份,先举行一次完全备份,然后再备份日记文件,末了实行 DBCC SHRINKFILE (N'日记文件逻辑称号' , 0, TRUNCATEONLY)只紧缩日记文件
日记文件逻辑称号经由过程以下语句能够获得 USE erp数据库 go SELECT [name] FROM sys.database_files WHERE type_desc='LOG'
相干引荐:
关于Mysql事件性
php 怎样运用Mysql事件实例代码
MySQL事件处理实例解说
以上就是处理Mysql紧缩事件日记及题目处理办法的细致内容,更多请关注ki4网别的相干文章!