我目前正在设计一个作业执行引擎,并遇到了一个问题,我正在寻找一些建议。
我正在将一些进程转换为一个新的系统,需要定义表结构。该过程由3个步骤组成,每个步骤包含不同的数据(3个不同的webservice调用)。当前,使用RowID和同一行中所有三个步骤的数据生成一个平面文件。新的设计是针对每个流程直接从表中提取,每个步骤都有自己的表,每个步骤只需要数据字段。
问题是,需要链接表之间的行,以便在步骤1成功完成后,我们可以使用适当的数据对步骤2进行操作。由于没有任何step数据保证是唯一的(通过业务规则),所以我需要有一个ID来将表链接到一起。基本表格结构如下:
CREATE TABLE Step1
(
BatchID INT,
BatchRowID ???,
ProcessData
)
CREATE TABLE Step2
(
BatchID INT,
BatchRowID ???,
ProcessData
)
CREATE TABLE History
(
BatchID INT,
BatchRowID ???,
StepID INT,
Result BIT --True False flag
)我正在寻找一个解决方案,以创建一个人造多表标识列。因此,使用步骤4的Process2将有用于Process1的BatchRowID的空白。想到的第一件事是使用GUID,但是由于表上的集群PK将是BatchID,BatchRowID,我想尽量避免GUID。这是由于多种原因,1)集群GUID导致插入失败(但是,通过包含BatchID稍微克服了这一点),以及2)基表和添加到表中的每个索引中在INT上使用的额外空间。
如果有人提出了类似的建议,我很想听听你们的解决方案。
目前还没有确定主机服务器,因此SQL版本可以是2008或2012年。
发布于 2014-11-05 19:34:59
如果版本至少为2012年,请使用序列
https://dba.stackexchange.com/questions/81955
复制相似问题