导航:首页 > 文件处理 > 数据库日志自动压缩

数据库日志自动压缩

发布时间:2024-11-24 20:00:21

‘壹’ sql收缩数据库日志的几种办法

在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL,

方法一:

--BigData为数据库名
DUMPTRANSACTIONBigDataWITHNO_LOG
BACKUPLOGBigDataWITHNO_LOG
DBCCSHRINKDATABASE(BigData)

执行以上语句可以快速压缩日志文件到1M。

但是以上语句中前两行在SQL Server 2008下无法执行 ,

第一行提示“Incorrect syntax near the keyword 'TRANSACTION'.”

第二行提示“One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. ”

第三行可以执行。但日志log文件没有任何变化。

原来SQL Server 2008已经不再支持DUMPTRANSACTION和BACKUP LOG WITH NO_LOG,

sql Server 2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。

SQL Server 2008说明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止。使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。

方法二:

useDB_NAME
sp_dboptionDB_NAME,"trunc.logonchkpt.",true
checkpoint
sp_dboptionDB_NAME,"autoshrink",true

方法三:(请提前备份文件!!)

  1. Detach数据库。

  2. 删除log文件。

  3. 附加数据库,选移除log文件,此时SQL Server 会自动重新建立一个512K 的Log 文件。

方法四:

USEBigData;
GO
BACKUPLOGDATABASENAMETODISK='d: est.bak'
--.
DBCCSHRINKFILE(Bigdata_Log,1);
GO

‘贰’ MSSQL数据库日志的压缩与清除技巧


一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大:
1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server--SQL Server组--双击打开你的服务器--双击打开数据库目录--选择你的数据库名称(如论坛数据库Forum)--然后点击右键选择属性--选择选项--在故障橘罩答还原的模式中选择"简单",然后按确定保存。
2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用闷册调整,直接点确定。
3、收缩数据库圆慧完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据。
方法二
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE
tablename
-- 要操作的数据库名
SELECT@LogicalFileName = 'tablename_log',-- 日志文件名
@MaxMinutes = 10,
-- Limit on time allowed to wrap log.
@NewSize = 1
-- 你想设定的日志文件的大小(M)
-- Setup / initialize
DECLARE @OriginalSize int
SELECT @OriginalSize = size
FROM sysfiles
WHERE name = @LogicalFileName
SELECT 'Original Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
CREATE TABLE DummyTrans
(DummyColumn char (8000) not null)
DECLARE @Counter
INT,
@StartTime DATETIME,
@TruncLogVARCHAR(255)
SELECT@StartTime = GETDATE(),
@TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE
@MaxMinutes
DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024)
@NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
WHILE((@Counter
@OriginalSize / 16) AND (@Counter
50000))
BEGIN -- update
INSERT DummyTrans VALUES ('Fill Log')
DELETE DummyTrans
SELECT @Counter = @Counter + 1
END
EXEC (@TruncLog)
END
SELECT 'Final Size of ' + db_name() + ' LOG is ' +
CONVERT(VARCHAR(30),size) + ' 8K pages or ' +
CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
FROM sysfiles
WHERE name = @LogicalFileName
DROP TABLE DummyTrans
SET NOCOUNT OFF

阅读全文

与数据库日志自动压缩相关的资料

热点内容
橙光制作器档案框在哪个文件夹 浏览:989
php如何抓取网页数据 浏览:640
计数器单片机 浏览:964
游戏aoi算法 浏览:844
phpmysqlint 浏览:912
怎么从appstore商城买东西 浏览:184
大秀直播平台源码 浏览:424
java视屏 浏览:934
电脑中如何给程序加密 浏览:240
java排序容器 浏览:942
职称证书在哪个app下载 浏览:362
四九算法算男女 浏览:659
javawindows8 浏览:496
2021世界程序员节 浏览:484
php翼支付 浏览:882
盈通服务器ip地址 浏览:789
3des算法的c语言实现 浏览:873
网上怎样购买服务器地址 浏览:814
新氧app都在哪个城市 浏览:731
十二大加密货币图片 浏览:315