我一直盯着在存储过程中运行的这个查询变得更加困惑。选择最后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