SQLDependency -- 无效的SQL

3

根据这里的最佳判断,我在这个查询中没有违反任何规则,但是更改事件会不断触发一个无效的状态。

SELECT 
    COUNT_BIG([PK_Column]) AS RecordCount 
FROM 
    [dbo].[My_Table] 
GROUP BY 
    Varchar_50_Column

如果我这样做,一切都能正常工作。

SELECT 
    [PK_Column]
FROM 
    [dbo].[My_Table] 

然而,我不想返回这么多数据,而且SqlDependency似乎需要在每次更改事件触发后执行一次查询以设置(或重置)订阅。

你知道我的第一个查询有什么缺陷吗?


为什么不使用 COUNT_BIG(*)?它会给出相同的答案,而且我从未见过那种语法... - Aaron Bertrand
尝试使用 Count_Big(*)。你好奇之前没见过的语法是什么? - Phil Sandler
我从未见过任何人使用 COUNT_BIG(column_name)。我不是说它无效,但也许 SqlDependency 不理解它是什么。 - Aaron Bertrand
我从未使用过COUNT_BIG,但在很久以前的一段时间里开始使用COUNT(PK_Column),因为有人错误地告诉我即使是COUNT也永远不要使用“*”。我认为讨论有效聚合的文档措辞存在多种解释方式。我只是按照我对文档的理解这样做的(包括GROUP BY,我并不需要)。 - Phil Sandler
1个回答

3
请查看查询通知的特殊注意事项。 如果您使用了group by子句,则必须使用COUNT_BIG(*)。 在social.msdn上,我发现另一个用户遇到了类似/相同的问题,并通过此语句解决了该问题。

COUNT_BIG(/*)可以工作(无需GROUP BY!)。我认为文档措辞不当,因为即使现在重新阅读,我仍然觉得它说需要GROUP BY,而“/*”是不允许的。无论如何,感谢您的答案,我已经让它工作了。 - Phil Sandler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接