none
这种场景的问题该如何解决 RRS feed

  • 问题

  • 硬件设备通过gprs往服务器上传一些数据,但可能服务器程序正常运行,但是数据库服务可能因其它原因不能正常提供服务,如服务未启动等原因。

    我现在希望,如果在用c#的Open方法时遇到异常,就将这部分数据保存到windows的消息队列(或其它持久化存储)

    且希望在sqlserver恢复时,sql server可以自动的将消息队列的数据保存到指定的表中。(类似:发布、订阅机制)

    这种想法可行吗?sql server 2008是否提供此功能?

    或Microsoft Sync Framework是用来解决此场景的问题吗?谢谢。

    2012年5月3日 15:02

答案

  • 可以这么说,就是有一个http请求过来,本想将请求的数据保存到sql server ( 同一台服务器),但sql server由于各种原因,不能正常提供服务。

    但是这部分数据不能丢,也就是希望将这部分数据保存到其它持久 化储存。

    待sql server自动恢复时,可以自动将刚才保存的数据同步到sql server中。

    使用Service Broker的话, 我的描述是需要在部署程序的服务器上安装SQL Server, 而不是直接使用远程的 SQL Server

    纯程序的解决方案,是建议你使用 MSMQ

    2012年5月4日 4:24
  • 和http通讯的程序在同一台服务器上本身就安装有sql server.

    我说出现故障就是指这个sql server本身出故障。


    那很显然就不能使用任何SQL Server层次上的解决方案了,因为你已经限制了是他出问题,考虑程序级的 MSMQ吧
    2012年5月4日 8:38

全部回复

  • 不知道SQL Server Service Broker是否符合你的需求?或许你可以自行研究看看。

    http://msdn.microsoft.com/zh-tw/library/bb522893(v=sql.105).aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年5月3日 15:37
  • Or messaging queue.
    2012年5月3日 16:47
  • 如果可以在放程序的服务器上安装 SQL Server,则可以考虑 Service Broker,程序始终把数据放在与程序在同一台计算机的 SQL Server, 这台SQL Server与远程服务器之间配置Service Broker,由 Service Broker 负责异步地把数据舆到远程服务器

    Replication也是可以的,远程服务器断掉的情况下会自动重试, 只是Service Broker在数据传递处理上更灵活(当然也要复杂一些)

    如果纯粹是表之间的数据同步,Replication可能会列容易配置一些

    如果不能在放程序的服务器上安装SQL Server,那么你可以考虑MSMQ(纯粹程序上的实现)

    2012年5月4日 1:25
  • 感谢您的回复。

    据我了解,Service Broker这个技术是依赖于 sql server的,也就是需要整个sql server运行正常。

    我现在的情况就是说如果sql server本身运行不正常的情况,为了确保数据不丢,我先在数据保存在其它位置(如消息队列)

    然后待sql server恢复时,自动会进行同步(即将消息队列或其它存储机制的数据保存到数据库中)

    2012年5月4日 3:01
  • 可以这么说,就是有一个http请求过来,本想将请求的数据保存到sql server ( 同一台服务器),但sql server由于各种原因,不能正常提供服务。

    但是这部分数据不能丢,也就是希望将这部分数据保存到其它持久 化储存。

    待sql server自动恢复时,可以自动将刚才保存的数据同步到sql server中。

    2012年5月4日 3:06
  • Message queue does that.
    2012年5月4日 3:39
  • 可以这么说,就是有一个http请求过来,本想将请求的数据保存到sql server ( 同一台服务器),但sql server由于各种原因,不能正常提供服务。

    但是这部分数据不能丢,也就是希望将这部分数据保存到其它持久 化储存。

    待sql server自动恢复时,可以自动将刚才保存的数据同步到sql server中。

    使用Service Broker的话, 我的描述是需要在部署程序的服务器上安装SQL Server, 而不是直接使用远程的 SQL Server

    纯程序的解决方案,是建议你使用 MSMQ

    2012年5月4日 4:24
  • 和http通讯的程序在同一台服务器上本身就安装有sql server.

    我说出现故障就是指这个sql server本身出故障。

    2012年5月4日 6:34
  • 和http通讯的程序在同一台服务器上本身就安装有sql server.

    我说出现故障就是指这个sql server本身出故障。


    那很显然就不能使用任何SQL Server层次上的解决方案了,因为你已经限制了是他出问题,考虑程序级的 MSMQ吧
    2012年5月4日 8:38
  • 好的,非常感谢您的建议。

    您曾经在csdn上对我也有很多帮助,谢谢。。

    2012年5月5日 3:21