Não muito diferente do artigo original com .NET, com PowerShell também conseguimos criar um script simples para gerar um arquivo de trace de uma determinada instancia do SQL Server.
# Referências [void][system.reflection.assembly]::loadfrom("C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll") [void][system.reflection.assembly]::loadfrom("C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfoExtended.dll") function Get-Date2(){ [System.DateTime]::UtcNow } $template = "C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Profiler\Templates\Microsoft SQL Server\100\Tuning.tdf" $date = Get-Date $file = "C:\Temp\Trace$($date.Year)-$($date.Month)-$($date.Day) $($date.Hour)-$($date.Minute)-$($date.Second).trc" $conn = new-object Microsoft.SqlServer.Management.Common.SqlConnectionInfo $conn.ServerName = "Dalilah" $traceReader = new-object Microsoft.SqlServer.Management.Trace.TraceServer $traceReader.InitializeAsReader($conn, $template) $traceFile = new-object Microsoft.SqlServer.Management.Trace.TraceFile $traceFile.InitializeAsWriter($traceReader, $file) $timeout = (Get-Date2).AddSeconds(30) while ($traceFile.Write() -eq $TRUE -and $timeout -gt (Get-Date2)) { } $traceFile.Close() $traceReader.Close()
E o resultado: