-1

我在 SQL Server Express 上有一个用于 3 个 Asp.net 应用程序的数据库。恢复模式已满。

每天我都用这段代码执行备份

BACKUP DATABASE @databaseName TO DISK = @file WITH INIT, SKIP, NOREWIND, NOUNLOAD,  STATS = 10
BACKUP LOG @databaseName TO DISK = @fileLog WITH NOFORMAT, NOINIT,  NAME = N'Database-Transaction Log Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

当应用程序池的启动模式为 OnDemand 时,LDF 每天都会减少;当我使用 AlwaysRunning 时,日志不会减少。

我想使用始终运行的应用程序池。我可以使用收缩来减小日志大小吗?即使用户正在使用网站?

ALTER DATABASE [DatiMachinaWeb] SET RECOVERY SIMPLE
DBCC SHRINKFILE(DatiMachinaWeb_log)
ALTER DATABASE [DatiMachinaWeb] SET RECOVERY FULL

我错了吗?我该如何解决?谢谢

4

1 回答 1

1

是的,您可以使用 DBCC SHRINKFILE 在线减少日志大小。

但是暂时切换到简单恢复模式会破坏日志备份链,如果您需要使用在日志收缩之前创建的备份进行恢复,您将需要该链。

一般而言,不需要缩减日志:通常您应该更频繁地备份日志,或者只调整适合生成的日志记录活动和日志备份频率的大小。

于 2020-07-01T15:42:36.050 回答