2

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

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

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

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

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

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

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

4

2 回答 2

2

您可以使用附加的数据库文件连接到 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 并将您的脚本作为部署步骤的输入。

于 2011-04-25T06:51:45.573 回答
2

有几件事需要考虑:

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

    添加 1.关于此过程的长但非常具有描述性的文档 The official docs

    添加2.在MSDN上

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

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

于 2011-04-25T06:59:05.187 回答