0

我最近构建了一个应用程序,它使用基于服务的数据库来存储其数据,因为绑定对于初学者来说似乎很容易。

一切在调试中运行良好,但是当我使用“单击安装”发布选项发布它时出现此错误。请注意,我使用的是向导而不是“立即发布”选项,因此清单是正确的。

在安装应用程序之前,我还检查了安装 .Net Framework 4.8 和 SQL Server Express Local DB 2012 的先决条件,安装也运行良好。我可以看到 SQL Server 在任务管理器中运行。

发布设置:

发布设置

SQL Server 运行:

正在运行的 SQL Server

这是 app.config 代码

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <connectionStrings>
        <add name="Redo_V3.Properties.Settings.CNv3" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\RedoV3Database.mdf;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>
</configuration>

是错误消息

请注意,我最初在 PC 上测试了此应用程序,然后在 Virtual Box 中的 VM 上进行了测试

我的连接字符串有问题吗?或者这可能是什么原因?

4

2 回答 2

0

您的连接字符串指向错误的数据库,尝试从https://www.connectionstrings.com/找到合适的连接字符串

于 2020-07-08T13:28:09.707 回答
0

我想我发现了为什么它不能在另一台机器上运行。

  1. 连接字符串是“静态/绝对”。它指向仅存在于我的 PC 上的本地数据库服务器的一个实例。因此,为了使其工作,必须在安装 sql server 后创建一个具有相同名称的实例,即使数据库文件位置正确。如果实例名称不同,则无法运行
  2. 安装 SQL Express Server 本地数据库后,没有自动创建实例。所以我必须手动创建一个与连接字符串中所写名称完全相同的实例,否则它将无法工作。
  3. 这个基于服务的数据库是使用 SQL Server 2016 创建的,而在安装向导的先决条件中,仅支持 SQL Server + SQL Server express local DB 2012 => 我收到另一个错误,说无法降级,因为数据库文件是用较新的版本创建的。所以这个应用程序只能在安装了 SQL Server 2016 的机器上运行。

我的下一个问题是,如何让 Windows 在完成安装 SQL Server 后立即自动启动具有完全相同名称的实例?

于 2020-07-10T11:49:23.807 回答