社区
MS-SQL Server
帖子详情
如何限定SQL SERVER数据库的日志为固定大小?日志满了后会继续循环使用么?不会不能操作数据库了吧!
teleinfor
2008-04-02 09:10:08
如何限定SQL SERVER数据库的日志为固定大小?日志满了后会继续循环使用么?不会不能操作数据库了吧!
...全文
354
4
打赏
收藏
如何限定SQL SERVER数据库的日志为固定大小?日志满了后会继续循环使用么?不会不能操作数据库了吧!
如何限定SQL SERVER数据库的日志为固定大小?日志满了后会继续循环使用么?不会不能操作数据库了吧!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
teleinfor
2008-04-02
打赏
举报
回复
果然如此啊!我限定了日志log大小,结果不能导入数据了!晕死。。。。
因为我操作数据库都是通过客户的应用程序进行,开放给用户也就是一个应用软件,他不需要关注数据库。关键是我如何通过程序控制收缩log哪???? 急啊。。。
dawugui
2008-04-02
打赏
举报
回复
清除日志:
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
2008-04-02
打赏
举报
回复
[Quote=引用楼主 teleinfor 的帖子:]
如何限定SQL SERVER数据库的日志为固定大小?日志满了后会继续循环使用么?不会不能操作数据库了吧!
[/Quote]
一般其增长要设置为按多少比例或多少M来管理日志.
如果限制其值,日志满了后不能循环使用.可尝试清除或压缩日志.
JL99000
2008-04-02
打赏
举报
回复
一般建立数据库时会设定数据库日志的大小以及当日志要满的时候采取的增长策略
如果不让日志文件增长,那么满了以后sql server将抱错,也就是不能再操作数据库了
SQL
Server
中怎么查看每个
数据库
的
日志
大小
,以及怎么确定
数据库
的
日志
文件,怎么用语句收缩
日志
文件...
一,找到每个
数据库
的
日志
文件
大小
SQL
Server
:查看
SQL
日志
文件
大小
命令:dbcc
sql
perf(logspace) DBA 日常管理工作中,很重要一项工作就是监视
数据库
文件
大小
,及
日志
文件
大小
。如果你管理
数据库
的有很多的话,每天一个一个
数据库
的去查看文件
大小
就太费神了,那就写个
SQL
脚本吧,放到
SQL
Agent 中,每天自动去查看各个
数据库
文件及
日志
文件的
大小
,然后...
SQL
Server
事务
日志
已
满
的解决方案
我们安装
数据库
后,系统会默认把
数据库
文件和
数据库
日志
文件最大设为500MB,当然你中途可以更改这个限制。当
日志
文件接近最大值时,
继续
使用
数据库
会提示:事务
日志
已
满
。解决这个问题,有3种方案: 第一种解决方案:在
数据库
上点击右键 → 选择 属性 → 选择 文件,然后增加
数据库
日志
文件的文件
大小
第二种解决方案:手动收缩
日志
文件。 一、准备知识1、LSNLSN用来标识特定
日志
在
日志
文件中位置(详情请见什么是LSN:
日志
序列号),它由两部分组成:一部分用来标识VLF(虚拟
日志
文件)的序列号,剩下的用来标识该
日志
SQL
SERVER
数据库
删除LOG文件和清空
日志
的方案
数据库
在
使用
过程中会使
日志
文件不断增加,使得
数据库
的性能下降,并且占用大量的磁盘空间。
SQL
Server
数据库
都有log文件,log文件记录用户对
数据库
修改的
操作
。可以通过直接删除log文件和清空
日志
在清除
数据库
日志
。 一、删除LOG 1、分离
数据库
。分离
数据库
之前一定要做好
数据库
的全备份,选择
数据库
——右键——任务——分离。 勾选删除连接 分离后
sql
server
数据库
收缩
日志
并限制最大增长
问题: 企业登录OA网址提示磁盘空间不足,发现C盘
满
分析: 查看系统
日志
数据库
'*****' 的事务
日志
已
满
。若要查明无法重用
日志
中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。 1 查看各
数据库
的
大小
与存放位置 选中
数据库
--属性 \ select * from sys.sysfiles 发现
日志
文件
Sql
Server
数据库
恢复和
日志
文件的详细介绍
1、正确认识
日志
文件。 一个
Sql
Server
数据库
最少要包含一个mdf数据文件和一个ldf
日志
文件。 mdf文件中包含了所有的
数据库
对象和数据,例如表、存储过程、用户信息等等。 ldf文件中包含(或者曾经包含)了
数据库
的所有事务
日志
,但是不要指望仅仅通过ldf
日志
文件来恢复
数据库
!! 例如,想通过ldf文件和以前的完全备份将数据恢复到某个时间点,或者由于某些原因只剩下了ldf
日志
文件,想
MS-SQL Server
34,594
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章