我創建了一個簡單的.Net Web服務,它運行一個非常簡單的查詢(通常應該很快)。查詢是這樣的:.Net 2.0和SQL Server 2008掛起過程
SELECT v.email
FROM dbo.Reporting r
INNER JOIN dbo.Reporting_EmailList el ON r.reportID = el.reportID
INNER JOIN OtherDB.dbo.V_ActiveDir v ON el.userGUID = v.objectGUID
WHERE r.reportID = @reportID
V_ActiveDir是活動目錄數據的視圖。這個查詢基本上給我一個電子郵件地址列表,其中報告應該通過電子郵件發送到。我的報表目前只有3條記錄。我試圖將字段添加到報表中,但它一直在持續,這是我如何發現此查詢掛在SQL進程中。當天早些時候,該腳本生成以下錯誤:
Timeout expired. The timeout period elapsed prior to completion
of the operation or the server is not responding.
...這解釋了懸掛過程,我認爲。我們試圖殺死它,但現在它處於回滾狀態,我想我們可能不得不重新啓動sql server(在我看來,選擇查詢會嘗試回滾的奇怪)。有沒有辦法與SQL服務器或.NET來防止再次發生?或者我可以刪除這個過程在SQL中的一種方式...是否有可能掛在線程池?我仍然可以從報表中選擇所以沒有表鎖,只有當我試圖改變這個表時,它纔會旋轉它的輪子。
我對IIS沒有太多經驗,因爲我沒有訪問權限,但如果有建議,我可以將其傳遞給您。
編輯:這可能是因爲在我的catch語句中,我不檢查SqlConnection是否打開,並且它是否關閉?