2015-01-06 23 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