令人頭痛的數據庫log文件,長得太快了(100分)

  • 主题发起人 delphiprogramer
  • 开始时间
D

delphiprogramer

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手請幫我想想辦法吧.你們的數據庫的怎樣控制數據庫的大小的?
我的數據庫mdf文件還不到500MB,而我的數據庫ldf日志文件在不到1小時的時間,從3MB長到了3.5GB.
就這樣我的數據庫用完了,程序無法運行了.于是我把數據庫備份后,刪除這個數據庫,再重新
恢復.但是在不到一個小時數據庫又用完了.就是數據變化大,也不會這么快就用完了.
有一位兄弟說,直接從我的電腦上刪除log.ldf這個日志文件,我先在本地機的數據庫試驗
時,刪除一個數據庫的log.ldf的日志文件,數據庫還是正常的,系統還自動生成了一個log.ldf文件.
接著我就去運用到真的數據庫上了.但是刪除了log.ldf文件后,數據庫就變成灰色的了,不能使用
了.我認為是我操作失誤.于是我在本機又干掉一ldf文件,可這個數據能用.在本地機,又干掉
一個,可是又不能用了.
有的能用有的又不能用,我該怎么辦?
請各位高手指點指點.多謝各位了
 
sql企业管理器中可以对log文件的长度进行限制,

不让它无限增长。
 
对,就这样
 
To:youngyxy
在sql企业管理器中可以对log文件的长度进行限制,我也知道.如果對log文件限制空間,也就
等于log文件失去了作用.問題是我log文件已有3GB有多,空間已用完了.對log限制空間,是不就
停止了log日志的記錄,還是達到了限制的空間時自動刪除最前的日志呢.
 
sql企业管理器中选择你的数据库->属性->选项->故障还原 选择简单
不知行不行
 
假设你的数据库叫rpt
exec sp_addumpdevice 'disk', 'log1', 'd:/log1.dat'
backup log rpt to log1
exec sp_dropdevice 'log1'
dump transaction rpt with no_log
dump transaction rpt with truncate_only
dbcc shrinkdatabase('rpt')
若不保存日志,可将d:/log1.dat删除,这样就会清除原来的日志

若是不想日志文件长得太大,可在数据库的属性中更改
1、事务日志|文件属性改成限制大小
2、选项|自动收缩
3、选项|故障还原|模型改成简单或大容量(可能会引起故障时有些数据不能恢复)
 
你的日志长得这么快,说明你的前台应用程序或存储过程有问题,对数据库频繁进行了写
操作(update或insert),你仔细查一查。
 
首先感謝各位給我支持和提供的意見.
To:spear
我想你的方法應該是對的.你有沒有驗証過呀.今天我這樣試過:
1.选项|故障还原|模型改成简单.
2.事务日志|文件属性改成限制大小為100MB.
可是程序運行后很快日志文件就滿了,程序出錯了.書上說將故障还原|模型改成简单,不保存日志
的,怎么還是要那么多的空間呢?
3.接著我就用截斷事務日志的方法:Backup Log database_name with no_log 解決了這一難題.
請問這種截斷事務日志的方法是不是永遠不做事務日志了.如果是永遠截斷,我想恢復過來時怎么辦呢?
 
我也遇到了.
to spear
>> 若是不想日志文件长得太大,可在数据库的属性中更改
>>1、事务日志|文件属性改成限制大小
>>2、选项|自动收缩
>>3、选项|故障还原|模型改成简单或大容量(可能会引起故障时有些数据不能恢复)
你说的这种我们试过了 是不行的 不知道有没有其它的解快方法.
谁解决这个问题 我也出300 分 .
 
如果您确实不想保存日至,可以用SQL Server Agent来帮您自动的删除日至,也就是在代理中
建立一个作业,每小时执行一次删除日志的操作。
如果您又想要保存日至的话,我想只能增加硬盘空间,或者将日至备份到网络上的计算机中了。
 
to Expert
请问如何在 agent 中 在系统能正常使用的情况下删除日志.
请告诉我 具体 sql 命令吗? .你自已试过没有?
 
就是我写的那几句
不过若故障模型是简单的话,则就应在前面加上一条:
alter database rpt set recovery full

则最后加上:
alter database rpt set simple
 
将日志Truncate
同时设置数据库在检查点时自动Truncate log.
具体命令,查SQL在线手册.
 
假设是SQL7的话我遇到过,
重新安装一遍SQL7就可以了,不要改动任何属性!
具体我好像在www.pdriver.com遇到过
具体可以搜索一下!
 
sql语句前面不是有吗?
Backup Log database_name with no_log
删除日至我没有试过,其他的倒是有,比如自动备份数据库
 
我看过了
应该是在企业管理器---数据库(testdb)---右键属性---有 truncate log on checkpoint 打上钩 就可以了!
 
To:fanningbo
我在企业管理器---数据库(testdb)---右键属性---找不到 truncate log on checkpoint
 
不知你们的这个问题解决了没有?
我有一个折中一点的方法,很好用,但不是我写的,看看吧:
如果你懂SQL Server的SP,应该知道了。
sp_dboption Master, 'trunc. log on chkpt.' , true
Good luck
 
败家子,哪个公司都有的。不奇怪。
这下够那小子吃一口的了。
支持支持!
UPUP!
 
多謝各位!
 
顶部