我正在创建一个使用 SQL Server 2008 的 Windows 表单应用程序。在我拥有的安装项目中,如果需要,我会在目标计算机上检查并安装 SQL Server 2008。我需要的是一种获取 SQL Server 2008 - 并且只有 2008 - 实例名称的方法。
现在我正在使用该SmoApplication.EnumAvailableSqlServers
函数并检查返回的版本,但我发现它不显示默认实例。这对我来说是有问题的,因为如果在我的安装程序在目标机器上设置 SQL Server 2008 之后运行该程序,则没有可用的命名实例 - 只有默认实例。
我不想只是盲目地检查传统的MSSQLSERVER
默认实例是否有效,原因有两个:
它可能是 SQL Server 2008 安装遗留下来的默认实例,它无法访问我的应用程序使用的数据库。跳过它然后检查其他命名实例很可能不会给我任何回报。
它也可能是较新版本的 SQL Server 2012 的默认实例。虽然此实例能够访问我的数据库,但我的经验是,它会将数据库“升级”到新的 SQL Server 版本,而早期版本不会无法访问它。由于我的应用程序旨在与 SQL Server 2008 一起使用,这给我带来了一些问题。
所以我需要使用任何 SQL Server 2008 命名实例,或者如果它是 2008,则使用默认实例。
有没有办法做到这一点?