您好,很高兴为您解答。 第一步:设定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、收缩数据库日志的影响,数据库日志已满,如何处理等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)