【发布时间】:2013-09-04 12:39:18
【问题描述】:
我提出的问题需要一些介绍。我有一个应用程序,它每 5 分钟从一个文件夹中将小文件和电子邮件导入到它自己的 SQL Server 数据库中。
- 每个文件都必须导入
- 每个文件只能导入一次
现在第 1 部分没什么大不了的。然而,第 2 部分提出了一些担忧。如果文件在成功导入后无法删除(例如由于缺少访问权限),并且下次我的应用程序查看该文件夹时,文件将一次又一次地导入,直到有人修复访问权限问题。
因此我想知道以下方法是否可以安全工作,而不会丢失数据:
- 开始交易
- 将文件导入数据库
- 从文件夹中删除文件
- 提交事务(如果有错误则回滚)
这是我到达问题标题的地方:如果前面的步骤没有引发异常,最后一个提交步骤是否总是成功?在提交之前删除文件是否安全,而不冒丢失文件的风险?如果 SQL Server 在事务期间关闭怎么办?或者如果文件删除失败,我应该从数据库中删除记录吗?
【问题讨论】:
-
在触发条件下 - 这将是一个 POST 提交操作。
-
还要考虑一些唯一性,您可以在其上放置一个 UNIQUE 键以避免多次插入。
标签: c# sql sql-server transactions