5

我正在VS 2010中開發一個SQL Server 2000後端的ASP.NET應用程序(我知道,我知道...)SQL Server 2000連接錯誤 - 預登錄握手?

我一直在爲這個設置工作得很好,對於最後3個大部分個月。不過,昨天我做了申請VS 2010 SP1和現在連接到這個數據庫將導致以下錯誤:

Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=72; handshake=44924

請記住,我並沒有改變任何連接字符串或SQL Server 2000的服務器/數據庫。因此,新增加的產品必須有一個原因。

我的連接項目是相當有

conn.Open(); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = conn; 
cmd.CommandText = sqlStatement; 
SqlDataReader dr = cmd.ExecuteReader(); 
resultData.Load(dr); 
dr.Close(); 
conn.Close(); 

香草和我的連接字符串看起來像

Data Source=192.168.1.200;Persist Security Info=false;Initial Catalog=MyDB;User Id=MyUser;Password=MyPW;Timeout=45; 

你可以看到,我修改了超時但這並沒有工作。但是,我再次不必做任何改變。我昨天剛剛申請了VS 2010 SP 1,這是唯一的變化。幫幫我!

+1

您是否試過[this](http://blog.sqlauthority.com/2009/05/21/sql-server-fix-error-provider-named-pipes-provider-error-40-could-not-打開一個連接到SQL服務器微軟的SQL服務器錯誤/#評論-82996)? –

+0

很棒的建議。答案必須是沿着這些方向的東西 - 它必須是導致這種情況的本地客戶端更改。但是,我確實進行了這些更改,但並未解決問題。 –

+0

請參考以下鏈接 http://serverfault.com/questions/423013/sql-an-error-occurred-during-the-pre-login-handshake/423087 –

回答

6

我通過在服務器防火牆上打開端口1433(SQL)來解決這個問題。

+0

大回答!!!!!!!! ! – Eric

1

我有同樣的問題,你有。我通過允許SQL客戶端和防火牆中的SQL主機之間的連接來解決此問題。而且,絕對可以授予專門用於SQL Server的端口1433訪問權限。