2011-09-17 225 views
1

我最近更新了一個從2000版本到2005年的MSSQL服務器,以便利用UDF並調整系統中的某些結果。問題是我們沒有源代碼。SQL Server 2005中的TimeoutException從SQL Server 2000遷移

因此,我更換了SQL版本,並且每一次都正常工作,除非我們必須執行大型查詢。我得到這個錯誤:

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. 

我搜索一下吧,和我所得到的是,它使用是一個CommandTimeout問題,我必須以編程方式解決,因爲它應該是在客戶端但這很奇怪,因爲即使在大量查詢的情況下,它也一直有效。

我的猜測是,這不是客戶端,因爲在SQL Server 2000工作正常。

有什麼方法可以刪除任何類型的超時?該系統是完全內部的,只有少數人使用它,所以沒有中斷風險......我更喜歡永久運行這個令人討厭的消息的查詢。

在此先感謝!

+0

所以,你利用的UDF和「微調」的服務器端代碼,超越更改數據庫的版本。您是否嘗試回滾修復程序以嘗試隔離它是版本問題還是您的「調整?」 – billinkc

+0

超時由客戶端設置,而不是由SQL Server設置,因此您不能從SQL Server端進行更改。 –

+0

@billinkc是的,同樣的問題。 –

回答

0

您可以在連接上或者在設置連接時設置連接的超時時間。

SqlCommand1.CommandTimeout = 400000

+0

問題是我們沒有源代碼。 : - /但是,在客戶端沒有任何設置,因爲當它連接到sql server 2000時,它確實有效。沒有辦法在服務器中設置默認值? –

+1

@Gonzalo - 如果你無法控制客戶端的CommandTimeout值,那麼我會建議分析應用程序正在調用的sql調用,並調整它們以緩解問題。 – etliens

+0

我記不起SQL 2005的頭頂,但在2008年,您可以在管理工作室中右鍵單擊服務器,轉到屬性,然後向下連接並設置遠程查詢超時。 –

1

您是否更新過升級後的所有統計數據?

How to: Upgrade to SQL Server 2005 (Setup)

After upgrading the Database Engine to SQL Server 2005, complete the following tasks:

...

Update statistics - To help optimize query performance, we recommend that you update statistics on all databases following upgrade. Use the sp_updatestats stored procedure to update statistics in user-defined tables in SQL Server 2005 databases.

Update usage counters - In earlier versions of SQL Server, the values for the table and index row counts and page counts can become incorrect. To correct any invalid row or page counts, we recommend that you run DBCC UPDATEUSAGE on all databases following upgrade.

+0

是的,我做到了。無論如何,問題不在於查詢的時間。我需要像在SQL Server 2000中那樣運行長查詢。 –

+0

@Gonzalo - 我以爲我會問,因爲不好的統計數據肯定會導致升級後突然超時。 – etliens

相關問題