Sql server SQL查询通知和GetDate()
我目前正在处理一个为查询通知注册的查询。根据通知服务的规则,我只能在为订阅设置的查询中使用确定性函数。然而,GetDate()(以及我能想到的几乎任何其他方法)是不确定的。每当我提取数据时,我希望能够将结果集限制为仅相关记录,这是由当天确定的 是否有人知道我可以使用的变通方法,允许我使用当前日期筛选结果,但不会使查询通知无效 示例代码:Sql server SQL查询通知和GetDate(),sql-server,notificationservices,Sql Server,Notificationservices,我目前正在处理一个为查询通知注册的查询。根据通知服务的规则,我只能在为订阅设置的查询中使用确定性函数。然而,GetDate()(以及我能想到的几乎任何其他方法)是不确定的。每当我提取数据时,我希望能够将结果集限制为仅相关记录,这是由当天确定的 是否有人知道我可以使用的变通方法,允许我使用当前日期筛选结果,但不会使查询通知无效 示例代码: SELECT fcDate as RecordDate, fcYear as FiscalYear, fcPeriod as FiscalPeriod, fcF
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'
有人有什么建议吗
编辑:下面是一个为NotificationServices提供规则的方法,一个绕过此操作的好方法是创建一个只显示“按现在选择GetDate()”的视图,然后在查询中使用该视图
编辑:我看不到任何关于不使用用户定义函数的内容(这就是我在中使用的“今天查看”部分)。因此,您可以在指向视图的查询中使用自定义项吗?绕过此操作的一个好方法是创建一个只显示“按现在选择GetDate()”的视图,然后在查询中使用该视图
编辑:我看不到任何关于不使用用户定义函数的内容(这就是我在中使用的“今天查看”部分)。那么,您可以在指向视图的查询中使用UDF吗?结果是,我找到了解决方案。基本上,我是在使我的查询尝试无效,因为我将一个值转换为DateTime,它将其标记为非确定性。即使你没有特别召集演员,但要做一些类似于:
RecordDate = 'date_string_value'
你还是会有约会演员。希望这将有助于解决这个问题的其他人
这个链接对我帮助很大
事实证明,我找到了解决办法。基本上,我是在使我的查询尝试无效,因为我将一个值转换为DateTime,它将其标记为非确定性。即使你没有特别召集演员,但要做一些类似于:
RecordDate = 'date_string_value'
你还是会有约会演员。希望这将有助于解决这个问题的其他人
这个链接对我帮助很大
不幸的是,在notification services的查询中也不允许访问视图。UDF如何?我看不到任何不允许的引用UDF是允许的,但前提是它们也不包含非确定性函数(至少,我99%确信这是正确的)。不过我会再次检查这个选项。谢谢。事实证明,它们必须是确定性的UDF,SQL Server根据其中的查询进行调用。结果是同一个问题。想法不错。不幸的是,在NotificationServices的查询中也不允许访问视图。UDF呢?我看不到任何不允许的引用UDF是允许的,但前提是它们也不包含非确定性函数(至少,我99%确信这是正确的)。不过我会再次检查这个选项。谢谢。事实证明,它们必须是确定性的UDF,SQL Server根据其中的查询进行调用。结果是同一个问题。好主意。