C# Sql连接隔离级别保留
我有一个包含两部分的小应用程序:C# Sql连接隔离级别保留,c#,sql-server,isolation-level,transaction-isolation,C#,Sql Server,Isolation Level,Transaction Isolation,我有一个包含两部分的小应用程序: 与数据库联系以检索配置数据的配置部件 数据导入器部件,使用配置将数据导入数据库 数据导入器正在多个线程中运行,使用的是IsolationLevel.Snapshot上的事务 配置sql命令不使用任何事务 “配置”窗口打开时,数据导入器无法同时运行 我的问题如下: 1.打开应用程序并检查配置。(进入配置窗口以抽查所有内容)。 2.运行数据导入。 3.重新打开配置窗口 在导入后重新打开配置窗口时,我将收到一个DataReader的错误,它说快照隔离事务访问数据库失败
IsolationLevel.Snapshot上的事务
配置sql命令不使用任何事务
“配置”窗口打开时,数据导入器无法同时运行
我的问题如下:
1.打开应用程序并检查配置。(进入配置窗口以抽查所有内容)。
2.运行数据导入。
3.重新打开配置窗口
在导入后重新打开配置窗口时,我将收到一个DataReader的错误,它说快照隔离事务访问数据库失败…
,但是此DataReader是从一个根本没有设置任何事务或隔离级别的SqlConnection创建的
如果我重新启动应用程序,我可以重新打开配置窗口而不会出错
Net或SQLServer是否处于隔离级别
有没有一种方法可以在设置隔离级别后更改它,而不为所有事务创建新的事务?我认为隔离级别是通过连接池进行的
正如本文所述,这是出于设计
有一些方法可以解决这个问题,比如显式指定事务隔离级别
您可能需要签出。我认为隔离级别是通过连接池进行的
正如本文所述,这是出于设计
有一些方法可以解决这个问题,比如显式指定事务隔离级别
您可能需要签出。“配置sql命令不使用任何事务。”-这是不正确的。每个DML语句都在一个事务中运行,无论您是否打开一个事务。如果在运行语句时没有打开一个,SQL Server将打开一个。语句完成后它对该事务的处理取决于连接所处的模式-自动提交或隐式事务模式。我现在明白了这一点,最初我只是使用Visual Studio的调试监视,手动查看所有“事务”属性,发现它们都为空,这让我得出了这样的结论:“配置sql命令不使用任何事务。”-这是不正确的。每个DML语句都在一个事务中运行,无论您是否打开一个事务。如果在运行语句时没有打开一个,SQL Server将打开一个。语句完成后它对该事务的处理取决于连接所处的模式-自动提交或隐式事务模式。我现在明白了这一点,最初我只是使用Visual Studio的调试监视,手动查看所有“事务”属性,发现它们都为空,这让我得出了这样的结论。