2010-09-24 50 views
3

我都拿出2层的方法来与我的WPF应用程序安装本地数据库:工具或与客户端应用程序安装数据库最佳实践

  1. 创建数据库的备份,然后在安装程序中恢复通过SMO
  2. 脚本的数据库安装,并通过ADO执行它或OSQL.EXE

我需要提供的升级路径,而不是只是删除当前安装的数据库。

还有其他方法更灵活吗?管理工具是否更好/更容易?

回答

1

我见过的支持增量升级的方法都是维护一组“改变脚本”的东西。对于初始安装,您可以将已知的“干净”备份还原到新的数据库中,或者可以使用SQL脚本或ORM工具将架构投影到DMBS中。 NHibernate能够根据映射配置生成模式,并且您可以从安装程序中设置此行为。

一旦安装了数据库,就必须逐步更新。这通常意味着为数据库的每次更改创建一个脚本,并将它们包含在安装包中,并带有一个“runner”(一个简单的批处理过程),该过程可以旋转脚本并对数据库执行脚本。如果它们依赖于订单,请确保您的文件结构考虑到这一点(但通常情况下,最好先组合两个脚本)。还要确保变化不是“破坏性”的。例如,向表中添加列不能涉及删除和重新创建表,即使它的代码少。更改必须是可重复的或不重复的,因为您可能必须包含相同的脚本两次。这可能意味着要跟踪您执行的脚本的名称,和/或通过让每个脚本检测到它在执行前所做的更改尚未完成。

请记住,如果您使用视图,存储过程或SQL函数,则可以随意删除和重新创建这些视图,而不会影响数据。

最后,确保在执行更新之前关闭正在更新的数据库的所有连接,以避免不可预知的行为。

1

对于初始安装,请执行db的恢复。始终用应用程序发送当前版本的数据库。

对于更新要求,您需要更改脚本列表,每个新版本都有一个。我喜欢数据库包含版本的RoR方法。

这可以更容易地检查数据库所在的版本,并在其后应用所有更改脚本。