大家好,我叫 Curt。是 GSE 团队的一名高级首席工程师。
本视频专门演示如何缩减 Microsoft SQL Server 数据库事务日志文件。我们将回顾压缩事务日志的不同方法,以及如果压缩日志操作无法按预期运行该怎么办。
我们有几种不同的方法来缩减日志文件。我们可以进入 SQL Server Management Studio。转到数据库的属性并在那里执行缩减操作,我们将首先演示这一点。
然后我们还有执行 TSQL ShrinkFile 命令的操作。在这个视频中,我们还想讨论的是,如果缩减文件操作无法按预期运行,会发生什么情况,我们将讨论在这种情况下您希望采取的选项。接下来,我们进入 Studio Management。
我们将使用“AdventureWorks2017”数据库,如果我们转到数据库菜单上的“任务”并归结为“收缩”,我们有两个不同的选项。
我们可以在数据库级别处理数据库中的所有文件或处理特定文件,在这种情况下,我们肯定要处理特定文件。默认情况下,如果您查看这里的调色板,可以看到“数据类型”下显示的“数据”。
我们不打算对数据库文件执行任何操作,而是要缩小事务日志,因此事务日志实际上是“文件类型”下的“日志”。现在,我们有一些关于数据库的信息。
数据库日志相当小,这是一个新数据库,我们可以看到分配给该事务日志的大小,以及可用空间。可用空间可能很重要,因为如果没有可用空间,我们就无法对数据库执行缩减文件操作。
有几个不同的选项。我们不会在这里详细介绍,但我们可以选择释放未使用的空间,这基本上会截断事务日志。只需单击“OK”即可运行此操作,系统会执行缩减,或者尝试对该数据库执行缩减。取而代之的是,我们将继续查看用于缩减数据库的 TSQL 选项。
我今天有点懒,所以我要继续来到“脚本操作到剪贴板”,它将拉取事务,如果我们在这里单击“确定”,就会运行的 TSQL 命令。
单击“Cancel”,然后粘贴 TSQL 命令,对 AdventureWorks2017 数据库执行缩减操作。再来一遍这个命令,它是一个收缩文件命令。我们正在处理 AdventureWorks2017 日志,我们可以指定我们希望该日志有多小。
在本例中,我们将其保留为默认值 0。如果在此处未定义任何内容,或者将值保留为零,它将尝试将文件缩小到原始文件大小。我们有“truncateonly”选项,它将事务日志中的可用空间放回操作系统。
在运行该软件时,我们得到了一份报告,显示了它所执行的操作和当前规模。它继续将其缩减到大约 1 兆,这对我们来说是件好事。这让我们额外收回了不少磁盘空间。因此,我们还想在本视频中讨论的一件事是,如果我们运行缩减文件,但它无法成功运行,会发生什么情况。
缩减文件操作失败的首要原因是数据库中没有足够的可用空间来执行缩减文件命令。我们要做的第一件事是计算出文件中的可用空间量。
现在,我们确实通过 GUI 菜单看到了它,我们还可以针对它运行此特定命令 - 现在我们在这里改变了重点,我们正在使用 AdventureWorks2019 数据库。运行这个特定的命令,即 select 命令,它将为我们提供该数据库中显示的可用空间量。
目前,我们在数据库中看到了三兆字节的可用空间。我们可以使用两个不同的选项来尝试减少数据库,以防该特定数据库中的可用空间不足。我们可以更改冒险 Works 2019 数据库的选项,即恢复选项。
如果我们将恢复选项更改为“简单”并运行 dbcc shrink file 命令,它应该将文件减小到比原始大小小得多的大小。每当我们将数据库置于简单模式时,事务日志都会处理活动的事务,任何非活动的内容都会从日志中清除。
我们可以运行这个特定的命令。大多数生产数据库都将处于完全恢复状态,因此使用“简单”模式可以让我们(或者至少给我们一个机会)成功运行缩减文件命令。我们处于简单模式,同样,我们的情况是无法成功运行。
进入简单模式后,我们成功运行了同步压缩文件操作,它为我们提供了有关新文件大小的信息,在特定情况下,我们要做的最后一件事就是将其放回完全恢复模式。
因此,在这一点上,我们使用收缩文件命令处理了一个无法管理的事务日志文件,并实际上将其置于能够压缩该文件的状态,并将其放回现在可以备份的模式,以确保我们获得最新的事务信息。
我们关于如何缩减 Microsoft SQL Server 数据库事务日志的演示到此结束。
感谢观看。