sql-server - 这种 .NET/SQL Server 事务场景是否可行?

标签 sql-server vb.net transactions transactionscope

我刚刚意识到我根本不了解 .NET/SQL Server 事务的工作原理。我觉得我可能会在“没有愚蠢的问题这样的事情”上突破极限,但我阅读的所有文档都不容易理解。我将尝试以这样一种方式来表达这个问题,即答案几乎是肯定的/否定的。

如果我有一个在一台机器上运行的 .NET 进程有效地执行此操作(不是真正的代码):

For i as Integer = 0 to 100
    Using TransactionScope
        Using SqlClient.SqlConnection
            'Executed using SqlClient.SqlCommand'
            "DELETE from TABLE_A"
            Thread.Sleep(5000)
            "INSERT INTO TABLE_A (Col1) VALUES ('A')"
            TransactionScope.Complete()
        End Using
    End Using
Next i

是否有任何事务/隔离级别配置会使“SELECT count(*) FROM TABLE_A”在从其他进程运行时始终返回“1”(即,即使没有行时有 5 秒的时间 block 在事务上下文中的表中)?

最佳答案

是的,您可以让其他进程看不到您在显示的事务中所做的更改。为此,您需要更改其他进程,而不是进行修改的进程。

打开快照隔离并对其他读取进程使用IsolationLevel.Snapshot。他们将看到表格处于您进行任何修改之前的状态。他们不会阻止(等待)。

关于sql-server - 这种 .NET/SQL Server 事务场景是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12736388/

相关文章:

c# - 如何使用可选参数从 C# 调用用 VB.NET 编写的方法

python - 使用套接字连接 VB.NET 前端与 Python 后端是好主意还是坏主意?

java - J2EE/JPA : Controlling Transaction Isolation

sql - t-sql表列到字符串

php - ERROR 过滤输入中的坏词并保存到 SQL

java : use of executeQuery(string) method not supported error?

xml - 我无法读取 xdocument 中的子元素

c# - 根事务回滚时嵌套事务会回滚吗?

ruby-on-rails - 使用(restful)rails 时事务何时开始

sql - 所需的结果行数作为存储过程中的参数