簡體   English   中英

SQL Server故障轉移:找不到網絡路徑-直到重新啟動后

[英]SQL Server Failover: The network path was not found - until after reboot

我在故障轉移配置中有2個SQL Server的環境中面臨一個問題。 因此,如果其中一個不可用,則另一個接管。

現在,這些服務器不時地切換角色,因此一台服務器從主服務器變為從服務器,再到從服務器。

每當發生這種情況時,我們都會遇到一些SQL錯誤,現在我的印象是.NET框架應該能夠處理這種情況,但是不是,但是現在我們可以從中恢復就不是那么重要了。

但是,似乎我們現在遇到了這樣的情況,即他們做了切換,我們的WebAPI應用程序只是拒絕恢復,並且不斷給出錯誤。

但是,如果我們重新啟動應用程序池,則情況似乎恢復正常。

每個SqlConnection對象始終在使用后進行處置,並使用提供故障轉移伙伴的連接字符串來創建它們:

Data Source=Server_1.Domain; Initial Catalog=database_name;User ID=db_user;Password=user_pass;Failover Partner=Server_2.Domain

如果重要的話,服務器和應用程序位於單獨的域中。

現在,如果這只是在他們切換角色時持續進行,那很好,但我不太明白為什么它會持續存在。

我可以在StackOverflow上找到無數關於該問題的線程,但是它們似乎都在一個一致的狀態下出現了問題,而這個狀態並沒有那么一致。

因此,所有常規的“允許遠程連接”,啟用“ TCP / IP”,“打開端口”等都應該井然有序,否則我們將根本無法連接。

對於看到“命名管道提供程序,錯誤:40”,我也有些困惑,當它不是同一台機器時,是否不應該使用TCP / IP? OO ..

這里是一些更多的錯誤詳細信息。


[Win32Exception (0x80004005): The network path was not found]

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)]
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection) +642
   System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) +116
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +1079
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +6600667
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +233
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +278
   System.Data.SqlClient.SqlConnection.Open() +239

我希望有人以前可能會看到這樣的東西,並且可以提供一兩個提示?

我們從來沒有真正破解過。 甚至沒有前提的SQL Server顧問。 相反,他指向我們的另一個方向是可用性組。

由於我們無法立即執行此操作,因此現在我們為SQL服務器使用DNS別名,如果主服務器出現故障,我們會將別名切換為指向另一個。 這不是自動的,但在DNS切換的情況下,至少不會發生上述錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM