0

有什么方法可以查出是否,

  • 有一个本地运行的 SQL Server 实例
  • 如果是,数据库 X 是否存在?
  • 如果是这样,可以使用集成安全性连接数据库 X 吗?

我想以最干净的方式在应用程序启动时完成上述操作。具体来说,我担心会在各种开发工具的连接向导中单击下拉菜单以浏览数据库时经常看到的那种延迟。

我可以假设实例名称是.or .\sqlexpress

最终用户大多运行 Windows XP。

实际情况是我想让我的应用程序自动感知开发人员可以安装的本地数据库。

如果它像使用连接字符串中的适当值创建 SqlConnection 一样简单,这是安全且推荐的方式,那么我对此很满意。我问这个是因为我试图确保不会引入糟糕的最终用户体验。

4

3 回答 3

1

如果您知道查看..\sqlexpress只是尝试连接 atry-catch并执行 select from master.sysdatabases

如果您不知道服务器,那么您可以使用SQL Server 管理对象库来列出所有可发现的实例/数据库。这个问题详细说明了如何:

如何在 C# 中使用 SMO 列出可用的 SQL Server 实例?

然后,SMOServer类具有Databases要迭代的属性。

于 2012-06-27T19:27:04.967 回答
1

连接到(local)服务器。如果好,则切换到master数据库。然后运行这个 SQL 语句:

SELECT * FROM sysdatabases WHERE name = 'YOUR DB NAME HERE'
于 2012-06-27T19:28:12.127 回答
0

使用属性 SqlConnection.ConnectionString 并设置连接超时的值。默认值是 15 秒,这是一个很长的时间。因此,如果您按照 Adam 的想法枚举所有 DB 服务器,并减少超时值,那么用户体验可能不会那么糟糕。

更多细节在SqlConnection Class

我不想进行 SQL 查询,因为这可能需要很长时间才能失败。

@Aaron,让我们知道您的决定。

于 2012-06-27T21:56:59.090 回答