c# - 无法通过应用程序访问其他计算机上的 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";
解决方案
您实际上可以从其他机器连接到 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
希望有帮助。
推荐阅读
- arrays - 如何在python中从头开始实现数组数据结构?
- sql - Redshift - 有没有办法根据公共列合并行
- r - 创建计算两列的函数,第二列从第一列计算?
- tensorflow - 何时在时间序列中使用生成器 TensorFlow
- javascript - 使用 Javascript 的电子邮件验证不适用于 HTML
- asp.net-core - 令牌无效 - 观众“空”无效
- html - 如何使文本适合容器元素的整个高度
- reactjs - 反应单选按钮 - 部分工作 - 正确获取数据 - 但未呈现为选中状态
- python - 获取:'IndexError:索引 1 超出轴 0 的范围,大小为 0',但不知道为什么
- python - NetBox 安装期间出错,无法使用 manage.py 创建超级用户