2012-11-04 93 views
0

在嘗試連接到服務器之前,我們需要檢查所有域中是否存在SQL服務器。我們可以使用SQLDataSourceEnumerator遍歷本地域上的服務器列表,但這需要幾秒鐘的時間才能加載,並且只能獲得本地域。我們正在使用SQL Server 2005和2008服務器以及.Net 2010.我們不希望嘗試連接並等待30秒或更長時間的超時,如果服務器不存在,則該超時將顯示爲標準。在連接之前檢查SQL Server是否存在

任何建議將有所幫助。

+1

BTW您可以自己指定[連接超時](http://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnectionstringbuilder.connecttimeout.aspx)。 –

+0

你可以先ping服務器嗎?這並不保證服務器有一個正在運行/正在監聽的sqlserver實例,但可以告訴你有關該服務器的網絡路徑的信息。請記住,您使用的wahtever方法:需要時間...(沒有即時/保證是或不是開箱即用) – rene

+0

在StackOverflow上檢查此線程。也許它對你有用[[我如何確定已安裝的SQL Server實例及其版本?](http://stackoverflow.com/questions/141154/how-can-i-determine-installed-sql-server-instances-and -their版本) –

回答

1

嘗試使用較小的超時進行連接。您可以設置連接字符串中的超時時間:

Connect Timeout=2; 

您不能檢查比這更快。如果遠程端點上沒有SQL Server,則TCP連接不會收到響應並超時。由於沒有(負面)響應,因此無法判斷是否存在服務器或只有很慢的響應。

所以超時是最好的,你可以做,以確定是否有服務器正在收聽或不。

相關問題