![作业完成后,如何重新启动 Windows 服务器(而不仅仅是 SQL Server)?](https://linux22.com/image/720143/%E4%BD%9C%E4%B8%9A%E5%AE%8C%E6%88%90%E5%90%8E%EF%BC%8C%E5%A6%82%E4%BD%95%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%20Windows%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%88%E8%80%8C%E4%B8%8D%E4%BB%85%E4%BB%85%E6%98%AF%20SQL%20Server%EF%BC%89%EF%BC%9F.png)
我知道。这是一个愚蠢的问题,或者至少是一个危险的问题,但每次我运行 LOG 截断作业以将我们的 LDF 文件的大小从 300GIG 减少到 5GIG 时,我的主管都必须重新启动 DP 作业。
这是因为“截断作业”会分离数据库,将其更改为 SIMPLE 模式,执行其操作,然后将其更改回 FULL 模式。
为了节省他们记住或提醒我的日志截断工作已完成的时间,他们问我是否可以强制整个 Windows 服务器,而不仅仅是 SQL Server 和代理,而是整个服务器需要重新启动。
在 T-SQL 作业中可以实现这个功能吗?
请不要让我知道为什么,我只需要知道如何做。
谢谢
更新
这是我正在使用的事务作业,每月一次,以保持日志文件较小。
USE finprod
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE finprod
SET RECOVERY SIMPLE WITH NO_WAIT;
GO
-- Shrink the truncated log file to 5 gig
DBCC SHRINKFILE(finprod_log, 5024); --file_name is the logical name of the file to be shrink
GO
-- Reset the database recovery model.
ALTER DATABASE finprod
SET RECOVERY FULL WITH NO_WAIT;
GO
-- now run a full backup, otherwise the next TxnLog backup will fail
EXEC msdb.dbo.sp_start_job N'FINPROD - Backups.Full Backup';
答案1
我知道这是一个老问题但是......
听起来好像日志没有备份。请记住,日志备份的唯一时间是使用 BACKUP LOG。
看https://www.sqlskills.com/blogs/paul/new-script-is-that-database-really-in-the-full-recovery-mode/。