2015-01-06 115 views
-1

我正在尝试创建一个完整性检查,告诉我何时我的两台服务器的时间间隔超过5秒。服务器时间差异

我有两台服务器

HP1是我从 HP2运行此服务器是远程服务器

此代码的工作,但我需要能够产生价值,我可以 做对

select GETDATE() 
exec ('select getdate()') at HP2 

此检查是代码我想产生

if(ABS(SUM(GETDATE() - exec ('select getdate()') at Jupiter)) > 5) 
begin 
print 'not in sync' 
end 
+0

如果你想对另一个查询执行查询,你需要创建一个链接服务器。 – Jeremy

+0

也许一些[这](http://stackoverflow.com/q/1144051/2186023)可能会帮助你 – DrCopyPaste

+0

我不明白为什么这是从ServerFault迁移。我知道它可能看起来不合适,因为它使用SQL,但是SQL甚至是正确的方式来监视您的服务器以解决时间同步问题(我希望更合适的方法来检查时间同步*会落在ServerFault的保护下)?如果是这样,为什么不移动到http://dba.stackexchange.com? – alroc

回答

0

我设法想出了这个解决方案,它运作良好,并很能以其他方式使用。

我声明一个变量

declare @ExecOutput date = null 

我然后运行执行命令和变量分配作为执行命令的输出,这是通过使用完成的?,它可以让你的输出分配到一个变量。

exec ('select ? = Getdate()',@ExecOutPut OUT) at HP2; 

然后我可以针对这个变量运行一个条件。

if(datediff(ss, GETDATE(), @ExecOutPut) > 5) 
begin 
raiserror ('Not In Sync', 1, 3) 
end 
相关问题