【发布时间】:2011-09-22 05:52:36
【问题描述】:
好的,我的第一个问题,所以这里。
目前用户正在使用一个巨大的 Access 应用程序。他们希望 Web 应用程序具有基于 Access 数据的某些功能并进行一些修改。
好的,没问题。我使用 Access to SQL 迁移助手将数据转换过来,然后编写了一些从 Web 端执行的 SSIS 包,以允许根据需要更新应用程序。这里的一切都很好。
这是我有点难过的地方。有两种类型的进口,季度和年度。季度很好,但年度进口导致问题。年度导入可以用于已通过的预算或建议的预算(每个都保存在单独的 Access 数据库中)。对于每种类型的年度导入,我都有一个 SSIS 包。信息所在的表格如下..
CREATE TABLE Budget
(
BudgetID uniqueidentifier NOT NULL,
ProjectNumber int NOT NULL,
SubProjectNumber varchar(6) NOT NULL,
FiscalYearBegin int NOT NULL,
FiscalYearEnd int NOT NULL,
Sequence int NULL,
QuarterImportDate datetime NULL,
ProposedBudget money NULL,
AdoptedBudget money NULL,
CONSTRAINT PK_Budget PRIMARY KEY CLUSTERED
(
BudgetID ASC
),
CONSTRAINT uc_Budget UNIQUE NONCLUSTERED
(
ProjectNumber ASC,
SubProjectNumber ASC,
FiscalYearBegin ASC,
FiscalYearEnd ASC,
Sequence ASC
)
)
此外,特定年份的预算可以有多个版本,例如 Project、SubProject、FiscalYearBegin 和 FiscalYearEnd。这就是为什么有一个序列号。
所以问题就变成了,因为我有 2 个不同的 SSIS 包,每个包都是针对 1 个特定列(ProposedBudget 或 AdoptedBudget)的更新语句,我没有有效的方法来跟踪正确的顺序.
如果我可以更清楚地说明这一点,请告诉我,任何建议都会很棒!
谢谢。
【问题讨论】:
-
BudgetId 和 Sequence 有什么区别?
-
BudgetID 只是该行的唯一标识符 (NEWID)。该序列旨在成为当年的版本。例如,您正在为 2010/2011 财年进行首次导入。每个项目和子项目的 FiscalYearBegin = 2010、FiscalYearEnd= = 2011 和 Sequence = 0。下一次导入的 Sequence = 1
-
所以你将 ProposedBudget 作为序列 1 导入,那么 AdoptedBudget 是对同一行的单独更新,序列 1?您确定每个提议的预算和通过的预算都是一对一的吗?是否可能有更多的建议预算或采用的预算,这样您的一些序列只有一个?
-
确切地说,我将 ProposedBudget 作为 Sequence1 导入,然后 AdoptedBudget 是对带有 sequence1 的同一行的单独更新。我还没有完善第二次更新的更新声明。这是 ProposedBudget 将多次更改的事情,但 Adopted 在当年将是相同的,因此每个 FiscalYearBegin 和 FiscalYearEnd 的每个序列都将采用相同的方法,只是理论上每个新序列都会有不同的提议。
标签: sql sql-server-2008 database-design ssis relational-database