2012-11-04 47 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连接不会收到响应并超时。由于没有(负面)响应,因此无法判断是否存在服务器或只有很慢的响应。

所以超时是最好的,你可以做,以确定是否有服务器正在收听或不。

相关问题