【问题标题】:undo changes on table in database撤消对数据库中表的更改
【发布时间】:2010-09-30 05:41:23
【问题描述】:

我的申请有以下程序。

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

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

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

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

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

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

【问题讨论】:

    标签: sql-server-2005 xsd commit


    【解决方案1】:
    1. 开始交易
    2. 从表中删除数据
    3. 插入新数据
    4. 如果没有问题发生,提交更改

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        -丹

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-26
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-21
            相关资源
            最近更新 更多