无法通过应用程序访问其他计算机上的LocalDB

时间:2019-09-17 09:55:20

标签: c# sql-server localdb sqlexception programdata

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

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

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

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

我已经仔细检查了ProgramData文件夹,并且可以确认LocalDB在安装过程中确实已复制到该文件夹​​中-并且我已经确认在尝试连接到该文件夹​​时代码正在寻找正确的文件夹-我可以” t弄清楚发生了什么。

我已经检查用户对文件夹具有读/写访问权限,并且在其计算机上是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";

1 个答案:

答案 0 :(得分:0)

您实际上可以从其他计算机连接到localdb实例。这是一个非常有效的配置。 (尽管,如果您确实像服务一样运行它,则最好使用SQL Server Express Edition。)

首先,您需要确保启动了localdb实例。那可以是您的应用程序,也可以通过SqlLocalDB Utility。看到这里: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

希望有帮助。