[Win32Exception (0x80004005): 遠程主機強迫關閉了一個現有的連接。] [SqlException (0x80131904): 在從服務器接收結果時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 遠程主機強迫關閉了一個現有的連接。)] System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1789294 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5340642 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +601 System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() +256 System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() +39 System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() +125 System.Data.SqlClient.TdsParserStateObject.TryReadByteArray(Byte[] buff, Int32 offset, Int32 len, Int32& totalRead) +77 System.Data.SqlClient.TdsParserStateObject.TryReadUInt32(UInt32& value) +5341726 System.Data.SqlClient.TdsParser.TryReadSqlValueInternal(SqlBuffer value, Byte tdsType, Int32 length, TdsParserStateObject stateObj) +318 System.Data.SqlClient.TdsParser.TryReadSqlValue(SqlBuffer value, SqlMetaDataPriv md, Int32 length, TdsParserStateObject stateObj) +108 System.Data.SqlClient.SqlDataReader.TryReadColumnInternal(Int32 i, Boolean readHeaderOnly) +258 System.Data.SqlClient.SqlDataReader.TryReadColumn(Int32 i, Boolean setTimeout, Boolean allowPartiallyReadColumn) +71 System.Data.SqlClient.SqlDataReader.GetValues(Object[] values) +165 System.Data.ProviderBase.CommonLanguageSubsetDataReader.GetValues(Object[] values) +11 System.Data.ProviderBase.SchemaMapping.LoadDataRow() +38 System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping) +83
再次刷新就這樣:
[Win32Exception (0x80004005): 指定的網絡名不再可用。] [SqlException (0x80131904): 在從服務器接收結果時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 指定的網絡名不再可用。)] System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1789294 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5340642 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244 System.Data.SqlClient.TdsParserStateObject.ReadSniError(TdsParserStateObject stateObj, UInt32 error) +601 System.Data.SqlClient.TdsParserStateObject.ReadSniSyncOverAsync() +256 System.Data.SqlClient.TdsParserStateObject.TryReadNetworkPacket() +39 System.Data.SqlClient.TdsParserStateObject.TryPrepareBuffer() +64 System.Data.SqlClient.TdsParserStateObject.TryReadByte(Byte& value) +86 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +222 System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +61 System.Data.SqlClient.SqlDataReader.get_MetaData() +90 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +377 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +1421 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +53 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +137 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +41 System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +140 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +316 System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +88
"在從服務器接收結果時發生傳輸級錯誤。 (provider: TCP Provider, error: 0 - 指定的網絡名不再可用。)" 傳輸級錯誤,就是Tds類錯誤,也就是表格數據流協議,是建立在TCP/IP Net-Library之上的,包含在TCP數據段內。TDS用1433端口進行數據庫通信。TDS客戶端使用稱為表格格式數據流 (TDS) 的 SQL Server 專用應用程序級協議來發送 SQL 語句。 大致的過程: 數據包由用於 SQL Server 的 Microsoft OLE DB 提供程序、SQL Server ODBC 驅動程序或 DB-Library DLL 生成。TDS 數據包然后被傳遞給 SQL Server 客戶端 Net-Library,客戶端 Net-Library 將 TDS 數據包封裝為網絡協議數據包。 在服務器上,服務器 Net-Library 接收網絡協議數據包,且析取 TDS 數據包並將其傳遞給關系數據庫服務器。在將結果返回給客戶端時,這一進程反向執行。 從上面也可以看出,這個應該是屬於sql server底層所使用的一種通信協議,這里涉及到了:sql server的進程、網絡、net-library,所以:如果一旦網絡有不穩定或者斷網了,異或,sql server進程出現了問題,再或者這個net-library有bug,那么可能就會導致這個傳輸級錯誤了。 分析其主要原因是“連接斷開”,以下列出幾種相關原因案例: 1、網絡未連接,或者在連接的時候斷網; 2、連接實例的時候sqlserver突然斷了,比如你在使用的時候sqlserver服務不正常關閉等。 3、數據庫有異常,比如數據庫處於“警告”等的狀態,或者數據庫處於受限訪問狀態。也會無法訪問,這種情況比較常見。 4、連接在高並發線程中頻繁地打開和關閉。 我的就是SqlConnection 連接對象在高並發線程頻繁的打開和關閉導致的,所以處理方式就改成了只有在不使用連接的時候才關閉它。
《轉自 http://www.timegowhere.com/post/transporterror.html》
未解決。。。。