Sql 截断期间取消查询
我想知道如果在截断期间取消查询执行会发生什么情况,记录是否会被删除?有没有办法恢复它们? Truncate在包含150万条记录的表上被激活 在谷歌上搜索一下,我知道答案是否定的,但我想确定一下。Sql 截断期间取消查询,sql,sql-server-2005,Sql,Sql Server 2005,我想知道如果在截断期间取消查询执行会发生什么情况,记录是否会被删除?有没有办法恢复它们? Truncate在包含150万条记录的表上被激活 在谷歌上搜索一下,我知道答案是否定的,但我想确定一下。 我正在使用SQL Server 2005Truncate解除分配给表的页面 这仍然是原子的,因为您可以取消并让它回滚。您还可以在显式事务中包含一个TRUNCATE,并执行回滚 但是,一旦提交了事务,记录就会消失。与删除不同,由于操作的日志记录最少,因此在记录内容的事务日志中没有记录。关于链接的良好解释
我正在使用SQL Server 2005
Truncate
解除分配给表的页面
这仍然是原子的,因为您可以取消并让它回滚。您还可以在显式事务中包含一个TRUNCATE
,并执行回滚
但是,一旦提交了事务,记录就会消失。与删除不同,由于操作的日志记录最少,因此在记录内容的事务日志中没有记录。关于链接的良好解释
据我所知,如果您有一个事务控件,那么DELETE和TRUNCATE都可以回滚
区别在于,在没有事务的情况下,如果执行删除操作,您仍然可以通过还原日志来恢复数据,例如,在截断操作中无法执行的操作,因为删除操作将逐行记录,而截断操作(正如@JNK所指出的)的记录最少。如果截断操作是未提交的事务的一部分,取消查询执行可能会导致记录被还原。如果您确实设法在中途取消它,并且不在显式事务中,它将作为自动提交事务的一部分回滚。可能不太可能,因为truncate非常快,延迟truncate可以用于大型表。它不是事务的一部分。当我计算取消后,它只有300000条记录。我想剩下的都没了……如果我在截断之前把所有记录都放到临时表中,这对我也没什么帮助,对吧?@Alina-不太可能帮到你。如果数据足够重要,它可能仍然可以恢复,因为它仍然存在于数据页上,并且您可能可以从事务日志中确定解除分配的页面(如果该信息仍然存在),但我不知道有任何实用程序可以这样做。谢谢,下次我会更加小心。。。非常不幸