SQL 服务器上的 NTP 同步丢失

SQL 服务器上的 NTP 同步丢失

我刚刚注意到我们的一个客户端 SQL 服务器正在与 time.microsoft.com 同步,其余域正在查看 ntp.[clients.domain].co.uk,因此我们的 SQL 服务器快了大约 3 分钟。

我的观点是,我们需要同时停止两台服务器上的所有 SQL 服务,将时间服务更新为域服务,然后在 3 分钟后重新启动所有 SQL 服务,以避免数据库中的时间戳重复。

我提出的另一个论点是‘继续吧,我相信一切都会好起来的’。

我是不是太谨慎了?我不是 SQL 管理员,事实上,客户端 SQL 服务器托管各种第三方数据库,因此从它们那里获得可靠的答案可能需要一些时间。不幸的是,这会影响呼叫中心的报告,因为数据库条目不再与电话系统绑定,所以我受到了呼叫中心经理和她老板的指责。

我意识到这可能是“这完全取决于您所使用的数据库的性质”的情况,但如果是这种情况,只是一些友好的建议?

谢谢,帕特里克

答案1

NTP 内置了一种机制,可以在几分钟内慢慢地让客户端适应。您可以w32tm /stripchart /computer:ntptarget在发出重新同步命令后观察这种情况。有一个阈值,超过该阈值,同步将不会进行,因此如果差异太大,您可能需要以某种方式强制同步。该阈值称为“MaxPosPhaseCorrection”和“MaxNegPhaseCorrection”。

http://support.microsoft.com/kb/884776

http://support.microsoft.com/kb/314054

(注:当 cmd 窗口宽度从 80 列增加到 120 列时,“stripchart”的输出看起来最好。属性->布局->窗口大小)

答案2

修复您的 NTP 配置,然后放手(不进行强制同步)。当 NTP 检测到小的时间差时,它会慢慢地将时钟向正确时间偏移(即每秒增加或减少 0.5 毫秒),直到时钟恢复同步。

注意:我知道这对于 Unix/Linux 上的 ntpd 是准确的。我不能 100% 确定它是否与 Windows 匹配。

相关内容