读取事务内未提交的数据(MS SQL Server 2008)

时间:2013-06-04 13:11:02

标签: sql sql-server sql-server-2008 tsql

我在C#中编写了一个程序,用于从表中读取数据,对其进行转换并将其写入其他四个表。

三个目标表的非空整数指向最后一个目标表上的主键。我称之为V。

当我的程序将一大块数据读入内存并对其进行转换时,它将使用SqlBulkCopy写入表V.完成后,它将使用select语句来检索主键。

这些主键将正确分配给内存中的其他三个目标表。最后,在一个事务中使用SqlBulkCopy将最后三个表写入数据库。

但是,如果程序成功写入表V,但无法写入其他三个表,则会出现一堆脏数据。

我是否能以某种方式将进入表V的数据与主键映射到围绕所有代码的事务中?

如果有任何建议可以解决我的问题,我将非常高兴。

1 个答案:

答案 0 :(得分:0)

在三个表的列上放置一个外键,这些列引用表V上的主键。这将确保没有脏数据。您可能需要重新编写逻辑和写入表的顺序,但添加外键应该清理过程并使其在重构后更顺畅。