SQL Server网络接口错误52-在运行时安装时无法找到数据库

时间:2019-04-12 12:34:18

标签: c# .net sql-server winforms

我正在Windows窗体(C#)中创建POS系统,在其中我使用SQL Server数据库文件(.mdf)存储项目(完全脱机)。当我在计算机上安装该应用程序时,它可以正常工作,但是当我在客户端PC上安装该应用程序时,会发生错误:

  

(提供者:SQL网络接口,错误:52-无法找到本地数据库运行时安装”

我在某处读到该问题是由于客户端PC数据库的连接字符串不同而引起的。我尝试在运行时动态添加连接字符串,但再次只能在我的计算机上使用。

另一个可能导致此问题的原因是我使用了“基于服务器的数据库”,因为由于某些原因Visual Studio 2017中不提供本地数据库选项。

我查找的另一个解决方案指出,应该在客户端的PC上安装SQL Server Express。这也失败了(也许我必须以某种方式进行设置)。

我还尝试将database.mdfdatabase_log文件添加到安装文件夹中。

最后,我尝试安装第三方安装程序(VS 2015中的高级安装程序15.8和InstallShield向导),但也失败了。

(我提供了发生数据库连接的代码和连接字符串)

    public void ConnectToDB()
    {
        DBConnection = new SqlConnection(@"Data Source = (LocalDB)\MSSQLLocalDB; AttachDbFilename=C:\Users\SAIM NASSER\Desktop\app layer\data layer\Database1.mdf; Integrated Security = True");

        DBConnection.Open();

        ResultSet = new DataSet();
    }

1 个答案:

答案 0 :(得分:1)

如果我理解的正确,您想使用LocalDB
这意味着使用Sql Server而不安装完整的sql服务器,而仅安装sql server express的localdb部分。

要使其正常工作,您需要安装LocalDB驱动程序,可在此处找到
https://www.microsoft.com/en-us/download/details.aspx?id=29062

您只需要ENU\x64\SqlLocalDB.MSI

这是您唯一需要安装在客户端计算机上的东西,我相信它也可以无提示安装,您需要为此做一点研究。

是的,还应该更改客户端计算机上的连接字符串,您需要对其进行更改,使其指向客户端计算机上的MDF文件,因为该位置可能与您计算机上的位置不同

编辑
要使连接字符串正常工作,您可以尝试以下
在客户端计算机上,创建一个文本文件并将扩展名重命名为.udl
例如,您有一个文件test.udl
现在从资源管理器中双击它,这将打开数据链接编辑器。
在这里,您可以输入/选择不同的设置,然后单击test connection按钮。
建立工作连接后,请保存它,然后使用记事本打开此文件。
在内部可以找到有效的连接字符串
希望对您有帮助