sybase事务日志已满,怎么清除

sybase事务日志已满,怎么清除,第1张

您好,很高兴为您解答。 第一步:设定Sybase数据库自动截断日志: 方法一: [sql] isql -Usa -Ppassword -Ssybaseserver >sp_dboption database_name,"trunc log on chkpt",true >go >checkpoint >go方法二:在sybase central 数据库属性对话框

SQLServer中开启CDC之后,在某些情况下会导致事务日志空间被占满的现象为:

在执行增删改语句(产生事务日志)的过程中提示,The transaction log for database '' is full due to 'REPLICATION'(数据库“”的事务日志已满,原因为“REPLICATION”)

CDC以及复制的基本原理粗略地讲,对于日志的使用步骤如下:

1,每当基础表(开启了CDC或者replication的表)产生事务性 *** 作(增删改)之后,对应的事务日志写入日志文件,

2,此时的日志被状态被标记为Replication,也即处于待复制状态,这个活动状态跟数据库的还原模式无关,即便是简单还原模式,

3,然后有后台进程来读取这个日志,根据事务日志的内存写入目标表,

这个目标对于cdc来说是记录数据变化的系统表,

对于replication来说是写入distribution这个库

4,步骤3完成之后,事务日志被标记为正常状态,如果是简单还原模式,被后台进程解析过的事务日志被截断,可以重用

如果上述中间的第三个步骤出现问题,也即后台进程无法解析日志后释放可用的日志空间,再次往数据库中写入 *** 作,就会出现:数据库“TestDB”的事务日志已满,原因为“REPLICATION”的情况

--此为数据文件、数据库日志文件收缩 *** 作语句

--保存时间:2017-1-9

--使用说明:

--“DataBase”为数据库名称,在进行数据收缩 *** 作前,先做好数据备份

--将语句中的“DataBase”替换为需要进行数据收缩的数据库名称,如:test

--在进行数据库收缩的时候,要留出 *** 作时间,期间不要进行任何用户 *** 作

--确认无误后,执行语句,即可进行数据收缩!

use master

go

alter database DataBase set recovery simple with NO_WAIT

go

alter database DataBase set recovery simple

go

declare @name varchar(20)

declare @sql varchar(100)

select @name = name from sysdatabase_files where type = 1

set @sql = 'DBCC SHRINKFILE (N'''+ @name +''' , 11, TRUNCATEONLY)'

exec(@sql)

go

dbcc shrinkdatabase(DataBase)

go

alter database DataBase set recovery full with NO_WAIT

go

--设置恢复模式('SIMPLE'表示简单;'FULL'表示完整)

alter database DataBase set recovery full

go

--设置数据库兼容性级别为sql 2008

alter database DataBase set compatibility_level = 100

go

以上就是关于sybase事务日志已满,怎么清除全部的内容,包括:sybase事务日志已满,怎么清除、数据库事务jeeps日志已满,原因为replication、收缩数据库日志的影响,数据库日志已满,如何处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9398332.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存