没有日志记录的DML操作 - SQL Server

时间:2010-10-03 10:52:00

标签: sql-server file logging dml

有没有办法我们可以做DML操作而不将其记录到日志文件中?

例如,当我在数据库中插入一行时,无论是否使用事务,此操作都将记录在日志文件中。但我不想在日志文件中记录此操作。

2 个答案:

答案 0 :(得分:4)

没有。决不。不可能。

记录每个操作的原因是:如果它中途失败怎么办?服务器崩溃了?等等

总结:ACID

中的A,C和D.

如果你不想这样,那么使用我真的会考虑使用非ACID NoSQL替代品。

答案 1 :(得分:0)

SQL Server将始终将插入内容写入日志文件。当服务器重置时,它需要该信息来恢复处于一致状态的数据库。

您可以通过选择恢复模式来更改为影响日志记录:

alter database YourDb set recovery { FULL | BULK_LOGGED | SIMPLE } 

在简单模式下,SQL Server只记录正在运行的事务,并开始重用不再需要的部分日志。在简单模式下,日志文件通常很小。

如果要在插入操作后删除日志,可以使用:

alter database YourDb set recovery simple with no_wait
dbcc shrinkfile(YourDbLog, 1)
alter database YourDb set recovery <<old model here>>

请注意,这会删除所有日志。您只能在运行此命令后使用还原上次完整备份。