首页 > 解决方案 > 跨不同 Windows 机器的 MDF 数据库文件的可移植性

问题描述

这是上下文:我正在编写一个连接到本地数据库文件 (MDF) 的 C# 应用程序。该应用程序的 GUI 使用户能够执行各种查询并在 Grid View 控件中查看结果。MDF 文件与应用程序一起分发,可以被认为是不可变(或只读)资源,即不打算由最终用户更新或修改。

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

这是我的问题: MDF 文件似乎不能在任何地方使用,只能在创建它的机器上使用。如果其他开发人员在他的计算机上构建我的应用程序,与本地数据库的连接将失败,并出现通用SQL Server error 5171. 但是,MDF 文件没有损坏并且是数据库文件,因此错误在其他地方。

这是我尝试过的:

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

标签: c#sql-serverdatabaseconnection-stringportability

解决方案


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

这立即解决了数据损坏问题,MDF 数据库最终可以跨机器/用户移植,没有任何进一步的问题。


推荐阅读