使用ClickOnce部署数据库和应用程序

Yas*_*ash 5 clickonce visual-studio-2010

我是ClickOnce的新手.我使用C#和SQL Server Express创建了一个WinForms应用程序.目前我的数据库位于mssql数据文件夹中.我的连接字符串位于app.config文件中.

<add name="default"  providerName="System.Data.SqlClient"
  connectionString="Server=localhost\SQLEXPRESS;Database=DBase;Trusted_Connection=True;" />
Run Code Online (Sandbox Code Playgroud)
  • 如何包含我的数据库文件以便与应用程序一起部署?

  • 数据库将部署到哪个文件夹,我的连接字符串(上面)是否仍然有效?

RLH*_*RLH 7

你有几个选择.首先,如果这是一个简单的数据库,我建议您放弃使用SQL Express并使用SQL Server Compact.Compact SQL数据库是可以与应用程序安装捆绑在一起的文件.下面是一个指导您完成SQL Compact数据库创建过程的链接.

http://technet.microsoft.com/en-us/library/ms173009.aspx

以下链接讨论了为SQL Server Compact设置必要的依赖项和先决条件.(注意,您需要滚动到标题为基于私有文件的部署的部分.)

http://msdn.microsoft.com/en-us/library/aa983326(v=VS.100).aspx

如果您有一个复杂的数据库,或者可能会增加大于为SQL Compact数据库设置的3GB限制的数据库,唯一的选择是将SQL Server Express设置为应用程序的先决条件,并在安装后创建一个例程.检查您的数据库是否存在于SQL Express中的应用程序,如果不存在,则启动数据库创建和更新例程.

就我而言,我有一个繁重的,数据驱动的应用程序,它是在SQL Compact出来之前编写的,并且必须在经常与我们的服务器断开连接的环境中运行.我不得不使用SQL Express,因此我们必须开发一种机制来在服务器可用时检查数据库更新.如果有更新,则按顺序对子数据库下载并执行加密的脚本文件.更新数据库容器后,将调用后续例程来检查和同步数据.

- 编辑 -

我想快速回复一下,是的,您可以以编程方式将SQL Server数据库捆绑并附加到SQL Server的本地实例.这有很多障碍,如果您的用户群使用多个版本的Windows,PC架构和多种不同的安全方案,您可能无法将数据库始终连接到用户的SQL Server.是的,可以做到.但是,我建议尽可能避免这种情况.