日期:2014-05-17  浏览次数:20385 次

关于SQL Server中的事务
1.假如有一个表A 大概有1000万条数据,如果在Microsoft SQL Server Management Studio中执行delete from 表A,假如删除该表的数据要30分钟,但是在我在执行了十多分的时候我取消了该语句,这样是否会有部分数据被删除了?
2.在1中执行单条语句中没有用到事务,那么系统是否自动加上事务呢?我记得以前好象是说有隐式的事务,若有怎样查到有用到事务?
3.在C#中的一个事务中先后执行了两个带有事务的存储过程,想了解下C#中的事务和SQL中的事务有什么区别,假如我仅仅用C#中事务是否可以保证数据的完整性呢?

------解决方案--------------------
第一个问题可以参考撤销单个UPDATE语句是否造成数据损失?
第二个: 每一条T-SQL语句都可以看作是默认被包裹在一个事务之中的。查询的话你直接插fn_dblog就可以。
第三个一样的效果,都可以保证数据完整性。 其实所有的语句最后的执行都是到数据库中的,C#应该是做了一次封装而已。
------解决方案--------------------
引用:
第一个问题可以参考撤销单个UPDATE语句是否造成数据损失?
第二个: 每一条T-SQL语句都可以看作是默认被包裹在一个事务之中的。查询的话你直接插fn_dblog就可以。
第三个一样的效果,都可以保证数据完整性。 其实所有的语句最后的执行都是到数据库中的,C#应该是做了一次封装而已。

Propose As Answer
------解决方案--------------------
引用:
第一个问题可以参考撤销单个UPDATE语句是否造成数据损失?
第二个: 每一条T-SQL语句都可以看作是默认被包裹在一个事务之中的。查询的话你直接插fn_dblog就可以。
第三个一样的效果,都可以保证数据完整性。 其实所有的语句最后的执行都是到数据库中的,C#应该是做了一次封装而已。

被你说完了!
补充一下第一条吧。数据虽然不会丢失。但是这个表有可能会不能使用,你虽然取消了执行但是上面的锁没有释放。还很有可能是表锁。数据量大!
------解决方案--------------------
表锁是肯定的,因为你删除了300W行数据,除非你用游标一行一行的删除,另外,还要不能用事务。