【发布时间】:2013-10-13 13:29:25
【问题描述】:
当我的应用程序启动时,我使用SELECT CURRENT_TIMESTAMP 从 SQL Server 检索日期/时间,并将差异与本地日期/时间进行比较 - 并记录此偏移量。每个记录日期/时间的动作都会根据这个时间差进行调整。因此,每当我保存任何日期/时间时,它将是服务器的日期/时间 - 每次我需要它时都不会多次实际查询服务器。
问题是,我们假设这台服务器在地球的另一端,并且连接有一点延迟。我也需要考虑这种滞后。不是从请求到响应的延迟,而是服务器接收请求到响应的延迟。
我如何测量从 SQL Server 获取其当前日期/时间到我的应用程序接收到它之间的延迟时间?
考虑到 SQL Server 是一个如此强大的数据库引擎,我认为有一些内置技巧可以适应这一点。
【问题讨论】:
-
我很好奇需要这种精度的应用程序是什么。如果您需要知道服务器站点的准确时间,网络延迟问题可能是您最不关心的问题。
-
将所有服务器同步到一个公共时间源并通过
GETUTCDATE()存储所有日期不是更好 -
这是一个已经很好开发的遗留应用程序,具有事务结构,目前跟踪时间的方法很差。一切都记录为服务器的日期/时间,但每次需要时都会查询服务器。我正在对其进行调整,以使其更准确和性能更好,同时保持我们的数据库结构完好无损(没有重大变化)。如果它处于早期开发阶段,我会使用 UTC。
-
我询问了该应用程序,以便我们可以判断您的答案需要多精确,以及要花费多少合理的努力才能获得准确的答案。在每个站点设置 GPS 是否值得。在信号离开时查询服务器站点上的 GPS,并在信号到达时查询接收站点上的 GPS。这只是我脑海中的一个想法——我应该承认,除了知道这不是一个微不足道的问题之外,我对“数据通信理论”一无所知。
标签: sql-server delphi sql-server-2008-r2 ado datetimeoffset