Purge Monitoring Database Write Action

Microsoft.ApplicationServer.ClearAsMonitoringSqlDatabase.WriteAction (WriteActionModuleType)

Deletes event data from a monitoring database

Element properties:

TypeWriteActionModuleType
IsolationAny
AccessibilityPublic
RunAsMicrosoft.ApplicationServer.StoreAdminAccount
InputTypeSystem.BaseData

Member Modules:

ID Module Type TypeId RunAs 
DS WriteAction System.CommandExecuter Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
PurgeModestring$Config/PurgeMode$Purge Mode
Archivebool$Config/Archive$Archive
CutoffDateTimedatetime$Config/CutoffDateTime$Cutoff Date Time

Source Code:

<WriteActionModuleType ID="Microsoft.ApplicationServer.ClearAsMonitoringSqlDatabase.WriteAction" Accessibility="Public" RunAs="MicrosoftApplicationServerLibrary!Microsoft.ApplicationServer.StoreAdminAccount" Batching="false">
<Configuration>
<xsd:element minOccurs="1" name="PurgeMode" type="xsd:string"/>
<xsd:element minOccurs="1" name="Archive" type="xsd:boolean"/>
<xsd:element minOccurs="1" name="CutoffDateTime" type="xsd:dateTime"/>
<xsd:element minOccurs="1" name="ConnectionStringHash" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="PurgeMode" Selector="$Config/PurgeMode$" ParameterType="string"/>
<OverrideableParameter ID="Archive" Selector="$Config/Archive$" ParameterType="bool"/>
<OverrideableParameter ID="CutoffDateTime" Selector="$Config/CutoffDateTime$" ParameterType="datetime"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<WriteAction ID="DS" TypeID="System!System.CommandExecuter">
<ApplicationName>%windir%\system32\windowspowershell\v1.0\powershell.exe</ApplicationName>
<WorkingDirectory/>
<CommandLine>-Command ".\Clear-ASMonitoringSqlDatabase.ps1" </CommandLine>
<TimeoutSeconds>300</TimeoutSeconds>
<RequireOutput>true</RequireOutput>
<Files>
<File>
<Name>Clear-ASMonitoringSqlDatabase.ps1</Name>
<Contents><Script>

function Get-MonitoringConnectionString
{
Param($locations)

.{
$monitoringInfo = $null
foreach ($location in $locations)
{
if ($location[0] -eq $null)
{
$monitoringInfo = Get-AsAppMonitoring -root -ErrorAction SilentlyContinue
}
else
{
$monitoringInfo = Get-AsAppMonitoring -SiteName $location[0] -VirtualPath $location[1] -ErrorAction SilentlyContinue
}

if ($monitoringInfo -ne $null)
{
return $monitoringInfo.ConnectionString
}
}

return $null
}

trap
{
return $null
}
}

if ((Get-Command -Module ApplicationServer) -eq $null)
{
Import-Module ApplicationServer # Application Server Extensions for .NET 4
}

$connectionStringHash = '$Config/ConnectionStringHash$'
$cutoffDateTime = '$Config/CutoffDateTime$'
[Microsoft.ApplicationServer.Management.Data.PurgeModeType]$purgeMode = '$Config/PurgeMode$'
[bool]$archive = $false
[string]$archiveStringValue = '$Config/Archive$'
if ($archiveStringValue -eq 'true')
{
[bool]$archive = $true
}

$provider = ''
$connectionString = ''


[string]$DbInfoCacheFileName = "$env:ALLUSERSPROFILE\Microsoft AppFabric Management Pack\DbInfoCache.xml"
if(Test-Path $DbInfoCacheFileName)
{
$existingDbInfoCache = Import-Clixml -Path $DbInfoCacheFileName
}
else
{
Write-Error "Unable to read $DbInfoCacheFileName. Please check if file exists and you have permissions to read this file."
return
}

if ($existingDbInfoCache.Contains($connectionStringHash))
{
$connectionString = Get-MonitoringConnectionString -locations $existingDbInfoCache[$connectionStringHash].Locations
$provider = $existingDbInfoCache[$connectionStringHash].Provider
}

if ([string]::IsNullOrEmpty($connectionString))
{
Write-Error "Unable to retrieve connection string information associated with this object"
return
}


Clear-ASMonitoringSqlDatabase -ConnectionString $connectionString -CutoffTime $cutoffDateTime -PurgeMode $purgeMode -Archive:$archive -Confirm:$false
Write-Output "Success"



</Script></Contents>
<Unicode>1</Unicode>
</File>
</Files>
</WriteAction>
</MemberModules>
<Composition>
<Node ID="DS"/>
</Composition>
</Composite>
</ModuleImplementation>
<InputType>System!System.BaseData</InputType>
</WriteActionModuleType>