2024年5月24日 星期五

[研究][ASP.NET]找不到網路路徑。建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。

[研究][ASP.NET]找不到網路路徑。建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。

2024-05-23

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C#

********************************************************************************

'/' 應用程式中發生伺服器錯誤。

找不到網路路徑。

描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

例外狀況詳細資訊: System.ComponentModel.Win32Exception: 找不到網路路徑。

原始程式錯誤:

在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。


堆疊追蹤:

[Win32Exception (0x80004005): 找不到網路路徑。]

[SqlException (0x80131904): 建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。找不到或無法存取伺服器。確認執行個名稱是否正確,以及 SQL Server 是否設定為允許遠端連線。 (provider: Named Pipes Provider, error: 40 - 無法開啟至 SQL Server 的連接)]
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +353
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +118
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +268
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +315
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +128
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +265
   System.Data.SqlClient.SqlConnection.Open() +133
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +182
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +180
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +123
   System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments) +2947
   System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) +26
   System.Web.UI.WebControls.ListView.PerformSelect() +126
   System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound() +134
   System.Web.UI.WebControls.ListView.CreateChildControls() +81
   System.Web.UI.Control.EnsureChildControls() +107
   System.Web.UI.Control.PreRenderRecursiveInternal() +58
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Control.PreRenderRecursiveInternal() +227
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3671

********************************************************************************

ChatGPT

這表示應用程序在嘗試連接到 SQL Server 時遇到了一些問題。這些問題通常與網絡配置、SQL Server 的設置或權限有關。以下是可能的原因和解決方法:

可能的原因

1.SQL Server 服務沒有啟動:確認 SQL Server 服務正在運行。你可以使用 SQL Server Configuration Manager 或 Windows 服務管理器檢查。

2.SQL Server 執行個體名稱錯誤:檢查連接字符串中的 SQL Server 執行個體名稱是否正確。尤其是使用命名實例時,格式應該是 ServerName\InstanceName。

3.網絡配置問題:確認 SQL Server 的防火牆設置允許 TCP/IP 連接。SQL Server 默認使用 TCP 1433 端口,你需要確保此端口沒有被防火牆阻擋。

4.SQL Server 允許遠程連接:確認 SQL Server 配置允許遠程連接。這可以在 SQL Server Management Studio 中設置,路徑是:右鍵 SQL Server 執行個體 -> 屬性 -> 連接 -> 允許遠程連接到此服務器。

5.連接字符串錯誤:檢查 Web.config 或 App.config 中的連接字符串,確保格式和參數正確。例如:

<connectionStrings>

    <add name="MyDBConnection" connectionString="Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;" providerName="System.Data.SqlClient" />

</connectionStrings>

6.權限問題:確認用於連接的 SQL Server 賬戶有適當的權限。嘗試使用 SQL Server Management Studio 直接連接到數據庫,看看能否成功。


解決步驟

1.確認 SQL Server 服務是否啟動:在伺服器上檢查 SQL Server 服務狀態,並啟動相關服務(如 SQL Server Browser)。

2.檢查防火牆設置:在伺服器防火牆中,允許 SQL Server 使用的端口(默認是 TCP 1433)。確保 SQL Server Browser 服務允許在 UDP 1434 端口上運行。

3.確認連接字符串:檢查並更新應用程序的連接字符串,確保使用正確的伺服器地址、數據庫名、用戶名和密碼。

4.檢查 SQL Server 配置:在 SQL Server Management Studio 中,右鍵點擊伺服器 -> 屬性 -> 連接,確認“允許遠程連接到此服務器”已勾選。

5.測試直接連接:使用 SQL Server Management Studio 嘗試使用相同的連接字符串參數進行連接,這樣可以幫助確定問題是否出在應用程序上。

6.查看錯誤日志:查看 SQL Server 錯誤日志和 Windows 事件查看器,可能會有更多詳細的錯誤信息幫助排查問題。

通過以上步驟,你應該能夠找出並解決連接到 SQL Server 的問題。如果問題仍然存在,請提供更多具體的錯誤訊息和配置細節,以便進一步診斷。

********************************************************************************

因為系統平時正常使用,偶而收到 Elmah Email通知發生此事,不理它,不定時又自動正常,懷疑不是上面所提各種問題,比較懷疑是效能問題,VM效能?網路效能?防火牆效能?、、、等。

(完)

相關

[研究][ASP.NET]找不到網路路徑。建立連接至 SQL Server 時,發生網路相關或執行個體特定的錯誤。
https://shaurong.blogspot.com/2024/05/aspnet-sql-server.html

[研究]ASP.NET+SQL Server,System.InvalidOperationException: 已超過連接逾時的設定。在取得集區連接之前超過逾時等待的時間,可能的原因為所有的共用連接已在使用中,並已達共用集區大小的最大值。
https://shaurong.blogspot.com/2024/05/aspnetsql-serversysteminvalidoperatione.html

沒有留言:

張貼留言