微软BI开拓者

首页 » 数据库专区 » SQL Server管理 » 事务复制里如何跳过一个事务
拓狼 - 6/1/2011 9:45:00 AM



事务复制里如何跳过一个事务




--王成辉翻译整理,转贴请注明出自微软BI开拓者www.windbi.com


--原帖地址



曾几何时,你可能在寻找一种方法使得在SQL 2005/2008的事务复制里能跳过某个单独的事务。例如,当分发代理由于某个错误而失败的时候,数据库的完整性不会因为跳过那个事务而受到影响。为了使分发代理跳过某个事务,SQL提供了2个非常有用的存储过程。sp_helpsubscriptionerrors用于显示无效事务的一个列表。该存储过程的关键输出是xact_seqno列,它给第2个存储过程sp_setsubscriptionxactseqno提供了要跳过的事务LSN或者序列号。



sp_helpsubscriptionerrors

http://msdn.microsoft.com/zh-cn/library/ms173427.aspx



sp_setsubscriptionxactseqno

http://msdn.microsoft.com/zh-cn/library/ms188764.aspx


例子(在分发数据库上执行):

sp_helpsubscriptionerrors 'SQLw2k8','dbtranpub','dbtranpub_pub','SQLw2k8Subscriber','dbtransub':


id          time                    error_type_id source_type_id source_name  error_code  error_text                                  xact_seqno                        command_id  session_id
----------- ----------------------- ------------- -------------- ------------- ------------ -------------------------------------------- ---------------------------------- ----------- -----------
16          2009-09-08 05:14:04.673 0            0              MSSQL_ENG    8152        String or binary data would be truncated.    0x0000002B00000196000300000000    1          0
16          2009-09-08 05:14:04.660 0            0              MSSQL_ENG    8152        String or binary data would be truncated.    0x0000002B00000196000300000000    1          0
16          2009-09-08 05:14:04.660 0            1              MSSQL_ENG                  if @@trancount > 0 rollback tran            0x0000002B00000196000300000000    1          0


跳过事务的命令(在订阅服务器上执行):
sp_setsubscriptionxactseqno 'SQLw2k8','dbtranpub','dbtranpub_pub',0x0000002B000001960003

1
查看完整版本: 事务复制里如何跳过一个事务