1

我有一个包含两部分的小应用程序:

  1. 与数据库联系以检索配置数据的配置部分。
  2. 使用配置将数据导入数据库的数据导入器部分。

数据导入器使用事务在多个线程中运行IsolationLevel.Snapshot

配置 sql 命令不使用任何事务。

数据导入器不能在配置窗口打开的同时运行。

我的问题如下:

1.打开应用程序并检查配置。(进入配置窗口抽查一切)。2.运行数据导入。3.重新打开配置窗口。

在导入后重新打开配置窗口时,我将收到来自 DataReader 的错误消息,指出Snapshot isolation transaction failed accessing database...此 DataReader 是从根本没有设置任何事务或 IsolationLevel 的 SqlConnection 创建的。

如果我重新启动应用程序,我可以重新打开配置窗口而不会出错。

.Net 或 SQLServer 是否持有 IsolationLevel ?

有没有办法在设置后更改 IsolationLevel 而无需为所有内容创建新事务?

4

1 回答 1

1

我认为隔离级别是通过连接池进行的。

正如这篇kb 文章所述,这是设计使然。

有一些方法可以解决这个问题,例如明确指定事务隔离级别。

您可能想查看这篇文章

于 2013-06-13T05:00:51.880 回答