日期:2014-05-18  浏览次数:20397 次

非常紧急!关于SQLserver2005 Transactional Replication的多表filter使用问题。非常紧急!
Publisher有2张表 cust ,group . group中有custid与cust关联。
subscriber只需要group中group.type = 'AC'的cust.
就是cust.custid = group.custid and group.type = 'AC'.
但是publication设置中,只能对本表加filter.

怎么办很急!  

而且,publisher端,可能对group操作,把group.type不='AC'的改为='AC',那我就需要把相应的cust同步到subscriber.

我尝试建view,在view作为article,但是没用。那些可customize的sp, sp_MSins_Table ... 都没产生!
怎么办?有做过的吗?


要及时响应publisher端数据的insert,update,delete,只能用Transactional Replication了吧?

------解决方案--------------------
谁看懂了?
帮顶.
------解决方案--------------------
subscritption端想办法吧
数据都 replication 过去

自己修改 sp_MSins/upd/del 这几个存储过程,那就成了你想怎么玩都行了吧?
------解决方案--------------------
另外,可以尝试这样方法,没有测试过

增加一个计算列,该列的值决定是否发布,过滤条件设置在这个列上就行了

而这个列计算列的值来自于一个自己写的函数,这样,函数中总可以跨表去查询,从而做出你想要的判断
------解决方案--------------------
ssis 是定时调度的,而且不好和你的数据变化结合起来(因为你不能修改源表结构,意味着你不能设置标志, 这样比较难判断数据是否已经同步过)

如果考虑放弃 SSIS, 我建议使用触发器+Service Broker, 这样容易捕获数据变更,也容易控制那些数据要同步,而 Serivces Broker 是异步的,在触发器中调用不会对你的业务运行造成多少性能的影响,同时Services Broker可以保证数据到达目的端(有网络问题也不用担心,它会自动重试),唯一的缺点是实时程度不可控制(但一般来说,没有网络问题的话,消息会及时到达)