2011-10-10 37 views
1

我有一個運行在T-SQL中的複雜報表,它在查詢分析器中運行良好,但是每當我將它從網上運行時,它都會超時。因此,我正在試圖弄清楚發生了什麼,並在每次調用之前和之後開始使用打印語句進行調試。問題已經解決了!現在,該網站加載報告的速度比以往任何時候都要快,並且我所做的只是在每個附加選項上添加print'1',print'2'等等。否則,我沒有更改一行代碼。我將這些打印聲明放在代碼中再次爆炸。由於印刷說明我知道爲什麼我會收到錯誤。在我的一個聚合中有一個NULL值。我仍然沒有解決數據問題。我很困惑,爲什麼這解決了我的問題,有什麼想法?爲什麼T-SQL中的打印語句解決了我的報告問題?

+1

你改變了一些東西,但沒有意識到它。 – SQLMason

+0

可能參數嗅探。當您添加'print'語句時,您更改了查詢的文本,這意味着它與緩存中的現有計劃不匹配,並且您編譯了一個新的計劃。如果這仍然是可重現的,請檢查兩個版本的執行計劃。 –

+0

數據庫管理員SE可能會更有資格回答這個問題。 (http://dba.stackexchange.com) – 2011-10-11 03:35:41

回答

1

如果這是一個長時間運行的查詢,那麼您有可能達到了Varuuknahl所說的暫停時間。

添加打印語句會重置超時,並且您的查詢將有更多時間返回主結果集。

我建議你或者簡化查詢,如果可能的話,這個網站上有很多人可以幫助你,或者你可以增加你的web應用程序調用這個過程/報告運行的超時時間。

如果您想要某人解決您遇到的聚合NULL問題,請讓我們看看該查詢,我們可以提供一些建議。

+0

「添加打印語句將重置超時」。聽起來不太可能。第一次提交查詢時,命令是否超時? –