禁用事务日志

Oracle有SQL命令可以发出,以便事务不会被logging。 有什么类似的SQL Server 2008?

我的场景:我们需要服务器上的发送日志(Dev,QA,Prod),但也许我们可以在开发者机器上没有它们。

在任何情况下,您都无法在SQL Server中没有事务日志。 引擎根本不起作用。

您可以在您的开发机器上将恢复模式设置为SIMPLE,这样可以防止在日志备份尚未完成时事务日志发生膨胀。

 ALTER DATABASE MyDB SET RECOVERY SIMPLE; 

SQL Server需要一个事务日志才能运行。

这就是说事务日志有两种操作模式:

  • 简单
  • 充分

完整模式下,事务日志不断增长,直到备份数据库。 在简单模式下:事务日志中的空间在每个检查点被“回收”。

很less有人需要在完全恢复模式下运行他们的数据库。 使用Full模式的唯一的一点是,如果您想要每天多次备份数据库,并且备份整个数据库需要很长时间 – 所以您只需备份事务日志。

交易日志整天保持增长,你不断支持。 那晚你做完整的备份,然后SQL Server 截断事务日志,开始重用事务日志文件中分配的空间。

如果您只进行完整数据库备份 ,则不需要完全恢复模式。

上面没有提到第三种恢复模式。 恢复模式最终决定了LDF文件有多大,以及它们被写入多less。 如果你打算做任何types的批量插入,你应该把DB设置为“BULK / LOGGED”。 这使得大容量刀片可以快速移动,并可以随时更改。

为此,

 USE master ; ALTER DATABASE model SET RECOVERY BULK_LOGGED ; 

要改回它:

 USE master ; ALTER DATABASE model SET RECOVERY FULL ; 

本着增加谈论为什么有人不想要LDF的精神,我补充说:我们做多维build模。 本质上,我们使用数据库作为大量使用外部程序批量处理的variables。 我们不需要回滚。 如果我们能够通过全部日志logging来获得性能提升,那么我们就会心跳加速。

发送日志有什么问题? 他们成长? 然后在检查点选项上设置truncate。

从Microsoft文档:

在SQL Server 2000或SQL Server 2005中,“简单”恢复模型等同于早期版本的SQL Server中的“截断login检查点”。 如果每次在服务器上执行检查点时,事务日志都会被截断,则可以防止您使用日志进行数据库恢复。 您只能使用完整数据库备份来还原数据。 事务日志的备份在使用“简单”恢复模式时被禁用。

如果这只是开发机器为了节省空间,那么只要简单的恢复模式,你会做的很好。

在生产机器上,尽pipe强烈build议您保持数据库处于完全恢复模式。 这将确保您可以根据需要进行时间点恢复。

另外 – 使数据库处于完全恢复模式可以帮助您通过读取事务日志来撤消意外更新和删除。 见下面或更多的细节。

如何回滚SQL Server 2005中的UPDATE查询?

阅读sql server 2008中的日志文件(* .LDF)

如果空间是生产计算机上的问题,那么只需创build频繁的事务日志备份。