首页 > 解决方案 > 无法通过应用程序访问其他计算机上的 LocalDB

问题描述

我制作了一个使用 LocalDB 的应用程序,以引用一些预定义的值作为它所做的一些数学运算的一部分。我创建了一个安装程序项目,以便在安装应用程序时,将 DB 的副本发送到 [ProgramData][ProductName],它被映射为 ConnectionString 的路径。

当我安装它并在我的计算机上运行应用程序(在 Visual Studio 之外)时,它也完全按照我的意愿运行 - 并且代码中没有错误、警告或消息。但是,当我将它安装到其他人的计算机上时(这样他们就可以使用它并指出他们遇到的任何错误),这就是问题所在。

在他们的计算机上,每当代码引用 LocalDB 时,他们都会收到以下异常消息:

“尝试建立与 SQL Server 的连接时发生网络相关或特定于实例的错误”System.Data.SqlClient.SqlException (0x80131904)。错误继续说 LocalDB 实例不存在。

我已经仔细检查了 ProgramData 文件夹,并且可以确认 LocalDB 在安装过程中确实被复制到那里 - 我已经确认代码在尝试连接到它时正在查看正确的文件夹 - 我只是想不通怎么了。

我已检查用户是否具有对该文件夹的读/写访问权限,并且是其计算机上的 LocalAdmin。

请问有人能帮助指导我解决这个问题吗?

ConnectionString 在下面,如果有帮助的话:

AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "Application_Name"));
ConnectionString = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True";

标签: c#sql-serverlocaldbsqlexceptionprogramdata

解决方案


您实际上可以从其他机器连接到 localdb 实例。这是一个完全有效的配置。(虽然,如果你真的像服务一样运行它,你最好改用 SQL Server Express Edition)。

首先,您需要确保 localdb 实例已启动。这可以是您的应用程序,也可以是通过 SqlLocalDB 实用程序。请参阅此处:https ://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility?view=sql-server-2017

其次,您需要确保 TCP 已启用。此处描述了设置共享实例的详细信息:https ://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-2017

希望有帮助。


推荐阅读