宿主锁定续订期
利用 SQL 工作流实例存储的主机锁定续订期属性,可以指定主机在其间续订它对工作流实例的锁定的时间段。 锁定在宿主锁定续订期及其后 30 秒内有效。 如果宿主未能在此时间段内续订锁定(换句话说,延长租约),则锁定将过期并且持久性提供程序将解除实例锁定。 此属性的值的类型为 TimeSpan,格式为“hh:mm:ss”。 允许的最小值为“00:00:01”(1 秒)。 此属性的默认值为“00:00:30”(30 秒)。
在工作流服务宿主解除其拥有的工作流服务实例的锁定之前该宿主即失败的情况下,此属性很重要。 在这种情况下,持久性提供程序将在该锁定过期后移除持久性数据库中工作流服务实例上的锁定,以便运行在同一台计算机上或服务器场中的另一台计算机上的另一工作流服务宿主可以获取锁定并将工作流服务实例加载到内存中,从而从该工作流服务实例的最后持久保存状态继续其执行。
将此属性设置为较大的值将使工作流服务实例在持久性数据库中锁定的时间更长,从而延迟该实例从最后一个持久点恢复的时间。 将此属性设置为较短间隔可使工作流服务主机的新实例快速选取失败的工作流服务实例,但会导致工作流服务主机和 SQL Server 数据库的工作负荷增加。
SQL 工作流实例存储运行一个内部任务,该任务将定期苏醒并检测实例上是否有过期锁定。 当它发现有过期锁定的实例时,会将这些实例放在 RunnableInstances 表中,以使工作流宿主可以选取并运行这些实例。