【发布时间】:2015-08-13 18:42:12
【问题描述】:
一段时间以来,我一直在使用 .NET 4.5.1 和 SQL Server 2012 Express 在 Windows 8.1 设备上开发 C#/SQL Server 应用程序。这一切都完美无缺。最近,Visual Studio 2015 已经发布,我决定升级。我还决定升级我的 SQL Server 2012,所以我备份了所有内容,将其卸载并安装了 SQL Server 2014 Express。配置完所有内容并恢复数据库备份后,所有内容仍然在本地工作,因为数据库连接数据仍然存在于存储的应用程序设置中。
当我在另一台设备上测试该应用程序时,我发现它无法再连接到 SQL Server 实例,也无法检测到它使用
System.Data.DataTable instances = SqlDataSourceEnumerator.Instance.GetDataSources();
应用程序也无法在我的开发机器上检测到 SQL Server 实例,我认为这很奇怪,因为它正在运行 本地。但是,其他几个设备可以检测到 SQL Server,所以我认为它不是与防火墙相关的程序。 SQL 引擎服务和浏览器服务都处于活动状态。
我决定升级到 Windows 10,重置它(全新安装,未安装任何 SQL Server 程序)并再次运行我的应用程序,因为我的网络中还有其他计算机运行 SQL Server,希望它能检测到这些。它没有。 GetDataSources() 方法在瞬间返回一个空的DataTable,而其他设备需要几秒钟来检测实例并返回正确的列表。
更愚蠢的是,ODBC 数据源管理器确实检测到这些网络实例,让我认为它是一个与 .NET 相关的程序。
总结:两台设备没有检测到任何个SQL Server实例(甚至是本地的),而网络中的其他设备可以。
【问题讨论】:
-
为什么不在配置文件connectionstrings.com中使用常规连接字符串@
-
您在这里要解决的问题是什么?我的意思是高级问题,例如“在安装时连接到实例而不是低级”“我如何检测本地、LocalDB 等的 SQL Server 版本”。我不想回答“你如何解决这个问题我已经在尝试解决它”。
-
我正在使用SqlConnectionStringBuilder 创建连接字符串,但应用程序需要是用户可配置的,因此能够首先检测 SQL 实例(然后连接到它们)。
-
我正在尝试解决它无法以任何方式连接到 SQL Server 实例或检测到它的问题。
-
如果您的用户直接选择 SQL 实例名称,那么我认为他们的技术水平比较低,在这种情况下,他们为什么不能像我在 SSMS 中那样只输入实例名称如果没有检测到?
标签: c# .net sql-server