撤消数据库中表的更改

时间:2009-01-08 09:38:10

标签: sql-server-2005 xsd commit

我的申请表有以下程序。

存在产品数据库(20,000行)。

我们的客户端具有导入excel文件的“导入”功能。

这是通过删除所有产品表行,然后执行导入来实现的 - 这是一件很长的事情,因为我们以编程方式对数据执行计算。

显而易见的问题是,如果'import'操作失败(IO stuff),他们现在在products表中没有/ partial / curropt数据。

我们希望如果'import'操作失败,原始数据仍然存在。

这是用C#编写的ASP.NET应用程序,使用SQL Server 2005并使用我们通过VS2005设计工具创建的XSD。

4 个答案:

答案 0 :(得分:4)

  1. 开始交易
  2. 从表中删除数据
  3. 插入新数据
  4. 如果没有问题发生,则提交更改

答案 1 :(得分:1)

我会将数据导入到与product表格结构相同的表格中,然后一旦您对导入成功感到满意就替换产品表格中的数据。

这意味着用户可以在导入过程中继续使用系统,并在更新产品表时最大限度地缩短停机时间。

答案 2 :(得分:1)

使用交易将是明显的选择。

我想我要问的第一件事是你真的需要清理整个桌子吗?是否有时间戳或某些东西可用于限制需要刷新的数据量?您是否可以重新使用逻辑来使用更新而不是所有删除和插入?这样你的交易就会变小。

-Dan

答案 3 :(得分:1)

我会采用上面概述的交易方法。但我能看到的唯一问题是,您可能最终会在导入过程的整个期间锁定整个表。你可能需要考虑一下。单独的表格方法可以是解决方案之一。