Oracle具有可以发出的SQL命令,因此不会记录事务。 SQL Server 2008有类似的东西吗?
我的场景:我们需要服务器上的Tx日志(Dev,QA,Prod),但也许我们可以在开发者机器上没有它们。
答案 0 :(得分:110)
在任何情况下,您都无法在SQL Server中使用事务日志。引擎根本不起作用。
您可以在开发计算机上将恢复模式设置为SIMPLE - 这样可以防止在未完成日志备份时导致事务日志膨胀。
ALTER DATABASE MyDB SET RECOVERY SIMPLE;
答案 1 :(得分:41)
SQL Server需要事务日志才能运行。
那说事务日志有两种操作模式:
在完整模式下,事务日志会持续增长,直到您备份数据库为止。在简单模式下:事务日志中的空间在每个检查点中被“回收”。
很少有人需要在完整恢复模式中运行他们的数据库。使用完整模型的唯一要点是,如果您想每天多次备份数据库,并且备份整个数据库需要的时间太长 - 所以您只需备份事务日志。
事务日志一整天都在不断增长,并且你会继续支持它。那天晚上你进行完整备份,然后SQL Server 截断事务日志,开始重用事务日志文件中分配的空间。
如果您只进行完整数据库备份,则不需要完全恢复模式。
答案 2 :(得分:40)
上面没有提到第三种恢复模式。恢复模式最终决定了LDF文件的大小以及它们的写入方式。如果您要进行任何类型的批量插入,则应将DB设置为“BULK / LOGGED”。这使得批量插入物可以快速移动,并且可以在运行中进行更改。
要这样做,
USE master ;
ALTER DATABASE model SET RECOVERY BULK_LOGGED ;
要更改它:
USE master ;
ALTER DATABASE model SET RECOVERY FULL ;
本着加入谈话的精神,为什么有人不想要LDF,我补充说:我们做多维建模。基本上我们使用DB作为大量使用外部程序批量处理的变量。我们不需要回滚。如果我们可以通过转换所有日志记录来提升性能,那么我们就会心烦意乱。
答案 3 :(得分:2)
Tx日志有什么问题?他们成长?然后只需在checkpoint选项上设置truncate。
来自Microsoft文档:
在SQL Server 2000或SQL Server中 2005年,“简单”的恢复模式是 相当于“截断登录 检查点“在早期版本的SQL中 服务器。如果是事务日志 每次检查点都被截断 在服务器上执行,这可以防止 你从使用日志数据库 复苏。你只能使用完整的 数据库备份以恢复数据。 事务日志的备份是 当“简单”恢复时禁用 使用模型。
答案 4 :(得分:0)
如果这只是开发机器以节省空间,那么只需使用简单的恢复模式,你就可以了。
在生产机器上,我强烈建议您将数据库保持在完全恢复模式。这将确保您可以根据需要进行时间点恢复。
此外 - 让数据库处于完全恢复模式可以帮助您通过读取事务日志来撤消意外更新和删除。见下文或更多细节。
How can I rollback an UPDATE query in SQL server 2005?
Read the log file (*.LDF) in sql server 2008
如果空间是生产机器上的问题,那么只需创建频繁的事务日志备份。