找出是否有,
的方法是什么我想以最干净的方式在应用程序启动时完成上述操作。特别是,当我点击下拉菜单浏览各种开发工具的连接向导中的数据库时,我很担心会引入我常见的延迟。
我可以假设实例名称为.
或.\sqlexpress
。
最终用户大多运行Windows XP。
实际的上下文是我想让我的应用程序自动感知开发人员可以安装的本地数据库。
如果它就像在连接字符串中使用apprpriate值创建一个SqlConnection一样简单,那就是安全和推荐的方式,那么我很擅长。我问这个是因为我试图保证不会引入糟糕的最终用户体验。
答案 0 :(得分:1)
如果您知道要查看.
或.\sqlexpress
,只需尝试连接try-catch
并执行master.sysdatabases
选择。
如果您不了解服务器,则可以使用SQL Server Management Object库列出可发现的所有实例/数据库。这个问题详述了:
How to list available instances of SQL Servers using SMO in C#?
然后,SMO Server
类具有Databases
属性以进行迭代。
答案 1 :(得分:1)
连接到(local)
服务器。如果好,那么切换到master
数据库。然后运行此SQL语句:
SELECT * FROM sysdatabases WHERE name = 'YOUR DB NAME HERE'
答案 2 :(得分:0)
使用属性SqlConnection.ConnectionString并设置Connection Timeout的值。默认值为15秒,这是一个很长的时间。因此,如果您按照Adam的想法枚举所有数据库服务器,并减少超时值,那么用户体验也许不会那么糟糕。
更多详情请见SqlConnection Class。
我不想进行SQL查询,因为它可能需要很长时间才能失败。
@Aaron,让我们知道你的决定。