我制作了一个使用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";
答案 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
希望有帮助。