开始事务时出现 SqlServer.Management.SMO.Server 错误

Posted

技术标签:

【中文标题】开始事务时出现 SqlServer.Management.SMO.Server 错误【英文标题】:SqlServer.Management.SMO.Server error when beginning transaction 【发布时间】:2012-04-02 09:34:22 【问题描述】:

使用 SMO 时出错。这段代码一直在 VB.Net 4 中运行,刚刚移到 C# 中,现在无法运行。

Microsoft.SqlServer.Management.Smo.Server server = new Microsoft.SqlServer.Management.Smo.Server(
    new Microsoft.SqlServer.Management.Common.ServerConnection(
    new System.Data.SqlClient.SqlConnection(connStr.ToString())));

server.ConnectionContext.Connect();
server.ConnectionContext.BeginTransaction(); // error here

错误是:

在 MARS 批处理中启动的事务在批处理结束时仍处于活动状态。事务被回滚。

除了 SMO 之外,没有其他与数据库的连接。

连接字符串为:

Data Source=MYPC\SqlServer;Initial Catalog=mytestdb;Integrated Security=True;User ID=;Password=;MultipleActiveResultSets=True

有没有人在使用 SMO 时看到过这个错误并知道是什么原因造成的?

【问题讨论】:

您是否尝试过禁用 MARS (MultipleActiveResultSets=False)? 我猜禁用 MARS 会解决这个问题,但我讨厌在代码开始工作之前更改设置。 从连接字符串中删除 MARS 解决了问题。 【参考方案1】:

从连接字符串中删除 MARS 解决了问题。

【讨论】:

这不是解决办法。 MARS 的存在是有充分理由的,因此您可以在同一连接上并行运行多个批次。

以上是关于开始事务时出现 SqlServer.Management.SMO.Server 错误的主要内容,如果未能解决你的问题,请参考以下文章

在 Google App Engine 开发服务器中组合 --backends 和事务性任务队列时出现问题?

处理事务时出现 VM 异常:还原错误

处理事务时出现 VM 异常:还原

Hibernate 和 Spring:尝试创建事务时出现异常

有些交易有效,有些则无效。处理事务时出现 UnhandledPromiseRejectionWarning 和 VM 异常

SQLException : 处理 2 个不同的表时出现死锁错误