1. 程式人生 > >vs 或 Sql server2012連線Sql server時出現的問題:已成功與伺服器建立連線,但在登陸過程中發生錯誤

vs 或 Sql server2012連線Sql server時出現的問題:已成功與伺服器建立連線,但在登陸過程中發生錯誤

以前連線是正常的,就這兩天連不上了。(沒有耐心的直接看末尾解決辦法)

錯誤訊息如下:

1.嘗試讀取或寫入受保護的記憶體。這通常指示其他記憶體已損壞。(System.Data)

QQ截圖20131107203307

2.已成功與伺服器建立連線,但在登陸過程中發生錯誤。(provider:SSL Provider,error:0-接收到的訊息異常,或格式不正確。)(Microsoft SQL Server)

QQ截圖20131107203322

然後就Management崩潰了。

QQ截圖20131107203337

沒辦法,那就使用vs當中的伺服器資源管理器連線吧,結果可想而知,其中vs版本2008,2010,2012,2013均崩潰。無語,怎麼辦,聯絡伺服器客服,說了半天,沒辦法,下了個Sql server2008的客戶端

 試試,沒想到真連上了。

這不是高潮,高潮是我寫程式碼發現ExecuteNonQuery()執行時報同樣的錯誤,這怎麼辦,蛋碎。。。System.Data.SqlClient都用不了。憤怒,換成System.Data.OleDb,奇蹟出現了,好了。

這一下提醒了我,然後就在vs的伺服器資源管理器裡設定資料來源提供程式

image

結果應該猜到了,正常了。

看到這裡你一定以為糾結終於結束了,錯,Sql server 2012裡還是不可以啊,登陸介面選項裡沒喲設定資料來源提供程式的地方,怎麼辦?看網上說使用Management連線其他資料庫,比如連線Oracle,可以使用連結伺服器連線,配置ODBC。坑爹的是ODBC都弄好的,測試都成功了,但這裡就是失敗。

image

至今沒搞定從Sql server 2012 Management Studio裡連線,誰知道的幫我下,我更新到文章了,希望後面踩到這個坑的順利些,不要在這上面浪費時間。

囉嗦了這麼多,我先給出暫時的解決方案,後續再補充:

  1. 在程式中使用System.Data.OleDb代替System.Data.SqlClient

Append:

感謝高海東的解決方案,經驗證,確實是迅雷引起的異常,解除安裝掉迅雷的所有產品後,問題得到解決。

疑惑的是之前也在使用迅雷,或許是迅雷自動更新的某些元件引起的,記得當時win8剛出來時,迅雷也引起IE10崩潰。具體原理就不得而知了,先這樣吧。

也許是迅雷更改了winsock的某些設定,重置了一下winsock就OK了,命令:netsh winsock reset