关于 c#:Sql Connection Isolation Level 保留 | 珊瑚贝

Sql Connection Isolation Level retention


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

  • 与数据库联系以检索配置数据的配置部分。
  • 使用配置将数据导入数据库的数据导入器部分。
  • 数据导入器正在使用 IsolationLevel.Snapshot

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

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

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

    我的问题如下:

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

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

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

    .Net 或 SQLServer 是否持有 IsolationLevel ?

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

    • “配置 sql 命令不使用任何事务。” – 这是不正确的。每个 DML 语句都在事务中运行,无论您是否打开一个。如果在运行语句时没有打开一个,SQL Server 将打开一个。在您的语句完成后它对该事务的作用取决于您的连接处于哪种模式 – 这将是自动提交或隐式事务模式。
    • 我现在明白了这一点,最初我只是使用 Visual Studio 的调试手表并手动查看所有”事务”属性,发现它们都为空,这导致我得出这样的结论。


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

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

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

    您可能想查看这篇文章。


    来源:https://www.codenong.com/17079421/

    微信公众号
    手机浏览(小程序)

    Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

    Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_9523.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
    0
    分享到:
    没有账号? 忘记密码?