【问题标题】:Why doesn’t Client-initiated Ado.Net transaction allow…?为什么客户端发起的 Ado.Net 事务不允许……?
【发布时间】:2009-12-11 06:33:13
【问题描述】:


如果我们使用客户端启动的 Ado.Net 事务,那么当我们在事务进行时尝试执行不属于当前事务的命令时,我们会收到错误消息。这是为什么呢?


感谢

【问题讨论】:

    标签: sql tsql ado.net


    【解决方案1】:

    您不能执行“不属于当前事务”的命令。一旦 SqlTransaction 启动,BEGIN TRANSACITON 语句就会被执行,并且服务器已将您的会话注册到事务中。在同一会话中出现的任何新语句都将成为事务的一部分。 ADO.Net SqlClient 通过要求您将正确的 SqlTransaction 分配给 SqlCommand 来强制执行此操作。

    如果你需要在当前事务之外执行语句,你需要获得一个到数据库的新连接并在上面执行你的语句。

    顺便说一句,你说的是 ADO.Net 事务,我接受了你的工作,.Net System.Transactions 组件有一些不同的行为。

    【讨论】:

    • 1) Ado.Net 是否有理由不允许您执行不属于当前事务的命令? 2)“顺便说一句,你说的是 ADO.Net 事务,我接受了你的工作,.Net System.Transactions 组件有一些不同的行为。”我指的是由 SqlTransaction 对象表示的事务。为什么会有额外的、非 Ado.Net 相关的交易组件?
    • 1) 限制是由服务器强加的,ADO.Net 只是模拟相同的限制。 2) System.Transactions,见msdn.microsoft.com/en-us/library/system.transactions.aspx
    猜你喜欢
    • 2019-09-01
    • 2012-08-20
    • 1970-01-01
    • 2023-03-09
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多