如何在 SQL Server 中跟踪日志文件大小的演变?

Posted

技术标签:

【中文标题】如何在 SQL Server 中跟踪日志文件大小的演变?【英文标题】:How to trace log file size evolution in SQL Server? 【发布时间】:2013-04-26 13:30:45 【问题描述】:

我想知道的是,如何及时跟踪日志文件大小的演变? SSMS 是否提供了这样做的工具?

编写一个不时检查文件大小的脚本的选项确实是可行的,但是在进入之前,谁能告诉SSMS中是否已经存在这样的工具?

谢谢,

【问题讨论】:

【参考方案1】:

当我需要这样做时,我使用以下脚本 (powershell):

$doforever = 1

$cn2 = new-object system.data.SqlClient.SQLConnection("Data Source=somedatasource;Integrated Security=false;Initial Catalog=master;User  ID=sa;Password=somepasswordimnottelling");
$cmd = new-object system.data.sqlclient.sqlcommand("dbcc sqlperf(logspace)", $cn2);
$cn2.Open();

do 

$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)

$ds.tables[0] | out-string | %$_.split("`n")| %$_ -replace("\s+",",")|%"0,1" -f (get-date -format 'dd/MM/yyyy HH:mm:ss'),$_ | add-content -path c:\perflogs\admin\logsize.csv

sleep -s 300

while ($doForever -eq 1)

又快又脏——我知道它可以改进:)

【讨论】:

【参考方案2】:

它不会及时为您提供日志文件大小的准确值,但您可以使用跟踪来过滤“增长日志文件”事件。这也应该出现在默认跟踪中(默认启用:))。 我知道这适用于 SQL Server 2005 和 2008,不确定其他版本(我不知道您使用哪一个)。 为此,您将使用 ::fn_trace_gettable 函数。作为参数,您指定默认跟踪文件位置(它会自动解析目录中的所有文件,您只需将“log.trc”作为文件名。

【讨论】:

【参考方案3】:

在 SQL Server 2008 和更高版本中提供了一个工具,称为 Data Collector。如果您在服务器上启用了数据收集,您可以跟踪历史数据和日志文件更改以及观察特定数据库的自动增长事件。

MSDN Data Collector

【讨论】:

以上是关于如何在 SQL Server 中跟踪日志文件大小的演变?的主要内容,如果未能解决你的问题,请参考以下文章

如何管理 SQL Server 日志大小

sql server 跟踪日志

SQL SERVER 2000数据库日志文件过大如何解决

如何清除SQLserver 日志

如何删除SQL SERVER中的日志文件

SQL Server:如何增加事务日志的大小?