无法将 SQL Server LocalDB 用于我的 WPF 应用程序
Posted
技术标签:
【中文标题】无法将 SQL Server LocalDB 用于我的 WPF 应用程序【英文标题】:Haven't been able to utilize SQL Server LocalDB for my WPF application 【发布时间】:2020-11-13 00:05:41 【问题描述】:我有一个 WPF 应用程序,其实体框架连接到 SQL Server 2017。我将为我的客户提供一个试用/演示版本进行测试。由于我现在不想安装完整的 SQL Server 让他不知所措,所以我将 .mdf
数据库添加到根目录并尝试使用 SQL Server LocalDB 解决方案来连接。
所以我使用 Advanced Installer 部署软件并添加所有先决条件。当我将它安装在我正在编码的机器上时,该程序运行良好,但是一旦我尝试其他 PC,它就无处可去。一开始有一个登录窗口,在输入凭据后,该窗口要么消失,要么在某些情况下变得没有响应。
我尝试了一堆不同类型的连接字符串,但到目前为止都没有运气。这是主要的连接字符串:
<add name="IncomsDatabase"
connectionString="Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true ;AttachDbFileName=|DataDirectory|\Incoms.mdf"
providerName="System.Data.SqlClient"/>
我什至将|DataDirectory|
更改为根文件夹的直接位置,但它也不起作用。
我还尝试了不同版本的 SQL Server LocalDB,例如 2017、2016 和 2014,但没有成功。
如果有人能提出解决方法,我们将不胜感激。
【问题讨论】:
你安装到什么路径? 软件还是 Sql LocalDB? 【参考方案1】:最有可能出错的有两件事:
1) 实例名称。 Localdb 有一个实例名称,就像“完整”的 sql server 一样,也许它不是默认的。您可以使用
检查安装的实例SqlLocalDB.exe i
这将安装在:
C:\Program Files\Microsoft SQL Server\nnn\Tools\Binn
其中 nnn 是 sql server 版本号。应该是 120 左右吧。
您还可以获得有关哪些数据库与特定实例相关联的信息。 例如
SqlLocalDB.exe i "MSSQLLocalDB"
mdf 位置。
用户无法写入文件最终会出现在程序文件中。 当您在应用程序上工作时,代码可能不在程序文件中。 一个最终与您的 bin 中的 exe 一起出现的数据库可以正常工作。 当您安装应用程序时,可能是您的 mdf 位于程序文件下的某个位置,用户将无法连接到他们无法写入的数据库。
DataDirectory 应该在 appdata 中。
仔细检查设置的内容。
你应该有类似的东西:
AppDomain.CurrentDomain.SetData("DataDirectory", uri);
其中 uri 是使用 Environment.SpecialFolder 选项之一(例如 LocalApplicationData)使用 appdata 的路径构建的。 ApplicationData 一指漫游。
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));
您还需要一个文件夹用于您的应用程序,可能在另一个文件夹中,即您的公司名称。
可能客户端电脑没有漫游应用数据,或者每次登录都会重置。
我会检查您的安装是否在您运行时将 mdf 实际复制到了预期的文件夹中。
【讨论】:
感谢您的回复。事实证明,localDB 没有正确安装/启动。我删除了实例,再次添加并启动,它工作正常。以上是关于无法将 SQL Server LocalDB 用于我的 WPF 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server LocalDB:将数据库分离并重新附加到同一台计算机(机器,相同路径)后,无法备份数据库
WiX 3.8安装IIS Express和SQL Server LocalDB 2012