我在一個故障轉移配置中有2個SQL Server的環境中遇到問題。所以,如果一個變得不可用,另一個接管。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嗎? o.O ...
這裏是一些更多的錯誤細節。
[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
我希望有人可能已經看到過這樣的事情,並能提供一個或兩個提示?
還有其他依賴這些服務器的工具嗎?這是爲了瞭解問題是否屬於.NET,可能是應用程序,或者是與服務器端配置/修補程序/相關的問題。 – Paolo
我不知道我遵循了什麼?......這是一對專用的SQL Server,它承載數據庫的分配,所以還有很多其他應用程序使用它們。不是來自所討論的應用程序服務器,它們都在不同的服務器上分離出來,但有兩個應用程序都使用這些服務器的Deployment服務器除外。這些不是那些失敗atm的服務器。 – Jens
如果許多應用程序從這兩臺服務器讀取/寫入數據,並且只有一個應用程序出現故障,那麼這不是服務器問題;閱讀這個問題,如果「服務器配置問題」的可能性被排除,我不清楚這個問題。 – Paolo