我一直盯着在存儲過程中運行的這個查詢變得更加困惑。選擇最後3個連續行
我有一個表,看起來像這樣...
AsofDate Database_Name Mirroring_Sate
DateTime Database1 Synchronized
DateTime Database2 Suspended
DateTime Database3 Disconnected
DateTime Database1 Synchronized
DateTime Database2 Synchronized
DateTime Database3 Disconnected
DateTime Database1 Synchronized
DateTime Database2 Synchronized
DateTime Database3 Disconnected
所以我有一個運行並記錄在此表中的鏡像狀態3個數據庫每15分鐘的工作。如果鏡像狀態不等於「已同步」,我需要一個查詢將針對任何一個數據庫名稱進行3次連續檢查。
因此,如果Database1在下午3點,然後3.15pm,然後在下午3點30分處於斷開狀態,這就是我需要知道的。我現在在做的是查看整個表格,如果在同步狀態以外的任何一個數據庫的計數是3或更多,那麼我正在採取一種不太符合我想要的行爲。我只想爲最後3次檢查做到這一點,就是這樣。
這是我的查詢,因爲它代表。
IF EXISTS (SELECT 1
FROM dbo.U_MirroringStatus WITH (NOLOCK)
where mirroring_state_desc <> 'SYNCHRONIZED'
GROUP BY database_name
HAVING COUNT(*) >= @MirroringStatusViolationCountForAlert
)
任何幫助/建議將是偉大的。 在此先感謝。
三江源。我基本上想通過數據庫名稱對檢查進行分組。查詢需要檢查所有數據庫,而不是特定的數據庫。因此,如果Database1斷開連接,最後3次檢查會執行一些操作。 – user2841861 2014-10-27 16:21:13
我更新了表格,以便看到它的樣子。所以查詢應該返回數據庫3,因爲最後3次檢查已經斷開這個數據庫。 – user2841861 2014-10-27 16:31:52