2013-12-12 21 views
1

下面的查詢工作正常無效查詢SQLDependency(例如,傳遞給ExecuteNonQuerythis question):爲的SqlDependency

SELECT SomeColumn 
FROM dbo.SomeTable 
WHERE Col1 = 'Foo' 
    AND Col2 = 'Bar' 

不幸的是,它看起來的ExecuteNonQuery獲取所有匹配的行到客戶端,即使它只返回一個整數。上面的查詢返回太多的數據,所以我需要減少匹配行的數量。爲此,我改變了上面以下內容:

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 =無效,Source = Statement和Type = Subscribe。

我知道有這麼一個查詢可能是restrictions,但據我所知,上述不違反任何這些?除非DateTime2以某種方式符合限制條件的「雙重/真實」限制「該語句不得基於雙/真實數據類型進行比較或表達」?

回答

0

雖然這並不能解答查詢無效的原因,但我發現了一個可以工作的不同查詢,並且不會向客戶端返回大量數據。正如this post所建議的那樣,即使上面鏈接的文檔說明了其他情況,您也可以使用COUNT_BIG(*)而不使用 GROUP_BY!即,以下工作:

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

原因可能是因爲您在where子句中使用了DateTimeUtc。