由于SQL Server中的事务日志已满,因此无法删除索引

时间:2018-07-06 00:23:58

标签: sql-server database indexing

当我尝试使用以下命令删除索引时:

DROP INDEX [ClusteredColumnStoreIndex-20180619-104559] ON [dbo].[Transactions]

我收到此错误:

  

Msg 9002,第17级,状态4,第4行
  由于“ ACTIVE_TRANSACTION”,数据库“ Metrics”的事务日志已满。

此时数据库所在的磁盘也空间不足。

有人可以帮我删除此索引吗?

1 个答案:

答案 0 :(得分:-1)

使用以下技术

1)确保在联机运行大规模索引操作之前已备份和截断事务日志,并且该日志具有足够的空间来存储预计的索引和用户事务。

2)考虑将索引操作的SORT_IN_TEMPDB选项设置为ON。这将索引事务与并发用户事务分开。索引事务将存储在tempdb事务日志中,并发用户事务将存储在用户数据库的事务日志中。如果需要,这允许在索引操作期间截断用户数据库的事务日志。此外,如果tempdb日志与用户数据库日志不在同一磁盘上,则这两个日志不会争用同一磁盘空间。

注意

验证tempdb数据库和事务日志具有足够的磁盘空间来处理索引操作。在完成索引操作之前,无法截断tempdb事务日志。

3)使用数据库恢复模型,该模型允许最小记录索引操作。这样可以减小日志的大小,并防止日志填满日志空间。

4)不要在显式事务中运行在线索引操作。在显式事务结束之前,日志不会被截断。