【问题标题】:How to deploy my application if it requires a database with tables created?如果需要创建表的数据库,如何部署我的应用程序?
【发布时间】:2011-04-25 06:43:23
【问题描述】:

我以前在 SQL Server CE 中使用数据库。这很简单,因为我可以在一个简单的.sdf 文件中拥有一个数据库,然后将它部署到我的应用程序中(空的或已添加数据)。

但是如果我想将数据库更改为 SQL Server Express 怎么办?

当然,如果我的客户已经有了我需要的数据库,我就不必修改任何东西(嗯,也许是连接字符串)。

如果我想将应用程序交付给需要创建本地 SQL Server Express 数据库的客户端,我应该怎么做?有没有办法使用 .mdf 文件来做到这一点?

当然,我有创建所有表的SQL代码,以及相应的外键等,以备不时之需。

我想这是很多开发人员都面临的问题,但我真的不知道该怎么做。

请不要建议使用 SQLite、MySQL 或其他数据库。我问这个问题是因为我想知道如何在 SQL Server 上做这件事。

【问题讨论】:

    标签: .net sql-server database database-deployment


    【解决方案1】:

    您可以使用附加的数据库文件连接到 SQL Express:

    data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
    

    您还可以备份您的数据库,然后在部署时恢复它。

    更新 但如果你不想复制数据,只复制结构,我建议你应该继续使用 SQL 脚本。您可以检查数据库是否存在,如果不存在则创建它。您甚至可以使用批量插入初始化一些表。

    if db_id('dbname') is null BEGIN CREATE DATABASE ... etc
    

    根据应用程序的类型,您可以指定要部署的脚本(AFAIK,VS2010 为 Web 应用程序提供此功能)或调用 sql.exe 并将您的脚本作为部署步骤的输入。

    【讨论】:

    • 我会尝试两者,但我在这里用.mdf 文件做一些测试,似乎工作完美。
    【解决方案2】:

    有几件事需要考虑:

    1. 您可能需要重新分发 SQL Express 本身
    2. 将数据库部署到全新设置
    3. 将现有数据库迁移到新架构/版本

      加1。A long but very descriptive doc about this procedureThe official docs

      添加 2.On the MSDN

      添加 3。我用来解决这个问题的唯一两种方法是:1:部署新版本并使用脚本迁移数据;2:制作将当前版本转换为新版本的脚本。

    根据我的经验,迁移现有数据库可能是最困难的事情,具体取决于对数据库架构的更改。

    【讨论】:

    • 我想在客户端机器上创建一个新的数据库。我只想创建表格以及它们之间的关系。
    • 如果您确定 SQL Express 已安装,您可以简单地将脚本添加到应用程序的安装程序中,或者您可以创建一个 MDF 文件并将附加命令/批处理添加到您的应用程序的设置中。
    • 我的应用程序设置后是否需要命令/批处理?我的意思是,如果我只是将文件复制到与 .exe 相同的文件夹中,并在我需要使用数据库时通过应用程序中的连接字符串附加它,那将无法工作?
    • 不,你没有。这取决于您如何使用 mdf 文件。在这里阅读不同的方式:msdn.microsoft.com/en-us/library/ms165639%28SQL.90%29.aspx(与我的答案中的链接相同)
    • 好的。让我看看。
    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2020-12-03
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多