复制导致数据库日志无法截断收缩
2009-11-27 14:22
741 查看
问题症状:配置了数据库复制功能的数据库,可能存在日志文件巨大且无法进行截断、收缩等操作。
原因:由于某些时候手工执行了数据库发布,没有进行批量处理,导致事务日志一直被标记为使用状态,无法截断日志,无论数据库为何种恢复模型。
解决方法:将所有发布版本标记为已发布,然后收缩数据库。
方法:
sp_repldone 用于事务复制。
sp_repldone 由日志读取器进程用来跟踪哪些事务已分发。
使用 sp_repldone,您可以手动通知服务器事务已复制(即已发送到分发服务器)。它还允许您更改被标记为下一个等待复制的事务。您可以在已复制事务的列表中前后移动。(所有小于或等于该事务的事务都将标记为已分发。)
可以使用 sp_repltrans 或 sp_replcmds 获得所需的参数 xactid 和 xact_seqno。
服务器的最后一个已分发事务的第一个记录的日志序列号 (LSN)。xactid 的数据类型为 binary(10),无默认值。
[ @xact_seqno=] xact_seqno
服务器的最后一个已分发事务的最后一个记录的 LSN。xact_seqno 的数据类型为 binary(10),无默认值。
[ @numtrans=] numtrans
已分发的事务数。numtrans 的数据类型为 int,无默认值。
[ @time=] time
分发最后一批事务所需的毫秒数(如果提供)。time 的数据类型为 int,无默认值。
[ @reset=] reset
重置状态。reset 的数据类型为 int,无默认值。如果为 1,则日志中所有复制的事务将标记为已分发。如果为 0,则事务日志将重置为第一个复制的事务,并且不将任何已复制的事务标记为已分发。只有当 xactid 和 xact_seqno 都为 NULL 时,reset 才有效。
原因:由于某些时候手工执行了数据库发布,没有进行批量处理,导致事务日志一直被标记为使用状态,无法截断日志,无论数据库为何种恢复模型。
解决方法:将所有发布版本标记为已发布,然后收缩数据库。
方法:
sp_repldone 用于事务复制。
sp_repldone 由日志读取器进程用来跟踪哪些事务已分发。
使用 sp_repldone,您可以手动通知服务器事务已复制(即已发送到分发服务器)。它还允许您更改被标记为下一个等待复制的事务。您可以在已复制事务的列表中前后移动。(所有小于或等于该事务的事务都将标记为已分发。)
可以使用 sp_repltrans 或 sp_replcmds 获得所需的参数 xactid 和 xact_seqno。
参数
[ @xactid=] xactid服务器的最后一个已分发事务的第一个记录的日志序列号 (LSN)。xactid 的数据类型为 binary(10),无默认值。
[ @xact_seqno=] xact_seqno
服务器的最后一个已分发事务的最后一个记录的 LSN。xact_seqno 的数据类型为 binary(10),无默认值。
[ @numtrans=] numtrans
已分发的事务数。numtrans 的数据类型为 int,无默认值。
[ @time=] time
分发最后一批事务所需的毫秒数(如果提供)。time 的数据类型为 int,无默认值。
[ @reset=] reset
重置状态。reset 的数据类型为 int,无默认值。如果为 1,则日志中所有复制的事务将标记为已分发。如果为 0,则事务日志将重置为第一个复制的事务,并且不将任何已复制的事务标记为已分发。只有当 xactid 和 xact_seqno 都为 NULL 时,reset 才有效。
示例:
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL, @numtrans = 0, @time = 0, @reset = 1
当 xactid 为 NULL,xact_seqno 为 NULL,并且 reset 为 1 时,日志中的所有复制事务都标记为已分发。
相关文章推荐
- 截断sqlserver 日志文件 收缩数据库文件
- 数据库日志无法收缩
- SqlServer 数据库日志无法收缩处理过程
- 生产案例:突然产生大量的归档日志,导致磁盘空间满了无法登陆数据库
- 收缩并截断SQLSERVER服务器上所有数据库日志
- 清除,收缩或截断数据库日志
- 清空,收缩,截断 SQL Server 数据库 日志
- 数据库日志导致空间无法访问
- SQL Server 2008 事务日志截断(truncate)与收缩(shrink)(含日志物理文件尺寸无法减小的解决办法)
- oralce10g 归档目录空间满导致归在线重做日志文件无法归档。最后数据库不能正常使用
- 清空和截断数据库日志并收缩数据库
- 监听日志导致数据库空间占满而无法登陆 推荐
- 解决sql 2008 事务日志收缩与截断无法减小日志物理文件的方法
- SQL 2008 R2数据库变为REPLICATION,日志不断增长而且不能截断和收缩的解决方案
- Exchange 2007 队列数据库、队列事务日志文件超过临界值(阈值)导致无法接受邮件解决方案
- SQL SERVER 2005 镜像数据库截断并收缩日志文件的思路和操作
- 崩溃了数据库先要备份日志(选择截断)然后变为简单模式后,收缩日志文件就可以了
- oracle 日志文件无法归档导致的数据库无法启动
- 重做日志文件丢失导致无法打开数据库
- SQL Server 2008 事务日志截断(truncate)与收缩(shrink)(含日志物理文件尺寸无法减小的解决办法)