禁用事务日志

Raj*_*ore 73 sql-server sql-server-2008

Oracle具有可以发出的SQL命令,因此不会记录事务.SQL Server 2008有类似的东西吗?

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

Aar*_*ton 117

在任何情况下,您都离不开SQL Server中的事务日志.发动机根本不起作用.

您可以在您的开发机器上将恢复模型设置为SIMPLE - 这将防止在未完成转换备份时事务日志膨胀.

ALTER DATABASE MyDB SET RECOVERY SIMPLE;
Run Code Online (Sandbox Code Playgroud)

  • 只是一个大头:这个答案是100%技术上正确的.但它只是您想要在您的开发者机器上使用的,或者当您不关心能够备份数据时.有关更多信息和背景信息,请参阅http://www.sqlservervideos.com/video/logging-essentials/和http://www.sqlservervideos.com/video/shrinking-log-files/. (17认同)
  • 或用于用作临时工作空间的数据库。 (2认同)

Ian*_*oyd 43

SQL Server需要事务日志才能运行.

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

  • 简单
  • 充分

完全模式下,事务日志会持续增长,直到您备份数据库为止.在简单模式下:每个检查点都会"回收"事务日志中的空间.

很少有人需要在完全恢复模型中运行他们的数据库.使用完整模型的唯一要点是,如果您希望每天多次备份数据库,并且备份整个数据库需要太长时间 - 因此您只需备份事务日志.

事务日志一整天都在增长,你会继续支持它.那天晚上你进行完整备份,然后SQL Server 截断事务日志,开始重用事务日志文件中分配的空间.

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


小智 42

上面没有提到第三种恢复模式.恢复模式最终决定了LDF文件的大小以及它们的写入方式.如果您要进行任何类型的批量插入,则应将DB设置为"BULK/LOGGED".这使得批量插入物可以快速移动,并且可以在运行中进行更改.

为此,

USE master ;
ALTER DATABASE model SET RECOVERY BULK_LOGGED ;
Run Code Online (Sandbox Code Playgroud)

要改回来:

USE master ;
ALTER DATABASE model SET RECOVERY FULL ;
Run Code Online (Sandbox Code Playgroud)

本着加入谈话的精神,为什么有人不想要LDF,我补充一点:我们做多维建模.基本上我们使用DB作为大量使用外部程序批量处理的变量.我们不需要回滚.如果我们可以通过转换所有日志记录来提升性能,那么我们就会心烦意乱.

  • 谢谢你。我们以完全相同的方式使用数据库。我们并不关心是否能够回滚。纯粹的性能是我们所追求的 (3认同)