由于我们在使用 stsadm 还原网站/网站集时发现的问题(我们从工作流生成的任务未还原),我们采取了不同的备份/还原路线。我们计划对我们的 SP 站点进行重大定制,并希望进行备份,以便在安装失败时进行回滚。在我们的系统测试(非生产)环境中,我们备份了 12 个配置单元、IIS 指向 SharePoint 的虚拟目录以及 SQL 中的 SharePoint 数据库(使用 SQL 服务器进行数据库备份)。
我们有使用 Visual Studio 构建的自定义事件处理程序和工作流,并将 dll 作为版本 2(在 Visual Studio 中签名和版本控制)部署到 GAC。因此,当我们部署时,GAC 将包含 2 个版本的工作流 - 版本 1 和版本 2。在部署期间,我们使用 SP stsadm 功能来安装/激活 WF。我们还转到每个库并添加新的版本 2 WF。这会自动将版本 1 WF 设置为“不允许”新实例(这是我们想要的),并将版本 2 设置为活动状态 - 到目前为止完美。
完成安装后,我们假设出现故障并尝试恢复到相同的机器(一台服务器上的 SharePoint,另一台服务器上的 SQL)。我们首先从 GAC 卸载第 2 版 WF,重置 IIS(以清除这些第 2 版 WF dll 的缓存),恢复 12-hive 和虚拟目录文件夹,然后恢复 SQL dbs。这就像您阅读的一样手册 - 这里没有 stsadm。恢复后一切似乎都可以正常工作,看来恢复成功了 - 我们在安装过程中对列名、数据更改等所做的修改都恢复到了原始的预安装状态。除了一个例外。当我们运行工作流时,它总是失败并且 12-hive 中的日志表明 WF 仍在尝试使用 dll 的版本 2(找不到 System.IO 文件错误)我们认为我们'
谢谢,凯文
凯文,
如果我正确理解了您的操作顺序,那么我有一个大问题:您是否正在恢复内容数据库,但在恢复期间保持场配置数据库(以及其他数据库,如 SSP 数据库)完好无损?如果答案是“是”,那么我怀疑 SharePoint 会不高兴,因为您的配置数据库仍然保留对工作流程 v2 的引用。这就是我怀疑可能发生的事情。
当您将功能安装到 SharePoint 场时,SPFarm.FeatureDefinitions集合(在场配置数据库中维护)会更新以反映您添加的内容。这包括您期望功能包含的所有标准信息:名称、范围、ID、版本等。它还维护 FeatureReceiver 程序集信息和RootDirectory值等。RootDirectory属性指向 12-hive 中该功能的功能清单所在的文件夹。
当您将 v2 工作流功能添加到场并激活它时,配置数据库会更新。即使您恢复内容数据库的 v2 之前的工作流程版本,服务器场仍会查找工作流程的 v2,因为功能关联是在配置数据库级别维护的。如果 v2 功能文件夹仍然存在于 12-hive 中,并且其清单指向 GAC 中的 v2 程序集,则很容易看出哪里可能出现问题。
同时,如果您的工作流功能利用了FeatureReceiver,则在安装该功能后,该信息也会存储(在配置数据库中)在FeatureDefinitions集合的ReceiverAssembly属性中。
如果我错了,并且您实际上正在就地恢复整个场(包括配置数据库),那么我所写的内容将不适用。那样的话,我也会有点摸不着头脑。:-)
我希望这有帮助!
| 归档时间: |
|
| 查看次数: |
3596 次 |
| 最近记录: |