Sql server 如何将自定义桌面应用程序数据库安装到SQL Express?

Sql server 如何将自定义桌面应用程序数据库安装到SQL Express?,sql-server,deployment,sql-server-express,setup-project,Sql Server,Deployment,Sql Server Express,Setup Project,我有一个WPF桌面应用程序,它使用自定义数据库进行存储。 我需要准备一个安装项目(来自VisualStudio2008)(完全安装,而不是ClickOnce) 我可以将添加到应用程序的先决条件列表中,并在应用程序安装期间安装 我的问题是:如何在安装过程中运行脚本来创建应用程序所需的数据库?或者在安装过程中如何将数据库恢复到客户端计算机 另一个相关问题是,如果客户机上已经存在,会发生什么?如何检测实例名称和连接数据?然后,如果需要的话,如何更改Entity framework用于连接到该数据库的连

我有一个WPF桌面应用程序,它使用自定义数据库进行存储。 我需要准备一个安装项目(来自VisualStudio2008)(完全安装,而不是ClickOnce)

我可以将添加到应用程序的先决条件列表中,并在应用程序安装期间安装

我的问题是:如何在安装过程中运行脚本来创建应用程序所需的数据库?或者在安装过程中如何将数据库恢复到客户端计算机

另一个相关问题是,如果客户机上已经存在,会发生什么?如何检测实例名称和连接数据?然后,如果需要的话,如何更改Entity framework用于连接到该数据库的连接字符串

谢谢,
Ed

对于本地数据库来说,SQL Server Express Edition通常是一个非常糟糕的选择。它是一个服务器级引擎,喜欢使用大量资源并作为服务运行(因此,即使应用程序未运行,它也会耗尽这些资源)。换句话说,它属于服务器

我见过的唯一一个在桌面上使用SQL Server Express的地方几乎是有意义的,那就是作为应用程序的一部分,在这种情况下,您通常将该程序安装在一台机器上,该机器的主要目的是为您的业务记账

您应该使用桌面或进程内类引擎,如SQLServerCompact Edition、Sqlite,甚至Access。这也将大大简化您的部署

如果您坚持这样做,请知道安装程序将在系统上创建一个新的sql server实例。SQL Server可以处理此问题。但是,您需要在应用程序的连接字符串中说明这一点,这可能会稍微复杂一些。此外,要设置数据库,您有两个选项:

  • 在应用程序第一次启动时从客户端代码创建它
  • 使用自定义安装程序操作创建它(由于msi权限,很难正确获取)
  • 分发预构建的*.mdf文件,并通过自定义安装程序操作或在应用程序首次启动时附加