MDF数据库文件在不同Windows计算机上的可移植性

问题描述 投票:1回答:1

这里是上下文:我正在编写一个连接到本地数据库文件(MDF)的C#应用​​程序。该应用程序的GUI使用户可以执行各种查询并在Grid View控件中查看结果。 MDF文件随应用程序一起分发,并且可以视为immutable(或只读)资源,即不意味着最终用户会对其进行更新或修改。

该应用程序目前处于Alpha阶段,尚未部署。源代码以及MDF数据库都是受源代码控制的(通过Perforce),因此,当我们团队中的其他开发人员同步其工作区时,他们将获得MDF数据库(和LDF日志)的副本以及代码。不涉及服务器连接,使用(LocalDB)\MSSQLLocalDB和默认的Windows身份验证对本地数据库副本进行所有查询。

这是我的问题: MDF文件似乎无法在创建它的机器上的任何地方使用。如果另一个开发人员在他的计算机上构建我的应用程序,则与本地数据库的连接将失败,并显示通用SQL Server error 5171。但是,MDF文件not已损坏,并且是primary DB文件,因此错误在其他位置。

这是我尝试过的:

  • 已验证所有计算机上的SQL Server版本都相同,因此不是兼容性问题

  • 应用程序中使用的连接字符串是动态的(即适应于MDF文件在计算机上的位置),其格式为:Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\MyLocation\DatabaseFile.mdf;Integrated Security=True;Connect Timeout=30

  • 在所有计算机上使用相同的Windows登录名,无济于事(仍然显示error 5171

  • 已通过SQL Server Management Service验证的数据库选项:Restrict Access设置为MULTI_USER

我发现的唯一解决方法是在计算机上重新生成整个数据库,但这是不可接受的:难道不能仅连接到从Perforce获得并完成的MDF文件吗?谢谢。

c# sql-server database connection-string portability
1个回答
0
投票

很抱歉在最初发布后这么晚回答我自己的问题,但是这里是:解决方案是确保将MDF文件在Perforce中另存为binary,在not中另存为text

这立即解决了数据损坏问题,MDF数据库终于可以在机器/用户之间移植,而没有任何其他问题。

© www.soinside.com 2019 - 2024. All rights reserved.