数据库装好,测试连接成功后,下一步就得建数据库了。打开交互工SQL,执行SQL语句时,出现如下错误:

The transaction log in database clfm is almost full.  Your transaction is being suspended until space is made available in the log.

log日志已满了。

解决办法:第一种方法、数据库属性里面选择设置,增加log空间。

第二种方法、清除日志(最佳)。

问题当然是解决了,但只是一种妥协的方法.


对于sybase log可以进行手动和自动来清除。

1.自动清除法

  开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预,由SQL Server自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。如图:

sybase笔记  log_database


 2.手动清除法

  执行命令“dump transaction”来清除Log。以下两条命令都可以清除日志:

dump transaction with truncate_only
dump transaction with no_log

  通常删除事务日志中不活跃的部分可使用“dump transaction with trancate_only”命令,这条命令写进事务日志时,还要做必要的并发性检查。SYBASE提供“dump transaction with no_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性,SQL Server会弹出一条警告信息。为了尽量确保数据库的一致性,你应将它作为“最后一招”。

  以上两种方法只是清除日志,而不做日志备份,若想备份日志,应执行“dump transaction database_name to dumpdevice”命令。

2008.7.30

在执行SQL语句的时候,出现如下错误:

DUMP TRANSACTION for database 'clfm' could not truncate the log. Either extend the log using ALTER DATABASE ... LOG ON command or eliminate the oldest active transaction in database 'clfm' shown in syslogshold table.

解决方法:增加log空间,如图sybase笔记  log_下一步_02,然后再执行命令dump transaction clfm with truncate_only。

如果问题还依然存在 的话,那就直接删除syslogs里面的数据。sybase每个库都有syslogs表。Log记录用户对数据库修改的操作,所以如果不用命令清除, log会一直增长直至占满空间。首先修改一下syslogs这个表的属性,赋予sa用户删除权限,执行这个过程有点慢,耐心等待。也可以增加一下syslogs表空间的大小