我目前正在处理为查询通知注册的查询。根据通知服务的规则,我只能在为订阅设置的查询中使用确定性函数。但是,GetDate()(以及我能想到的几乎任何其他方式)都是不确定的。每当我提取数据时,我希望能够将结果集限制为仅由当天确定的相关记录。
有谁知道我可以使用的解决方法,它允许我使用当前日期来过滤我的结果,但不会使查询通知的查询无效?
示例代码:
SELECT fcDate as RecordDate, fcYear as FiscalYear, fcPeriod as FiscalPeriod, fcFiscalWeek as FiscalWeek, fcIsPeriodEndDate as IsPeriodEnd, fcPeriodWeek as WeekOfPeriod
FROM dbo.bFiscalCalendar
WHERE fcDate >= GetDate() -- This line invalidates the query for notification...
其他想法:
我们的数据库中有一个应用程序控制表,用于存储应用程序级别的设置。我曾想过编写一个小脚本,用当前的 smalldatetime 保持记录是最新的。但是,我加入此表的通知也失败了,我不知道为什么。我推测它与我指定文本类型(列名)有关,这令人沮丧。
示例代码 2:
SELECT fcDate as RecordDate, fcYear as FiscalYear, fcPeriod as FiscalPeriod, fcFiscalWeek as FiscalWeek, fcIsPeriodEndDate as IsPeriodEnd, fcPeriodWeek as WeekOfPeriod
FROM dbo.bFiscalCalendar
INNER JOIN dbo.xApplicationControls ON fcDate >= acValue AND acName = N'Cache_CurrentDate'
有没有人有什么建议?
编辑:这是MSDN上的一个链接,它给出了通知服务的规则