If you have been
using Windows Service AppFabric, you would be aware of the two AppFabric
databases. The AppFabric Monitoring database and AppFabric Persistence
database. The Monitoring database stores events information while the
persistence database store information about instance data and metadata.
It is often are
requirement to clean up the database, especially if you deploying to a clean
environment. The following MSBuild file will help do that.
<UsingTask TaskFactory="PowershellTaskFactory" TaskName="ResetAppFabricDatabases" AssemblyFile="$(PowerShellAssemblyFile)">
<ParameterGroup>
<AppFabAdmins Required="true" ParameterType="System.String"/>
<AppFabReaders Required="true" ParameterType="System.String"/>
<AppFabUsers Required="true" ParameterType="System.String"/>
<MonitoringDbName Required="true" ParameterType="System.String" />
<MonitoringDbServer Required="true" ParameterType="System.String" />
<PersistenceDbName Required="true" ParameterType="System.String" />
<PersistenceDbServer Required="true" ParameterType="System.String" />
<ConfirmPreference Required="true" ParameterType="System.String" />
</ParameterGroup>
<Task>
<![CDATA[
$executionPolicy = Get-ExecutionPolicy
Set-ExecutionPolicy Unrestricted
Import-Module ApplicationServer
$log.LogMessage([Microsoft.Build.Framework.MessageImportance]"Normal", "Removing persistance database {0} on sql instance {1}.", $PersistenceDbName, $PersistenceDbServer)
Remove-ASPersistenceSqlDatabase -Force -Server $PersistenceDbServer -Database $PersistenceDbName
$log.LogMessage([Microsoft.Build.Framework.MessageImportance]"Normal", "Creating persistance database.")
Initialize-ASPersistenceSqlDatabase -Admins $AppFabAdmins -Readers $AppFabReaders -Users $AppFabUsers -Database $PersistenceDbName -Server $PersistenceDbServer
$log.LogMessage([Microsoft.Build.Framework.MessageImportance]"Normal", "Clearing Monitoring Database {0} on sql instance {1}.", $MonitoringDbName, $MonitoringDbServer)
Clear-ASMonitoringSqlDatabase -Database $MonitoringDbName -Server $MonitoringDbServer
Set-ExecutionPolicy $executionPolicy
]]>
</Task>
</UsingTask>
<ParameterGroup>
<AppFabAdmins Required="true" ParameterType="System.String"/>
<AppFabReaders Required="true" ParameterType="System.String"/>
<AppFabUsers Required="true" ParameterType="System.String"/>
<MonitoringDbName Required="true" ParameterType="System.String" />
<MonitoringDbServer Required="true" ParameterType="System.String" />
<PersistenceDbName Required="true" ParameterType="System.String" />
<PersistenceDbServer Required="true" ParameterType="System.String" />
<ConfirmPreference Required="true" ParameterType="System.String" />
</ParameterGroup>
<Task>
<![CDATA[
$executionPolicy = Get-ExecutionPolicy
Set-ExecutionPolicy Unrestricted
Import-Module ApplicationServer
$log.LogMessage([Microsoft.Build.Framework.MessageImportance]"Normal", "Removing persistance database {0} on sql instance {1}.", $PersistenceDbName, $PersistenceDbServer)
Remove-ASPersistenceSqlDatabase -Force -Server $PersistenceDbServer -Database $PersistenceDbName
$log.LogMessage([Microsoft.Build.Framework.MessageImportance]"Normal", "Creating persistance database.")
Initialize-ASPersistenceSqlDatabase -Admins $AppFabAdmins -Readers $AppFabReaders -Users $AppFabUsers -Database $PersistenceDbName -Server $PersistenceDbServer
$log.LogMessage([Microsoft.Build.Framework.MessageImportance]"Normal", "Clearing Monitoring Database {0} on sql instance {1}.", $MonitoringDbName, $MonitoringDbServer)
Clear-ASMonitoringSqlDatabase -Database $MonitoringDbName -Server $MonitoringDbServer
Set-ExecutionPolicy $executionPolicy
]]>
</Task>
</UsingTask>
Just call the
Target
"ResetAppFabricDatabases" from your project file as shown
below.
Please note that you
would need to have MSBuildExtensions pack installed on your machine to run this
script.
<Target Name="ClearDownAppFabric">
<ResetAppFabricDatabases AppFabAdmins="$(Domain)\$(AppFabricAdministratorsGroup)"
AppFabReaders="$(Domain)\$(AppFabricObserversGroup)"
AppFabUsers="$(Domain)\$(AppFabricUsersGroup)"
MonitoringDbName="$(APFMonitoringDatabaseName)"
MonitoringDbServer="$(APFDatabaseServer)"
PersistenceDbName="$(APFPersistenceDatabaseName)"
PersistenceDbServer="$(APFDatabaseServer)"
ConfirmPreference="None"/>
</Target>
<ResetAppFabricDatabases AppFabAdmins="$(Domain)\$(AppFabricAdministratorsGroup)"
AppFabReaders="$(Domain)\$(AppFabricObserversGroup)"
AppFabUsers="$(Domain)\$(AppFabricUsersGroup)"
MonitoringDbName="$(APFMonitoringDatabaseName)"
MonitoringDbServer="$(APFDatabaseServer)"
PersistenceDbName="$(APFPersistenceDatabaseName)"
PersistenceDbServer="$(APFDatabaseServer)"
ConfirmPreference="None"/>
</Target>
You can download the sample from here.
No comments:
Post a Comment