我想知道的是,如何及时跟踪日志文件大小的演变? SSMS是否提供了这样做的工具?
编写一个不时检查文件大小的脚本的选项确实可行,但在进入之前,有人可以告诉SSMS中是否已存在这样的工具吗?
谢谢,
答案 0 :(得分:2)
当我需要这样做时,我使用以下脚本(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)
快速又脏 - 我知道它可以改进:)
答案 1 :(得分:1)
它不会及时为您提供日志文件大小的确切值,但您可以使用跟踪来过滤“增长日志文件”事件。这也应该出现在默认跟踪中(默认情况下启用:))。
我知道这适用于SQL Server 2005和2008,不确定其他版本(我不知道你使用哪一个)。
你可以使用::fn_trace_gettable
函数。作为参数,您可以指定默认跟踪文件位置(它会自动解析目录中的所有文件,您只需要将“log.trc”作为文件名。
答案 2 :(得分:1)
SQL Server 2008中有一个工具,后来称为Data Collector。如果已在服务器上启用了数据收集,则可以跟踪历史数据和日志文件更改,以及观察特定数据库的自动增长事件。