SQL Service Broker:从分布式源收集数据。
技术问答
231 人阅读
|
0 人回复
|
2023-09-12
|
摘要: 我需要用SQL Server Service
- X' w( @/ _3 \3 ABroker从卫星SQL服务器可靠地收集数据。我需要设计允许一个插件顺利插入另一颗卫星SQL服务器协议。(我会根据你的建议(包括图片)细化问题。但我需要从某种方式开始。2 {9 \: \' B+ M F. b
背景: 我确实有一个中心SQL Server(Microsoft,SQL 2008 R2 Standard版本),生产机附近有几台小型机器SQL" y; V* e; L" g
Server(相同版本,Express版本)。小型服务器以这种方式收集传感器的温度:% S# h4 P6 m& }& p
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 ))的line_no小生产线SQL不变。在中央SQL在服务器上创建相同的表,可以暂时与小服务器物理断开连接。(你知道真实的物理环境。
6 T. q J& D/ ~5 K目的是从小规模收集所有数据SQL服务器传输到中央服务器。所有服务器都创建了一个表。然而,他们对通信另一端的数据一无所知。这样,就必须设计一些协议来收集数据。必须设计一个hanshake,在重新连接或传感器数据收集失败后,知道在哪里继续传输数据。
! ?" F! Y9 {1 m. ?$ I( o1 B0 e中央服务器使用收集到的传感器数据来行处理,以完成某些任务。例如,必须处理来自特定行(已知任务)的特定传感器的数据点,以形成图表。任务知道收集传感器值的时间间隔。然而,事件不会同步任务数据库环境。UTC间隔是确定传感器数据是否属于任务的唯一方法。
2 V0 p) a/ N9 H同样,数据传感器的采样间隔与任务无关,SQL3 Q# R W/ H7 h5 f) n9 X
Server可能会暂时断开连接。有时,传感器可能会损坏,或其他原因可能会丢失传感器的物理数据。但是,如果有UTC时间传感器数据意味着所有以前的值都存在于表中或从未存在过。因此,知道任务数据是否完整的方法是知道传感器有新数据(在任务中UTC产生范围间隔)。% i& ~3 U9 V e7 k3 B8 f
目的是不丢失收集到的传感器值。理想的目标是不需要任何其他特殊调用功能(即通过任何类型的调度程序)。
4 @ A) H2 ~# ^6 N( [: o2 K做了什么:) }' V9 l& Z$ g& k6 N- u9 N
传感器基本上将数据插入专用表(dbo.line_sensor_values除外)。触发器获取数据并转换数据,然后插入数据dbo.line_sensor_values。换句话说,卫星计算机上的表已经在收集数据了。已经可以了。这种触发器或其他方法可以通过Service Broker传感器值发送。; O: |0 K2 E2 U) r
中央政府执行任务的存储过程SQL Server检查表中的传感器数据,并制作已设计并可工作的图表(如果有数据)。但它只是 手动 用来证明这个概念。: A0 j5 h8 d0 k( E$ V
我知道这是一个广泛的问题。因此,我将其分为单独的问题… a- `2 {) g+ b" L* i
" @7 Y7 O" U! e- \' }4 b% o$ s w
解决方案: |
|
|
|
|
|