Zap*_*ica 0 replication sql-server sql-server-2012 transactional-replication
我想知道是否有办法用 SQL Server 2012 企业版实现以下功能?
我有Table A
:Server 1
说 10 列。
Table A:
| col1 | col2 | col3 | coln | col10 |
Run Code Online (Sandbox Code Playgroud)
对Server 2
,我需要的实时副本Table A
中Table B
上Server 2
。但是我实际上只需要复制 3 列,因为这就是我使用的全部。
Table B:
| col1 | col3 | col10 |
Run Code Online (Sandbox Code Playgroud)
我在上面提到了“实时”,我的意思是当我插入一个新值或更新一个新值时,Table A
该更改将尽快传播到Table B
.
Table B
是只读表。并将Table A
数据写入其中。所以 A 将是发布者,B 将是订阅者。
我怎样才能实现这种设置?换句话说,我需要使用某种复制吗?或者我可以通过 Always ON High Availability 实现这一点。
您还可以使用在插入/更新/删除时填充表副本的触发器来解决此问题。问题中不清楚这些表实际上位于不同的服务器上,并且订阅者不可靠。在这种情况下,您可以简单地将日志发送给订阅者 - 在这里您可以非常接近实时,尽管您必须在恢复新日志时暂时将用户踢出。如果日志传送整个数据库是一个问题,那么您可以改为使用触发器来填充同一实例上的另一个数据库——它只填充了这个表和所需的列——然后将该数据库日志传送到另一个实例:
我有一篇关于使日志传送更像是一组可读的辅助文件的博客文章:L
您还可以查看这些帖子,了解我曾经做过类似复制的方法,但具有更多的控制权、更少的影响,并且没有任何故障排除噩梦:
我还在本文末尾讨论了一些提供只读数据副本以供报告的方法: