管理 SQL Server 的事务日志
作者 佚名技术
来源 数据库编程
浏览
发布时间 2012-03-21
用 DBCC SQLPERF 语句返回一个 SQL Server 实例的每个数据库的事务日志信息,要获取日志数据,你必须在参数中使用 LOGSPACE 关键字,如下所示: DBCC SQLPERF(LOGSPACE); 这条语句返回以 MB 计算的日志大小,日志空间使用的百分比,以及你的 SQL Server 实例中每个数据库的日志状态。 EmployeeDB 数据库的信息如下: Database Name Log Size (MB) Log Space Used (%) Status EmployeeDB 0.9921875 40.05906 0 这个例子中 EmployeeDB 日志大约是 1 MB 大小,并且使用了 40% 的日志空间。 你也可以在 SQL Server Management Studio 中生成一个图形化的报表,结果类似于执行 DBCC SQLPERF 语句。方法是:在对象浏览器中,右键单击数据库名称,选择报表,再选择标准报表,最后点击磁盘利用率。 备份日志文件 如果你将数据库的恢复模式配置为完全模式或大容量模式,你就应当有规律的备份事务日志,这样你就可以截断日志并释放不活动的日志空间。备份也可以用于恢复数据库(通常与数据库备份一起使用)。 在事务日志备份之前,必须先执行过一个数据库的完整备份。通常,在我使用本文中的日志备份前,一般都先执行下面的数据库备份语句: BACKUP DATABASE EmployeeDB TO DISK = ''E:\DbBackup\EmployeeDB_dat.bak''; 注意:执行这段代码时,确认指定路径存在或指定一个另外的路径。 执行完数据库备份后,我一般运行下面的数据修改语句,以使当前日志不包含已备份的内容: USE EmployeeDB; UPDATE Employees SET JobTitle = ''To be determined''; UPDATE Employees SET CountryRegionName = ''US'' WHERE CountryRegionName = ''United States''; DELETE Employees WHERE BusinessEntityID > 5; 然后我再运行 DBCC SQLPERF 查看日志空间的统计信息,该语句返回下面的结果: Database Name Log Size (MB) Log Space Used (%) Status EmployeeDB 0.9921875 64.41929 0 你可以看到,日志空间的使用率已从40%提升到接近65%。 备份完数据库,你就可以备份事务日志了。执行事务日志的备份,使用 BACKUP LOG 语句,并指定备份位置,如下: -- back up transaction log BACKUP LOG EmployeeDB TO DISK = ''E:\LogBackup\EmployeeDB_log.bak''; 同样要注意路径的问题。 这里我指定了备份路径,然而, BACKUP 还支持其它选项,可以在SQL Server Books Online查看 “BACKUP (Transact-SQL)” 主题以获得更多信息。 执行完事务日志的备份以后, SQL Server 数据库引擎会自动截断不活动的日志空间。(注意:截断事务日志只是移除了不活动的虚拟日志空间,并不减小文件大小)要减小日志文件,你应当对文件进行收缩。要检查是否截断了日志,请再次运行 DBCC SQLPERF 语句。现在的结果应当如下面所示: Database Name Log Size (MB) Log Space Used (%) Status EmployeeDB 0.9921875 44.88189 0 现在日志空间已下降到45%。 修改日志文件 你可以使用 ALTER DATABASE 语句来修改日志文件。在执行语句时,必须使用适当的选项指定修改文件的原因( MODIFY FILE clause)。 除了给 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于管理 SQL Server 的事务日志的所有评论