我有安装程序在SQL Server 2005/2008中安装过程,脚本,视图等。
现在我想在安装程序中添加一个条件,比如安装时是否有任何错误,我想撤消在SQL服务器中完成的所有更改。
我试图存储我正在更改的过程,视图等,如果我收到任何错误,请在安装和恢复时将其恢复。但我不能按照我想要的方式去做。
如果他做了同样的事,有人可以指导我吗?
指定我正在使用WIX安装程序。
如果有人尝试过SMO,那将会有很大的帮助。
答案 0 :(得分:0)
处理此问题的最简单且最强大的方法是根本不使用安装程序。而是将所有SQL包装到事务块中。使用这意味着如果由于任何原因(作为SQL的一部分)出现任何故障,那么事务将正常回滚,并且所有数据库更改都将被还原,而不必在SQL语句上定义事务块。 / p>
假设MS SQL有关交易的更多信息可以在这里找到:
http://msdn.microsoft.com/en-us/library/ms188929.aspx
大多数其他主流SQL实现都遵循非常相似的模型,但显然可以参考他们的文档。
如果安装的某个其他组件失败,则需要触发安装的SQL组件的“回滚”。然后不幸的是你不能以这种方式使用交易。但是在这种情况下,您只需调用一个回滚脚本来删除您添加的任何SP /表等。也就是说,在.NET中你可以将SQL事务处理成代码(即C#),如果你可以使用它来包装所有东西。
答案 1 :(得分:0)