2015-10-16 27 views
0

我運行一個CLR C#進行級聯從類似的例子在網上獲得的值,並在這裏定義的書: https://dotnetfiddle.net/aKOC5Q 和我一起上不同的值CLR SqlUserDefinedAggregate CONCAT多次運行

SELECT unit,dbo.concat(COUNTRY,',') FROM dbo.COUNTRIES GROUP BY unit 

把它在C#代碼,你可以看到我正在使用Distinct(),因爲我不想重複。這裏 的問題是,顯然這CLR被多次調用,因此我得到重複的結果爲每例如:

PalestinePalestine,IsraelPalestine,Israel,Spain 

按照C#的邏輯,這不應該發生,但你可以看到的缺失昏迷這些值使我明白CLR被多次調用(除了MERGE),因此我得到了重複的結果。

有趣的是,如果在C#撥弄線40我寫:

AccumulatorList.Add("test"); 

我得到的,正確的,一個結果 「測試」。

你知不知道爲什麼會出現這個問題,我該如何擺脫它並獲得不同的值?

回答

0

顯然我是對的嗅了併發問題並運行相同的查詢與MAXDOP 1選項

SELECT unit,dbo.concat(COUNTRY,',') FROM dbo.COUNTRIES GROUP BY unit OPTION(MAXDOP 1) 

修復問題