我们使用一个中央SQL Server(2008 标准版)和几个较小的专用SQL Server(Express 版)。我们需要实现一些机制,用于从专用的分散式 SQL Server(更大的容量,见下文)和从中央 SQL Server(很少的记录,基本上是机器的一些通知,可能还有一些优化提示)异步传输数据* 。
专用的 SQL Server 物理上位于技术机器附近,它们datetime, temperature
定期收集行(考虑几秒钟的间隔)。一项工作大约有 500 条记录,但下一项工作立即进行(机器不知道这是一项新工作——从某种意义上说是相当愚蠢的——并且只是不停地收集温度)。
技术机器必须能够在没有中央 SQL Server 的情况下工作,并且中央 SQL Server 在机器不可访问时也必须工作(即无法访问其专用 SQL 引擎,与机器一起关闭)。换句话说,解决方案不需要超快,但必须是稳健的,即不会丢失收集到的数据。
基本思想是将收集到的数据从专用SQL Server(预处理为带有机器 ID 的规范化格式)移动到中央 SQL Server 上的众所周知的表中。只应发送较新的数据以最小化数据量。如果连接正常,则应由专用 SQL Server 定期(例如一小时)启动该传输。如果连接不正常,数据将在下一小时后发送,以此类推。
中央 SQL Server 上的另一个众所周知的表将用于为专用 SQL Server 引擎发送通知。这样,专用引擎可以被告知(例如)哪些数据已经在中央 SQL Server 上处理/存档(即提示可能已经从专用机器上的本地数据库中删除了哪些记录),或者任何信息从中央提示(只是提示或其他非实时要求)。提示将由专用的 SQL Server 收集(也就是机器的责任)。换句话说,中央 SQL Server 只处理众所周知的本地表。它不会尝试连接专用的 SQL Server 机器。
该解决方案应仅使用标准机制——SQL 命令(通过存储过程),不使用外部软件。我应该关注什么样的解决方案?
谢谢,彼得
[稍后编辑] SQL 服务器位于同一个局域网中。