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

5

我是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;" />
  • 我该如何将我的数据库文件包含在应用程序中一起部署?

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

1个回答

7
您有几个选择。首先,如果这是一个简单的数据库,我建议您放弃使用 SQL Express,而使用 SQL Server 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 上。是的,这是可以完成的。然而,我建议尽可能避免这种情况。

我的主要关注点是将数据库创建SQL脚本下载到最终用户系统,这样他们就可以看到所有的SQL存储过程、表结构等。你使用了自定义的SQL脚本加密还是标准的加密/方法? - redcalx
1
Locster:我想有一种方法可以加密你的脚本,从服务器到最终创建。然而,在我们的情况下,我们只是想确保它们在互联网上得到了加密。一旦应用程序接收到脚本的内容,它们就不会被存储在磁盘上。一个内存文件流包含了所有的细节,我们所做的就是提取文本,进行少量的解析/处理,然后对SQL Server Express执行代码。 - RLH

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接