数据库的日志文件大小如果设定为10MB,那么超过后如何处理?

teleinfor 2007-10-23 11:32:19
如果设定日志文件大小,那么日志超过这个大小后,系统如何处理的???
...全文
190 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ruihuahan 2007-10-23
  • 打赏
  • 举报
回复
如果没有设置自动增加,数据库会挂起,不能进行数据修改操作
dawugui 2007-10-23
  • 打赏
  • 举报
回复
设置其自增长率为10%或增长值为1M。
teleinfor 2007-10-23
  • 打赏
  • 举报
回复
我不需要恢复的,是桌面应用程序的数据存储。不用考虑数据的完整性。
sp4 2007-10-23
  • 打赏
  • 举报
回复
不过数据库出现问题,恢复可就别想了
sp4 2007-10-23
  • 打赏
  • 举报
回复
不想要日志那容易的紧,将数据库的故障还原模式设置为简单即可
sp4 2007-10-23
  • 打赏
  • 举报
回复
不想要日志那容易的紧,将数据库的故障还原模式设置为简单即可
ojuju10 2007-10-23
  • 打赏
  • 举报
回复
10M太少了

超过后,需要收缩数据库!

收缩数据库代码为:

dump tran databasename with no_log
backup log databasename with no_log
dbcc shrinkdatabase(databasename)
dawugui 2007-10-23
  • 打赏
  • 举报
回复
清除日志:


DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE szwzcheck -- 要操作的数据库名
SELECT @LogicalFileName = 'szwzcheck_Log', -- 日志文件名
@MaxMinutes = 10, -- Limit on time allowed to wrap log.
@NewSize = 20 -- 你想设定的日志文件的大小(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
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

把szwzcheck换成你数据库的名字即可,在查询分析器里面运行。
有全角的空格(为了显示好看),你自己把他换一下.


收缩日志:

企业管理器--所有任务--收缩数据库--文件--选日志文件收缩
dawugui 2007-10-23
  • 打赏
  • 举报
回复
或者能否定期的清空/删除日志文件呢?
自己建立作业,定期清空日志.

--使用作业定时启停数据库的示例
IF EXISTS(SELECT * FROM msdb.dbo.sysjobs WHERE name='启用pubs数据库')
EXEC msdb.dbo.sp_delete_job @job_name='启用pubs数据库'

--定义创建作业
DECLARE @jobid uniqueidentifier
EXEC msdb.dbo.sp_add_job
@job_name = N'启用pubs数据库',
@job_id = @jobid OUTPUT

--定义作业步骤
DECLARE @sql nvarchar(400),@dbname sysname
SELECT @dbname=N'master', --数据库联机或者脱机只能在master数据库中进行
@sql=N'ALTER DATABASE pubs SET ONLINE' --使用pubs数据库联机(启用)
EXEC msdb.dbo.sp_add_jobstep
@job_id = @jobid,
@step_name = N'启用pubs数据库处理',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql

--创建调度(使用后面专门定义的几种作业调度模板)
EXEC msdb..sp_add_jobschedule
@job_id = @jobid,
@name = N'启用pubs数据库处理调度',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x1,
@freq_subday_interval=1,
@active_start_time = 075000 --每天07:50分执行

--添加目标服务器
DECLARE @servername sysname
SET @servername=CONVERT(nvarchar(128),SERVERPROPERTY(N'ServerName'))
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jobid,
@server_name = @servername

teleinfor 2007-10-23
  • 打赏
  • 举报
回复
我的目的就是想控制日志文件的大小,我的数据库对数据完整性不做要求,只想缩小空间.所以根本不想要日志.

应该如何优化???或者能否定期的清空/删除日志文件呢?

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧