2010-03-23 44 views
1

我试图连接到用户输入的服务器。当服务器不存在时,我想向最终用户提供一个快速反馈,以便他可以更正他输入的内容。C#:DBConnection.Open()超时太长

在尝试连接之前,有任何方法可以测试服务器是否存在吗?

感谢

回答

2

您的DBConnection是否具有ConnectionTimeout属性?尝试将其设置为一个小数字。

+0

谢谢,我会尝试。 – leo 2010-03-23 14:22:32

0

您可以使用SQL Server Management Objects(SMO),以获得SQL Server的列表。有一个如何获得服务器列表here的示例。枚举服务器可能需要一段时间,但您可以始终在应用程序加载时在后台启动它,以便在用户需要选择服务器时进行准备。

+0

谢谢我会检查出来,尽管我不明白如何在没有指定任何东西的情况下列出所有可用的服务器。 我需要解决方案为Oracle和MsSQL工作。 – leo 2010-03-23 14:21:39

+0

查找Oracle服务器可能是一个问题。 SMO对象具有一个EnumAvailableSqlServers函数,它将扫描网络中的所有SQL服务器。它需要几秒钟才能完成,但对于构​​建一个表单来说,用户可以看到网络上可见的所有SQL服务器,这非常棒。 – TLiebe 2010-03-23 14:33:47

0

您可以随时ping服务器或检查给定的端口是否打开]但这并不能保证您的服务器在连接之前不会脱机。

1

DbConnection中的ConnectionTimeout属性没有setter。它等待15秒。您需要在连接字符串中指定超时。连接字符串中的“连接超时”以秒为单位。

string connStr = "Data Source=(local);Initial Catalog=AdventureWorks;" + 
       "Integrated Security=SSPI;Connection Timeout=5";