没有什么限制,事务甚至可以跨批处理。当然这样性能就大受影响了。
在提交事务时,脏页必须写入日志文件(但不一定要立即写入mdf)并确认才算提交成功。否则提交失败。checkpoint指这样的时刻(shut server,或一定时间间隔后):部分脏页被写入日志文件或数据文件。大体如此,具体可参见bol的"检查点和日志的活动部分"条。
在提交事务时,脏页必须写入日志文件(但不一定要立即写入mdf)并确认才算提交成功。否则提交失败。checkpoint指这样的时刻(shut server,或一定时间间隔后):部分脏页被写入日志文件或数据文件。大体如此,具体可参见bol的"检查点和日志的活动部分"条。
2. 修改(包括新增和删除)任何数据时,将原记录(或者更大范围,比如页面、表等等)加锁,然后保存要修改的结果。重复这个过程。
3. 事务提交命令则开始提交事务过程,即将保存的更改结果真正写入数据原来的位置。
4. 事务回滚命令则比较简单,将保存的数据修改计划丢弃就是了。因此此过程与事务中更新的数据的多少无关。如果在事务未提交也未回滚的过程中,服务器崩溃了,那么服务器重新启动时自动回滚此事务。如果此事务在回滚过程中服务器崩溃了,服务器启动时仍然回滚。如果此事务在提交过程中服务器崩溃了,服务器启动时可以根据保存的数据更新计划再次进行提交,这样即使服务器经常宕机数据也会尽量完好地提交到数据库。这最后一点才是事务处理的“真谛”。SQL Server某些版本为了有一个好的“性能”,而牺牲了可靠性。他将数据更新资料保存在内存中而不是硬盘上。数据库遇到意外故障时很容易丢失最后的事务中的数据。