我想知道哪个是最好的解决scheme,可以减less活动生产服务器中的SQL Server事务日志,而不会停机?
数据库完整备份 – 应该提交事务日志? (如在Exchange服务器?)
在生产工作时间内手动从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)
-------------------------------------------------- ----------------------------
那么这些方法有什么区别和目的呢?
任何帮助将不胜感激。
谢谢。
您是否使用日志备份进行时间点恢复? 如果不是,那么pipe理日志文件的一种方法是将恢复模型设置为简单,并手动从SSMS(右键单击数据库… Tasks … Shrink … Databse)收缩数据库。 这将为您收缩数据库文件。 简单恢复模式应该保持一致的日志。