2009-09-01 82 views
8

有誰知道如何設置存儲過程的超時值?在NET上找到一些例子,例如sp_configure'remote Query Timeout',5,但是這不起作用。還發現了一些命令「DBPROP_COMMANDTIMEOUT」和「DBPROP_GENERALTIMEOUT」,但我不知道他們是否正確使用,如果他們是,如何在我的transact-SQL代碼中使用它們。在SQL Server 2005的存儲過程設置查詢超時

回答

3

我從來沒有聽說過在服務器端執行存儲過程的超時設置。通常,您可以指定在您使用的數據提供程序中運行該過程的命令的超時時間,例如ADO.NET。

+0

是的,這是一個客戶端超時 – gbn 2009-09-01 03:55:32

1

這個article對查詢超時以及它們只是一個客戶端概念有很好的解釋。您可以在Tools | Options菜單中設置SQL Server管理工作室中的查詢超時。

0

您必須在客戶端上執行存儲過程時設置超時。就SQL Server而言,它會讓存儲過程永遠運行,除非被告知取消它。

5

正如Chris Tybur所說,您不能在存儲過程中或在SQL Server上存儲過程的存儲過程,的查詢超時。

CommandTimeout是一個客戶端概念:客戶端將在一段時間後中止查詢。沒有死人的定時器或存儲過程放棄自己/或任何查詢的機制)。 SQL服務器將允許查詢永久運行。

Remote Query Timeout」正是這樣:當SQL Server進行遠程調用時,SQL Server本身是另一臺服務器的客戶端時發生超時。它說,在說明:

此值適用於由數據庫 引擎作爲一個遠程查詢開始傳出 連接。這個值 對 數據庫引擎收到的查詢沒有影響。

具有良好的信息最近的一個問題: - 「?發生了什麼事,你要防止」 timeout setting for SQL Server

3

等待真正的問題是,每個人都專注於服務器端,但實際上我們不知道你爲什麼要問這個問題(這很重要)。

另一個「爲什麼」:爲什麼你要設置一個「存儲過程」超時?爲什麼不是視圖,函數或查詢?您是否因特定原因使用了「存儲過程」這個術語,或者您是否有興趣學習如何在T-SQL中設置超時?

我在問,因爲我不知道你是否有鎖定問題,也許SET LOCK_TIMEOUT 1000或WITH(NOLOCK)可能是你真正需要的。沒有更多的信息,但我不能說。如果你可以給我們更多的反饋意見,說明你爲什麼問,發生了什麼,以及如果你的「超時」達到了最終想發生的事情,也許我們可以提供更多幫助。底線:是的,您可以在T-SQL中設置超時時間,是的,您可以停止使用T-SQL執行存儲過程。但我不知道你想提供什麼樣的建議或給你更多的信息。我有點害怕,我已經說了太多:)