如何管理大型 SQL Server 数据库:事务日志、减小大小、更改表

0 sql-server size transaction-log

您好,我对如何管理大型 SQL Server 数据库有些困惑。

假设大小为 15GB,在简单恢复模式下可用 3GB。

服务器不是由我管理的,我不能更改大小,甚至不能临时更改,也不能分离/重新附加备份/恢复。

假设我只能管理数据和数据库的结构。

如果我想改变一个表,添加一列,或者只删除某些行(在 a 之前datetime),或者想将几nvarchar(MAX)列设为NULL以节省空间,这有什么影响?

我经常收到错误“没有更多日志空间”。

然后我缩小了数据库,没有任何变化,我的可用空间更少......

我不需要事务日志,那么我该怎么做才能执行这些操作而不产生有关事务日志大小的错误消息?

谢谢!

Sim*_*rts 5

积分,排名不分先后:

  • 确实需要事务日志,原因有很多,我不打算讨论。也就是说,如果您在简单恢复模式下用完事务日志空间,那可能意味着您有长时间运行的事务。使您的交易尽可能短开始交易之前收集所有必需的用户输入)。(当 SQL Server 尝试释放日志空间时,它只能释放到最旧的当前事务的开始。)
  • 使NVARCHAR(MAX)列可以为空不一定会为您节省很多空间(在我的脑海中,每行每列将占用 2 个字节)。
  • 删除/归档旧数据会对您有所帮助 - 需要注意的是,它必须首先通过事务日志。
  • 缩小数据库对您没有帮助,事实上它会降低性能(无论是在运行时还是运行后,因为DBCC SHRINKDATABASE使用了一种几乎完美地分割索引的幼稚算法)并且不会重新获得太多空间(如果有的话)。