如何通过安装程序部署复杂的SQL解决方案?

时间:2020-03-06 14:52:31  来源:igfitidea点击:

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

此例程的两个关键功能:

  • 启动后,无需用户干预即可运行
  • SQL操作保留用户数据的完整性

目标是使设置/数据库例程对于最终用户而言尽可能简单(目标受众是非技术人员)。但是,我发现在某些情况下,这两个功能是不一致的。例如,我想向一个表添加唯一索引,但是现有数据可能已经违反了该规则。我可以:

  • 默默地为用户选择什么是"正确的",并丢弃(或者存档)数据;或者
  • 要求用户了解什么是唯一索引,并让他们选择哪些数据将流向何处

这两种选择听起来都不吸引我。我可以妥协而不是根本不创建唯一索引,但这会很糟糕。我想知道在这种情况下其他人会做什么吗?

解决方案

从Red-Gate检出SQL Packager。我没有亲自使用过,但是这些人总体上是很好的工具,这似乎可以满足需求。让我们修改脚本以自定义安装:
http://www.red-gate.com/products/SQL_Packager/index.htm

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