嘿,我在sql server 2005中有一个大数据库,因为它太大了我需要将它复制到其他服务器。我设置了sql replication publisher和subscriptor但它没有以稳定的方式运行。 它不是为每个插入复制而且也没有抛出任何异常。 另外,我关注这里的表现,所以我想知道是否还有其他一些我可以使用的替代方案...... 我不需要复制数据库中的每一行或所有表。
任何评论都将在这里受到赞赏!
谢谢!
更新: 我在这里想要实现的是数据库的负载平衡。我希望这里有很多流量,所以我想使用复制的数据库向用户显示信息。将在主数据库中执行含义,插入,更新和删除,并将在新数据库中执行选择。由于复制的数据库仅用于选择,并向用户显示信息,因此我只需要那些对应用程序有效的行。此外,我想在这里没有规范化表,以避免使用连接并尽可能快地检索信息。 我设置的复制是事务性的,实际上,我遇到的问题是,在插入一行的同一个过程之后,它会复制结果,然后再次尝试而不是。从那时起它一直在努力。
答案 0 :(得分:1)
听起来你想使用Transactional Replication:
应用程序要求在发布服务器更改时间与更改到达订阅服务器之间的延迟较低。
但是您需要认识到应用更新之间可能存在小的延迟,并且它们在订阅数据库中可见。大多数应用程序都可以应对这种情况,但您可能需要在应用程序中做更多工作以防止基于陈旧数据执行工作(如果您考虑它,您的应用程序应该已经在处理这类问题,因为用户通常在提交更改之前(很多)会看一个屏幕。
从编辑中可以看出,您已经尝试过事务复制,并遇到了问题。我通常建议多次练习设置复制,并在尝试使用真实数据库之前先了解它的工作原理。从几个表和几行数据开始。设置复制(两个数据库可以在同一台服务器上)。尝试各种选项。如果复制停止工作(如您所示),您需要寻找事件并记录指示出错/停止工作的消息。
根据您的描述,它确实听起来像事务复制就是您所需要的,所以我会说坚持不懈,如果您发现发生特定错误,请搜索服务器故障,或者询问有关此类错误的新问题。
答案 1 :(得分:1)
我认为触发器是一个好主意,但我有相同的情况,但在我的情况下,我需要在所有不同的位置可以在他们的位置发布数据,所有位置需要与所有其他位置数据同步!
在这种情况下,我已经实现了自己创建一个包含服务器ID和sql日志的复制表的逻辑。
软件在主服务器上运行,将所有日志复制到每个位置并执行它们。
这解决了我的问题但是它还需要更多的优化,例如在旅行期间压缩数据以提高复制速度,因为我每个数据库中每周有近10万个条目,而且我有4个位置。
答案 2 :(得分:0)
您可以集成服务来创建可以安排运行和更新第二个服务器数据库的程序包。