C#项目LocalDB的.mdf文件跨设备无法连接报错求助
SQL Server连接错误26排查解决方案
实例名适配修正
默认SQL Server 2019 Express安装的实例名为SQLEXPRESS,你代码中使用的(LocalDB)\MSSQLLocalDB是LocalDB专属的实例名,SQL Server Express默认不附带LocalDB组件,两种适配方案二选一:
- 方案一:单独为朋友设备安装SQL Server 2019版本的LocalDB组件,安装完成后即可保留原连接字符串正常运行
- 方案二:修改连接字符串的数据源配置,适配现有SQL Server 2019 Express实例,将
Data Source值修改为.\SQLEXPRESS
连接字符串优化
建议优化原连接字符串写法,规避路径、超时类异常:
public string connectionString { get; set; } = $"Data Source=.\\SQLEXPRESS;AttachDbFilename=\"{Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Passwords.mdf")}\";Integrated Security=True;Connect Timeout=30";
优化点说明:
- 用
Path.Combine拼接路径,避免不同设备的路径分隔符不兼容 - 新增连接超时配置,避免首次附加大体积mdf文件超时触发报错
- 若朋友的SQL Server未开启Windows集成验证,将
Integrated Security=True替换为User ID=SQL账号;Password=SQL密码
SQL Server运行配置检查
- 打开SQL Server配置管理器,进入对应实例的网络配置,启用TCP/IP协议,修改后重启SQL Server服务生效
- 系统服务列表中找到SQL Server Browser服务,设置启动类型为自动并启动服务,错误26绝大多数场景和该服务未运行有关
- 临时关闭Windows Defender防火墙测试连接,若关闭后可正常连接,需在防火墙添加入站规则,放行
sqlservr.exe和sqlbrowser.exe程序
数据库文件权限验证
- 确认打包时已将
Passwords.mdf和对应的Passwords_log.ldf日志文件一同发送,且放置在应用运行的根目录下 - 右键mdf文件打开属性-安全,添加Everyone用户的读取、写入权限,避免权限不足无法附加数据库
内容的提问来源于stack exchange,提问作者Monk
相关产品推荐
相关产品推荐

