Oracle具有可以发出的SQL命令,这样就不会记录事务。SQL Server 2008是否有类似的东西?
我的情况:我们需要在服务器(Dev,QA,Prod)上发送Tx日志,但是也许我们可以在开发人员机器上不使用它们。
Oracle具有可以发出的SQL命令,这样就不会记录事务。SQL Server 2008是否有类似的东西?
我的情况:我们需要在服务器(Dev,QA,Prod)上发送Tx日志,但是也许我们可以在开发人员机器上不使用它们。
NOLOGGED
选项,那么这不是真的。
Answers:
在任何情况下,都不能没有SQL Server中的事务日志。引擎根本无法运行。
您可以在开发机器上将恢复模型设置为“简单”,这可以防止未完成tran日志备份时事务日志膨胀。
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
SQL Server需要事务日志才能运行。
也就是说,事务日志有两种操作模式:
在完全模式下,事务日志将保持增长,直到您备份数据库为止。在简单模式下:每个Checkpoint都会“回收”事务日志中的空间。
很少有人需要在完全恢复模型中运行他们的数据库。使用完整模型的唯一要点是,如果您想每天多次备份数据库,并且备份整个数据库会花费太长时间-因此您仅备份事务日志。
事务日志整天保持增长,而您仅对其进行备份。那天晚上,您进行了完整备份,然后SQL Server截断了事务日志,开始重新使用事务日志文件中分配的空间。
如果仅执行完整数据库备份,则不需要完全恢复模式。
上面没有提到第三种恢复模式。恢复模式最终决定了LDF文件的大小以及写入它们的方式。如果要进行任何类型的批量插入,则应将数据库设置为“ BULK / LOGGED”。这使得散装刀片可以快速移动,并且可以随时更换。
为此,
USE master ;
ALTER DATABASE model SET RECOVERY BULK_LOGGED ;
改回它:
USE master ;
ALTER DATABASE model SET RECOVERY FULL ;
本着增加关于为什么有人不想要LDF的对话的精神,我添加以下内容:我们进行多维建模。本质上,我们将数据库用作大量的变量存储,可以使用外部程序批量处理这些变量。我们从不要求回滚。如果我们可以通过打开ALL日志记录来提高性能,那么我们将不胜感激。
Tx日志有什么问题?他们长大了吗?然后只需在检查点选项上设置截断即可。
从Microsoft文档:
在SQL Server 2000或SQL Server 2005中,“简单”恢复模型等效于SQL Server早期版本中的“截断登录检查点”。如果每次在服务器上执行检查点时事务日志都会被截断,这将阻止您使用该日志进行数据库恢复。您只能使用完整的数据库备份来还原数据。使用“简单”恢复模型时,将禁用事务日志的备份。
如果这仅是为了节省空间而仅用于开发机器,则只需使用简单的恢复模式,您就可以做的很好。
在生产计算机上,尽管我强烈建议您将数据库保持在完全恢复模式。这将确保您可以在需要时进行时间点恢复。
另外–使数据库处于完全恢复模式可以通过读取事务日志来帮助您撤消意外更新和删除。请参阅下面或更多详细信息。
如何在SQL Server 2005中回滚UPDATE查询?
读取SQL Server 2008中的日志文件(* .LDF)
如果生产机器上空间不足,则只需创建频繁的事务日志备份即可。