改变数据库恢复模型并动态收缩日志、数据库

改变数据库恢复模型并动态收缩日志、数据库

我通常每天在 GUI 中执行这些操作

  • 将数据库更改为简单恢复模式
  • 收缩日志文件
  • 收缩数据库文件
  • 将数据库更改为完整恢复模式

我能看懂剧本,但不会写剧本。

我只想给出数据库名称,然后脚本必须执行上述任务,并可能显示它的日志

声明@DBname varchar(50)设置@DBname ='AdventureWorks'

在这 2 行之后

答案1

请尝试以下动态 T-SQL 语句:

DECLARE @exec nvarchar(max);
DECLARE @db  nvarchar(max) = N'AdventureWorks';

SET @exec = N'ALTER DATABASE ' + QUOTENAME(@db) + N' SET RECOVERY SIMPLE';
EXEC sp_executesql @exec;

SET  @exec = N'DBCC SHRINKFILE (' + QUOTENAME(@db) + N')';
EXEC sp_executesql @exec;

SET  @exec = N'DBCC SHRINKFILE (' + QUOTENAME(@db) + N'_log)';
EXEC sp_executesql @exec;

SET @exec = N'ALTER DATABASE ' + QUOTENAME(@db) + N' SET RECOVERY FULL';
EXEC sp_executesql @exec;
    

将此代码添加到SQL Server 代理作业,它将保留执行的历史记录。稍后您可以右键单击该作业并查看其执行历史记录。

数据库文件将缩小到创建文件时指定的大小。

确保 AdventureWorks 和 AdventureWorks_log 是数据库文件的逻辑名称。

相关内容