traceflag powershell 입력
디폴트 인스턴스에 모든 traceflag 를 다 지우고 변수에 있는것들만 추가해준다.
#Get SQL Server Instance Path:
$TraceFlags = "-T1117 -T1118"
$SQLService = "SQL Server (MSSQLSERVER)";
$SQLInstancePath = "";
$SQLServiceName = ((Get-Service | WHERE { $_.DisplayName -eq $SQLService }).Name).Trim();
If ($SQLServiceName.contains("`$")) { $SQLServiceName = $SQLServiceName.SubString($SQLServiceName.IndexOf("`$")+1,$SQLServiceName.Length-$SQLServiceName.IndexOf("`$")-1) }
foreach ($i in (get-itemproperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server").InstalledInstances)
{
If ( ((Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL").$i).contains($SQLServiceName) )
{ $SQLInstancePath = "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\"+`
(Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL").$i}
}
$SQLInstancePath
#Delete All Param
$ParamCount = (Get-ItemProperty "$SQLInstancePath\MSSQLServer\Parameters" | Select SQLArg* | Format-List | Out-String ).Split(":").Count -8
for ($i=0; $i -le $ParamCount; $i++)
{
$ParamNumber = $i + 3
Remove-ItemProperty -Path "$SQLInstancePath\MSSQLServer\Parameters" -Name ("SQLArg$ParamNumber")
}
#Add New Param
$ParamNumber = 3
$TraceFlags.Split(" ") | ForEach {
$ParamValue = "$_"
New-ItemProperty -Path "$SQLInstancePath\MSSQLServer\Parameters" -Name ("SQLArg$ParamNumber") -Value $ParamValue -PropertyType String -Force | Out-Null
$ParamNumber++
}
(Get-ItemProperty "$SQLInstancePath\MSSQLServer\Parameters" | Select SQLArg* | Format-List | Out-String ).trim() -replace "SQLArg","`tSQLArg"