1

我的申请有以下程序。

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

我们的客户具有“导入”功能,可以在其中导入 excel 文件。

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

明显的问题是,如果“导入”操作失败(IO 内容),他们现在在产品表中没有/部分/curropt 数据。

我们希望如果“导入”操作失败,原始数据仍然存在。

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

4

4 回答 4

4
  1. 开始交易
  2. 从表中删除数据
  3. 插入新数据
  4. 如果没有问题发生,提交更改
于 2009-01-08T09:47:14.513 回答
1

我会将数据导入到与您的产品表具有相同结构的表中,然后在您对导入成功感到满意后替换产品表上的数据。

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

于 2009-01-08T09:45:25.250 回答
1

在这里使用事务将是显而易见的选择。

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

-担

于 2009-01-08T09:59:06.190 回答
1

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

于 2009-01-08T10:11:43.463 回答