SQL连接隔离级别保留

时间:2013-06-13 04:46:50

标签: c# sql-server isolation-level transaction-isolation

我有一个小应用程序,有两个部分:

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

    上的事务在多个线程中运行

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

    数据导入程序无法在配置窗口打开的同时运行。

    我的问题如下:

    1.打开应用程序并检查配置。 (进入配置窗口以检查所有内容)。 2.运行数据导入。 3.重新打开配置窗口。

    在导入后重新打开配置窗口时,我将从DataReader收到一条错误,说明Snapshot isolation transaction failed accessing database...但是这个DataReader是从一个没有设置任何事务或IsolationLevel的SqlConnection创建的。

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

    .Net或SQLServer是否持有IsolationLevel?

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

1 个答案:

答案 0 :(得分:1)

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

这是设计的,正如kb article所述。

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

您可能需要查看this article