.net - SQL Server 数据库可以在事务期间应答吗?

标签 .net sql-server sql-server-2005 ado.net transactions

我使用 .Net 2.0、ADO.NET、数据集和数据适配器来管理我的数据,并使用 Microsoft SQL Server 2005 作为数据库管理器。

我有一个应用程序,可以生成大量结果(500K+)并将它们保存在数据库中。如果一个结果生成失败,我不想保存任何结果。因此,我将所有数据库插入放入一个事务中,如果无法生成结果,该事务将回滚。

但是,在写入所有结果之前,表会被锁定,这不是我想要的。或者至少我猜它被锁定了,在插入结束之前没有 SELECT 查询响应。

有没有办法让事务在事务处于事件状态时不锁定表?

使用进行如此多插入的事务是个好主意吗?

最佳答案

您可以使用临时暂存表。按照您的节奏填写。然后将一个 SELECT INTO 作为单个事务执行最后一步。大移动完成后,删除临时表。

如果对整体完整性有一些更强的限制,您可以引入更多的轻量级表、反射(reflect)数据流阶段的表、日志/日志表。一些恢复/补偿/清理例程等。

关于.net - SQL Server 数据库可以在事务期间应答吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1810027/

相关文章:

MySQL 与 SQL 的区别

sql - 在 SQL Server 2008 中合并两个表

c# - 从文件路径中删除 'head' 目录

C# Tab控件空白处双击

sql-server - 如何从另一个表更新 Sql Server CE 表

sql-server - SQL Server 备份错误 - 不属于多系列媒体集

c# - 如何使用Oracle和.Net客户端实现密码更改功能?

c# - C# 的数据挖掘资源

sql - 在数据库中创建表时向管理员发送邮件?

sql - 我们可以在另一个存储过程中编写一个子函数或过程吗