易构空间欢迎您

SQL日志文件过大问题的解决方法

 很多独立服务器客户反馈数据库日志文件过大,严重浪费磁盘资源,数据库实际大小为600M, 日志文件实际大小为33M, 但日志文件占用空间为2.8G!!!
我们及时反馈给我们的研发部门,他们写了一个脚本,就可以将日志文件缩小到自己想要的大小了。把代码COPY到查询分析器里,,然后修改其中的3个参数(红色字体部分),运行即可(测试通过,请独立服务器客户测试)
-----
SET NOCOUNT ON

DECLARE @LogicalFileName sysname,

@MaxMinutes INT,

@NewSize INT

 

USE   data_db            -- 要操作的数据库名

SELECT  @LogicalFileName = 'data_db_log',  -- 日志文件名

@MaxMinutes = 10,               -- Limit on time allowed to wrap log.

@NewSize = 100                  -- 你想设定的日志文件的大小(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,

@TruncLog  VARCHAR(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

收藏此页】【 】【打印】【关闭窗口】  
 服务器租用 戴尔PowerEdge R720
 
价格 14000元
CPU 志强 2.2G*2 16核
内存 32G ECC效验
硬盘 STA 1TB *3/64M
带宽 5M独享
 服务器租用 戴尔PowerEdge R720
 
价格42000元
CPU 志强16核 * 2.6G
内存 128G ECC效验
硬盘 SSd 240G,4T*4
带宽 20M独享多线BGP

服务器租用

服务器租用
易构网络服务器租用,提供全新服务器,多款平台,提供全程网络,系统服务,提供2M,双线BGP独享网络资源,优惠促销中

服务器托管

服务器托管
易构网络服务器托管,电信,联通等,多线双线BGP线路资源,并赠送价值3000元的技术支持服务,免费安全设置,调试 。

云服务器

带宽独享
易构网络提供多网络资源云服务器平台,多级存储及安防策略,硬盘SSD 及SAS 高I/O并发,并提供物理机到云平台的迁移。