C# 对SQLDependency的查询无效

C# 对SQLDependency的查询无效,c#,sql,.net,sql-server,sqldependency,C#,Sql,.net,Sql Server,Sqldependency,以下查询适用于(例如,在中传递到): 不幸的是,ExecuteOnQuery似乎会将所有匹配的行提取到客户端,即使它只返回一个整数。上面的查询返回的数据太多,因此我需要减少匹配行的数量。为此,我将上述内容更改为: SELECT SomeColumn FROM dbo.SomeTable WHERE Col1 = 'Foo' AND Col2 = 'Bar' AND DateTimeUtc >= '2013-12-01 12:00:00' (请注意,列DateTimeUtc

以下查询适用于(例如,在中传递到):

不幸的是,ExecuteOnQuery似乎会将所有匹配的行提取到客户端,即使它只返回一个整数。上面的查询返回的数据太多,因此我需要减少匹配行的数量。为此,我将上述内容更改为:

SELECT SomeColumn 
FROM dbo.SomeTable 
WHERE Col1 = 'Foo' 
  AND Col2 = 'Bar' 
  AND DateTimeUtc >= '2013-12-01 12:00:00'
(请注意,列DateTimeUtc的类型为DateTime2。)

但是,这不起作用:SqlDependency OnChange处理程序被立即调用,SqlNotificationEventArgs的属性为Info=Invalid、Source=Statement和Type=Subscribe


我知道有很多关于这样的问题,但据我所知,上面没有违反任何一条?除非DateTime2以某种方式被限定为限制“语句不得具有基于双/实数据类型的比较或表达式”的“双/实”?

尽管这并不能回答查询无效的原因,但我发现了另一个可以工作且不会向客户端返回大量数据的查询。正如所建议的,您可以使用COUNT_BIG(*)而不使用GROUP_by,即使上面链接的文档另有建议!即以下工作:

SELECT COUNT_BIG(*) FROM dbo.SomeTable WHERE Col1 = 'Foo' AND Col2 = 'Bar'

原因可能是您在where子句中使用了DATETIMETUTC

SELECT COUNT_BIG(*) FROM dbo.SomeTable WHERE Col1 = 'Foo' AND Col2 = 'Bar'