Tag: 事务

SQL Server:跨池连接的隔离级别泄漏

正如前面的Stack Overflow问题( TransactionScope和Connection Pooling以及SqlConnection如何pipe理IsolationLevel? )所展示的,事务隔离级别在与SQL Server和ADO.NET(也是System.Transactions和EF)的池化连接之间泄漏,因为它们构build在ADO.NET)。 这意味着,任何应用程序都可能发生以下危险的事件序列: 发生请求需要显式事务来确保数据一致性 任何其他请求都不使用显式事务,因为它只是在进行不重要的读取。 这个请求现在将作为可序列化执行, 可能导致危险的阻塞和死锁 问题: 防止这种情况的最好方法是什么? 现在到处都需要使用明确的交易吗? 这里是一个独立的repro。 您将看到第三个查询将从第二个查询inheritanceSerializable级别。 class Program { static void Main(string[] args) { RunTest(null); RunTest(IsolationLevel.Serializable); RunTest(null); Console.ReadKey(); } static void RunTest(IsolationLevel? isolationLevel) { using (var tran = isolationLevel == null ? null : new TransactionScope(0, new TransactionOptions() { IsolationLevel = isolationLevel.Value })) using (var […]

TransactionScope与LINQ to SQL中的事务

LINQ到SQL的经典事务模式有什么区别? using(var context = Domain.Instance.GetContext()) { try { context.Connection.Open(); context.Transaction = context.Connection.BeginTransaction(); /*code*/ context.Transaction.Commit(); } catch { context.Transaction.Rollback(); } } 与TransactionScope对象 using (var context = Domain.Instance.GetContext()) using (var scope = new TransactionScope()) { try { /*code*/ scope.Complete(); } catch { } }

Django:如何防止数据库条目的同时修改

如果有防止两个或多个用户同时修改相同数据库条目的方法? 向执行第二次提交/保存操作的用户显示错误消息是可以接受的,但数据不应该被默默覆盖。 我认为locking条目不是一个选项,因为用户可能会使用“返回”button或简单地closures他的浏览器,永远留下锁。

SQL Server的事务回滚的错误?

我们有在SQL Server 2005上运行一些SQL的客户端应用程序,如下所示: BEGIN TRAN; INSERT INTO myTable (myColumns …) VALUES (myValues …); INSERT INTO myTable (myColumns …) VALUES (myValues …); INSERT INTO myTable (myColumns …) VALUES (myValues …); COMMIT TRAN; 它由一个长string命令发送。 如果其中一个插入失败,或者命令的任何部分失败,SQL Server是否会回滚事务? 如果它不回滚,我是否必须发送第二个命令来回滚? 我可以给出关于我正在使用的api和语言的具体信息,但是我认为SQL Server应该对任何语言都做出相应的回应。

是否有可能在主要SQL数据库中回滚CREATE TABLE和ALTER TABLE语句?

我正在开发一个发行DDL的程序。 我想知道是否可以回滚CREATE TABLE和类似的DDL Postgres的 MySQL的 SQLite的 等人 描述每个数据库如何处理DDL事务。

即使事务回滚,SQL标识(自动编号)也会增加

我有一个.net事务与SQL插入到MS SQL 2005数据库。 该表具有标识主键。 当事务发生错误时,会调用Rollback()。 行插入被正确回滚,但是当我下一次向表中插入数据时,身份就像从未发生回滚一样递增。 所以基本上在身份序列中存在差距。 有没有办法让Rollback()方法回收失踪的身份? 我不是以正确的方式接近这个吗?

entity framework中的SqlException – 不允许新的事务,因为会话中还有其他线程正在运行

我目前得到这个错误: System.Data.SqlClient.SqlException:不允许新的事务,因为会话中还有其他线程正在运行。 运行这个代码时: public class ProductManager : IProductManager { #region Declare Models private RivWorks.Model.Negotiation.RIV_Entities _dbRiv = RivWorks.Model.Stores.RivEntities(AppSettings.RivWorkEntities_connString); private RivWorks.Model.NegotiationAutos.RivFeedsEntities _dbFeed = RivWorks.Model.Stores.FeedEntities(AppSettings.FeedAutosEntities_connString); #endregion public IProduct GetProductById(Guid productId) { // Do a quick sync of the feeds… SyncFeeds(); … // get a product… … return product; } private void SyncFeeds() { bool found = false; string […]

.net中的交易

在C#.Net 2.0中执行事务的最佳做法是什么? 什么是应该使用的类? 有什么缺陷等待所有提交和回滚的东西。 我刚刚开始一个项目,在将数据插入数据库时​​,可能需要执行一些事务。 任何有关交易的基本内容的反应或链接都是受欢迎的。

@Transactional注释属于哪里?

如果将@Transactional放置在DAO类和/或它们的方法中,还是最好使用DAO对象来注释正在调用的Service类? 或者是否有意义的注释这两个“层”?

使用事务或SaveChanges(false)和AcceptAllChanges()?

我一直在调查交易,看来只要我把false传递给SaveChanges() ,然后在没有错误的情况下调用AcceptAllChanges() ,他们就会在EF中自我照顾。 SaveChanges(false); // … AcceptAllChanges(); 如果有什么坏事怎么办? 我不必回滚,或者一旦我的方法超出范围,交易就结束了吗? 通过交易中途分配的任何专栏会发生什么? 我猜想如果有人在我之前添加了一个logging我的坏了,那么这意味着将有一个失踪的身份价值。 有没有任何理由在我的代码中使用标准的TransactionScope类?