如何减less生产数据库的SQL Server事务日志?

我想知道哪个是最好的解决scheme,可以减less活动生产服务器中的SQL Server事务日志,而不会停机?

  1. 数据库完整备份 – 应该提交事务日志? (如在Exchange服务器?)

  2. 在生产工作时间内手动从SSMS执行以下T-SQL脚本?

     -------------------------------------------------- ----------------------------
     -  Otto R. Radke  -  http://ottoradke.com
     - 信息:收缩数据库事务日志的T-SQL脚本。 只要设置
     - 下面的数据库名称,运行脚本,它会缩小
     - 事务日志。
     -------------------------------------------------- ----------------------------
     -------------------------------------------------- ----------------------------
     - 使用交易数据库的名称更新下面的行
     - 你想缩小的日志。
     -------------------------------------------------- ----------------------------
    使用 
     -------------------------------------------------- ----------------------------
     - 不要改变这条线以下的任何东西。
     -------------------------------------------------- ----------------------------
    走
     - 声明variables
     DECLARE @SqlStatement作为nvarchar(max)
    将@LogFileLogicalName声明为sysname
     - 改变数据库到简单的恢复
     SET @SqlStatement ='ALTER DATABASE'+ DB_NAME()+'SET RECOVERY SIMPLE'
     EXEC(@SqlStatement)
     - 确保它已被改变
     SELECT [name],[recovery_model_desc] FROM sys.databases WHERE [name] = DB_NAME()
     - 设置日志文件名称variables
     SELECT @LogFileLogicalName = [Name] FROM sys.database_files WHERE type = 1
     - 收缩日志文件
     DBCC Shrinkfile(@LogFileLogicalName,1)
     - 将数据库修改为FULL
     SET @SqlStatement ='ALTER DATABASE'+ DB_NAME()+'SET RECOVERY FULL'
     EXEC(@SqlStatement)
     - 确保它已经改回到满了
     SET @SqlStatement ='SELECT [name],[recovery_model_desc] FROM'+ DB_NAME()+'.sys.databases WHERE [name] ='''+ DB_NAME()+''''
     EXEC(@SqlStatement)
     -------------------------------------------------- ----------------------------
  1. 创build维护计划 – 随需应变 – 数据库收缩?

那么这些方法有什么区别和目的呢?

任何帮助将不胜感激。

谢谢。

您是否使用日志备份进行时间点恢复? 如果不是,那么pipe理日志文件的一种方法是将恢复模型设置为简单,并手动从SSMS(右键单击数据库… Tasks … Shrink … Databse)收缩数据库。 这将为您收缩数据库文件。 简单恢复模式应该保持一致的日志。