摘要:我需要使用servers可靠地从卫星Server收集数据。我需要设计一个允许插入另一个卫星SQL服务器的protokol。(我将根据你的建议-包括图片-完善这个问题。但我需要从某种程度上开始。
背景:I确实有一个中心的R2服务器(微软,SQL 2008 R2标准版)。和几个小的在生产机器附近(相同版本,速成版)。小型服务器将温度从传感器收集到这样定义的表中:
CREATE TABLE dbo.line_sensor_values (
UTC DATETIME NOT NULL,
line_no TINYINT NOT NULL, -- line number: 1, 2, 3, etc.
sensor_no TINYINT NOT NULL, -- sensor number: 1, 2, 3, etc.
sensor_value float NULL, -- the measured value
PRIMARY KEY CLUSTERED (
UTC ASC,
line_no ASC,
sensor_no ASC
)
)
对于生产线上的小型SQL,line_no
是常量。同一表是在中央SQL服务器上创建的,可以暂时从小型服务器断开连接。(你知道,真实的物质环境。)
其目标是将所有收集到的数据从小型SQL服务器传输到中心服务器。所有服务器都创建了表;但是,它们对通信另一端的数据一无所知。这样,就必须设计一些协议来使数据收集工作。在重新连接后或传感器数据采集失败后,必须设计出一种方法,以便知道在何处继续进行数据传输。
中央服务器使用收集到的传感器数据作为某些任务的最后处理。例如,必须处理来自特定线路(任务已知)的某些传感器的数据点,以形成图表。任务知道要收集传感器值的时间间隔。但是,任务数据库环境不是由事件与数据集合同步的。这样,UTC间隔是确定传感器数据是否属于任务的唯一方法。
同样,数据传感器采样间隔与任务无关,SQL服务器可能暂时断开连接。有时,传感器可能被损坏,或者传感器中丢失物理数据的另一个原因。但是,如果存在具有UTC时间的传感器数据,则意味着所有以前的值或存在于表中,或者它们根本不存在。因此,知道任务的数据是否完成的方法等于知道传感器有较新的数据(在任务的UTC范围间隔之后产生)。
目标是不丢失收集到的传感器值。理想的目标是不需要任何其他特殊的功能调用(即通过任何类型的调度程序)。
已经做了什么:
dbo.line_sensor_values
除外)。触发器获取数据并转换它们,并将它们插入到dbo.line_sensor_values
中。换句话说,卫星机器上的桌子已经在收集数据。已经起作用了。此触发器或另一种方法可用于通过Service发送传感器值。我知道这是一个宽泛的问题。这样我就把它分成两部分.
需要解决的单独问题:
谢谢你的时间和经验,佩尔
发布于 2012-09-22 19:30:28
本评论的唯一目的是结束应视为讨论相关细节的问题的摘要的问题。我认为现时的答案并没有真正回答这个问题(没有冒犯)。
发布于 2012-09-16 19:10:19
听起来你不需要服务经纪人。您可以向从计算机添加一个新的列IsReplicated bit not null default(0)
。然后,您需要定期将所有数据where IsReplicated = 0
复制到中央服务器,并在从服务器上将数据标记为IsReplicated = 1
。
这是一个非常简单的同步方案。这对你有用吗?
https://stackoverflow.com/questions/12446912
复制相似问题