好的,到此为止。我不是数据库专家或管理员。事实上,除了偶尔的索引/查询调优之外,我并没有经常在数据库中闲逛。我经常忽略的一件事是 SQL Server 事务日志。我知道它的用途、它包含什么以及它是如何工作的(至少在概念上),但我想我不明白为什么 SQL Server 似乎如此依附于事务日志。
这是第一个问题。如果我错了,请纠正我,但在我看来,默认情况下事务日志将只包含数据库中所有更改的整个历史记录。有两个迹象表明情况可能确实如此。当我创建一个新数据库时,其日志的最大大小设置为“无限制增长”。第二个原因是我经常处理带有大量事务日志的小型数据库,无论我做什么都无法缩小。这似乎很奇怪,我无法相信这是真的。为什么我会默认想要整个历史记录?我只关心处于一致状态的最新版本数据。好吧,我怀疑在某些情况下可能有正当理由,但我认为这是一个额外的选择。
我的第二个问题是为什么摆脱转换日志如此复杂?只是我,还是真的没有直接的方法可以做到这一点?就在最近,我试图摆脱 5MB 数据库的 100MB+ 日志,我发现最简单的方法是分离数据库,删除日志并重新附加它(甚至 SQL Serve 也抱怨了一下)。我用我能找到的所有可能的选项尝试了缩小命令,但我只能缩小到大约 50%。数据库没有使用(没有活动连接),老实说,我根本不关心过去的任何转换。我注意到可能还有其他一些“方法”可以做到这一点;一些涉及备份和恢复。
我努力尝试阅读 MSDN 文档并了解更多关于转换的知识,但大约 15 分钟后,感觉就像在泥泞中转圈一样,我放弃了。我知道对于数据库管理员和专家来说,我的问题听起来很愚蠢。我很感激任何反馈。
编辑:在第一个答案之后,我意识到我可能不够清楚。我知道事务日志在事务期间是如何工作的,为什么它很重要,并且它可以用于备份目的。我想我想从开发人员的角度提出更多问题。大多数时候,我处理暂存/测试临时数据库,这些数据库不需要任何备份,除了我之外没有人使用,我经常发现自己需要传输它,并且在这种情况下拥有巨大的过渡日志是不必要的不便.