【问题标题】:SQL 2008 Express (R2): Creating an UPDATE trigger to update a table on another server?SQL 2008 Express (R2):创建 UPDATE 触发器来更新另一台服务器上的表?
【发布时间】:2010-08-19 06:07:44
【问题描述】:

我只是想通过一个我需要的过程来思考我拥有的地方:

  1. 网络服务器上的一个 SQL 2008 express 数据库 - 将订单放入订单表中
  2. 另一个网络服务器上的另一个 SQL 2008 express 数据库充当后端系统来处理订单等

这个想法是网络服务器数据库可以保留它所做的事情,并且只有在插入新订单记录时(实际上是更新的......故事的另一部分)我希望将该行插入到订单表中在另一台服务器上...

两台服务器确实有本地 IP 地址,并且基本上在同一个子网中 - 即可以很容易地进行通信......

只是想弄清楚 SQL 触发器是否是可行的方法,或者我是否在第二台服务器上有一个预定的作业,它每 5 分钟查询第一台服务器(很多,不是太多的订单)并插入任何新订单进入它自己的数据库。想法是源/第一个服务器中的表有一个位字段来指示该行是否已被服务器二看到/读取...

有什么想法吗?不幸的是,现阶段都是 SQL 2008 R2 express...

【问题讨论】:

    标签: sql database sql-server-2008 triggers database-connection


    【解决方案1】:

    您不希望触发器作为事务的一部分访问另一台服务器。一种解决方案是使用Service Broker;让触发器将消息插入本地队列,并让其他服务器访问该队列。

    SQL Server 服务代理提供 SQL Server 数据库引擎本机 支持消息传递和排队 应用程序。这使得它更容易 开发人员创建复杂的 使用数据库的应用程序 引擎组件进行通信 在不同的数据库之间。 开发人员可以使用 Service Broker 轻松构建分布式可靠 应用程序。

    【讨论】:

    • +1 - 很高兴知道这个被人们忽视的小宝石;)
    • 嘿,谢谢。实际上,我在 SQL 2008 周围发现了很多新事物。过去我使用过 MSMQ、IBM/MQ 系列等,所以消息传递概念很酷。只是从未意识到它是 SQL 2008 的一部分(可能是早期版本!)再次感谢!!!
    【解决方案2】:

    您需要先阅读链接服务器。这应该是一个great article 供您开始。更好的是,它描述的场景实际上与你的非常相似。此外,两台服务器之间的复制可能是比触发器更好的选择。这是 link for an article 这样做的。

    【讨论】:

    • 嘿,很棒的文章!我认为在这种情况下(实际上也是另一个项目)我将使用代理概念..实际上在过去我习惯于 IBM MQ/Series 和 MSMQ 来处理消息传递,所以使用 SQL 2008 R2(可能早期版本也没有怀疑)内置了代理/消息传递,它运行良好。再次感谢您花时间回答 - 非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多