笔记339 SQL Server 2008如何压缩日志(log)文件? 2013-8-10
笔记339 SQL Server 2008如何压缩日志(log)文件? 2013-8-10
1 --SQL Server 2008如何压缩日志(log)文件? 2013-8-10 2 3 --方法一: 4 DUMP TRAN gposdb WITH no_log 5 BACKUP LOG [GPOSDB] WITH no_log 6 DBCC SHRINKDATABASE([GPOSDB]) 7 8 EXEC [sys].[sp_helpdb] @dbname = gposdb -- sysname 9 10 --BigData为数据库名 11 DUMP TRANSACTION BigData WITH NO_LOG 12 BACKUP LOG BigData WITH NO_LOG 13 DBCC SHRINKDATABASE(BigData ) 14 15 --执行以上语句可以快速压缩日志文件到1M。 16 17 --但是以上语句中前两行在SQL Server 2008下无法执行 , 18 -- 19 --第一行提示“Incorrect syntax near the keyword 'TRANSACTION'.” 20 -- 21 --第二行提示“One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. ” 22 -- 23 --第三行可以执行。但日志log文件没有任何变化。 24 25 --原来SQL Server 2008 已经不再支持 DUMP TRANSACTION和BACKUP LOG WITH NO_LOG,详情请看 26 -- http://msdn.microsoft.com/zh-cn/library/ms187315%28SQL.90%29.aspx 27 -- http://msdn.microsoft.com/zh-cn/library/ms186865.aspx 28 -- 29 --sql Server 2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。 30 -- 31 --尝试方法三: 32 -- 33 --代码 34 use DB_NAME 35 sp_dboption DB_NAME, "trunc. log on chkpt.", true 36 checkpoint 37 sp_dboption DB_NAME, "autoshrink", true 38 39 --尝试方法四:(请提前备份文件!!) 40 -- 41 --1. Detach数据库。 42 --2.删除log文件。 43 --3. 附加数据库,选移除log文件,此时SQL Server 会自动重新建立一个512K 的Log 文件。 44 45 46 47 --方法五(没有试过,请提前备份文件!!): 48 -- 49 -- 1. 停止 SQL Server 的服务 50 -- 2. 使用删除 Log文件 51 -- 3. 重新启动SQL Server 服务,此时SQL Server 会自动重新建立一个1MB 的Log 文件。 52 53 54 --方法六: (尘尘提供) 55 --先设置恢复模式为“简单恢复”模式,再收缩: 56 57 ALTER DATABASE BigData 58 SET RECOVERY SIMPLE;--设置简单恢复模式 59 GO 60 DBCC SHRINKFILE (BigData_Log, 1); 61 GO 62 ALTER DATABASE BigData 63 SET RECOVERY FULL;--恢复为原模式 64 GO 65 66 67 --方法七: (尘尘提供) 68 69 70 71 USE BigData; 72 GO 73 BACKUP LOG DATABASENAME TO DISK='d:\test.bak' 74 -- Shrink the truncated log file to 1 MB. 75 DBCC SHRINKFILE (Bigdata_Log, 1); 76 GO