2008-09-29 33 views
2

我正在使用的产品的安装例程的一部分安装数据库更新实用程序。该实用程序检查用户数据库的当前版本,并(如有必要)执行一系列将数据库升级到当前版本的SQL语句。如何通过安装程序部署复杂的SQL解决方案?

两个对程序的主要特点:

  • 一旦启动,它运行,而无需用户交互
  • SQL操作保存用户数据

的目标是保持安装的完整性/数据库例程对于最终用户来说尽可能简单(目标受众是非技术性的)。但是,我发现在某些情况下,这两个特征是不一致的。例如,我想为我的一个表添加唯一索引 - 但现有数据可能已经违反了这条规则。我可以:

  • 静默地为用户选择什么是“正确的”并放弃(或归档)数据;或
  • 请用户理解唯一索引是什么,并让他们选择什么样的数据去哪里

无论选择声音吸引我。我可以妥协,而不是创建一个唯一的索引,但这会吸引。我想知道其他人在这种情况下做什么?

回答

0

你永远不会抛出一个用户数据。一种可能的选择是尝试创建唯一索引。如果索引创建失败,让他们知道失败,告诉他们需要研究什么,并为他们提供一个脚本,如果他们发现他们选择修正数据错误,他们可以运行。

+0

这是我最终使用的解决方案。我测试看是否可以添加唯一索引。如果我不能,那么我将回滚数据库并尝试向用户提供有关如何继续的简单说明。不理想,但至少数据的完整性在用户手中... – Mitkins 2008-12-03 01:51:05

1

检出Red-Gate的SQL Packager。我没有亲自使用过它,但是这些家伙总体上都是很好的工具,而且这似乎能够满足你的需求。它让你修改脚本来定制安装: http://www.red-gate.com/products/SQL_Packager/index.htm

+0

我支持这个解决方案。我为自己使用它。 – 2008-09-29 23:15:47