WEB开发网
开发学院数据库MSSQL Server SQL Server日志清除两种方法 阅读

SQL Server日志清除两种方法

 2007-12-25 23:43:37 来源:WEB开发网   
核心提示:·sql server(WINDOWS平台上强大的数据库平台) 存储过程分页·列出 sql server(WINDOWS平台上强大的数据库平台) 数据库中所有的存储·sql server(WINDOWS平台上强大的数据库平台) SQL语句导入导出大全·sql server(WINDOWS平台上强大的数据库平台) SQL
    ·sql server(WINDOWS平台上强大的数据库平台) 存储过程分页
    ·列出 sql server(WINDOWS平台上强大的数据库平台) 数据库中所有的存储
    ·sql server(WINDOWS平台上强大的数据库平台) SQL语句导入导出大全
    ·sql server(WINDOWS平台上强大的数据库平台) SQL语句调优技巧
    ·sql server(WINDOWS平台上强大的数据库平台) 事务日志
    ·从sql server(WINDOWS平台上强大的数据库平台) 向Oracle(大型网站数据库平台) 8迁移的技术实
    ·sql server(WINDOWS平台上强大的数据库平台) 中死锁产生的原因及解决办
    ·重建索引提高sql server(WINDOWS平台上强大的数据库平台)性能
    ·[收藏]利用sql server(WINDOWS平台上强大的数据库平台) Reporting Serv
    ·sql server(WINDOWS平台上强大的数据库平台) 存储过程的分页方案比拼
方法一

一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大。

1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft sql server(WINDOWS平台上强大的数据库平台)-->sql server(WINDOWS平台上强大的数据库平台)组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如论坛数据库Forum)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存

2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定

3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据。

方法二

SET NOCOUNT ONDECLARE @LogicalFileName sysname,@MaxMinutes INT,@NewSize INTUSE tablename -- 要操作的数据库名SELECT @LogicalFileName = ’tablename_log’, -- 日志文件名@MaxMinutes = 10, -- Limit on time allowed to wrap log.@NewSize = 1 -- 你想设定的日志文件的大小(M)-- Setup / initializeDECLARE @OriginalSize intSELECT @OriginalSize = sizeFROM sysfilesWHERE name = @LogicalFileNameSELECT ’Original Size of ’ + db_name() + ’ LOG is ’ +CONVERT(VARCHAR(30),@OriginalSize) + ’ 8K pages or ’ +CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + ’MB’FROM sysfilesWHERE name = @LogicalFileNameCREATE 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 expiredAND @OriginalSize = (SELECT size FROM     sysfiles WHERE name = @LogicalFileName)AND (@OriginalSize * 8 /1024) > @NewSizeBEGIN -- Outer loop.SELECT @Counter = 0WHILE ((@Counter < @OriginalSize / 16) AND            (@Counter < 50000))BEGIN -- updateINSERT DummyTrans VALUES (’Fill Log’)DELETE DummyTransSELECT @Counter = @Counter + 1ENDEXEC (@TruncLog)ENDSELECT ’Final Size of ’ + db_name() + ’ LOG is ’ +CONVERT(VARCHAR(30),size) + ’ 8K pages or ’ +CONVERT(VARCHAR(30),(size*8/1024)) + ’MB’FROM sysfilesWHERE name = @LogicalFileNameDROP TABLE DummyTransSET NOCOUNT OFF


(完)

1 2 3 4 5 6  下一页

Tags:SQL Server 日志

编辑录入:coldstar [复制链接] [打 印]
赞助商链接