ReplicationAgentSchedule Class
SQL Server 2008
Represents the schedule for a replication agent job.
Assembly: Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)
// Define the server, database, and publication names string publisherName = publisherInstance; string publicationName = "AdvWorksSalesOrdersMerge"; string publicationDbName = "AdventureWorks"; string distributorName = publisherInstance; MergePublication publication; MergePartition partition; MergeDynamicSnapshotJob snapshotAgentJob; ReplicationAgentSchedule schedule; // Create a connection to the Publisher. ServerConnection publisherConn = new ServerConnection(publisherName); // Create a connection to the Distributor to start the Snapshot Agent. ServerConnection distributorConn = new ServerConnection(distributorName); try { // Connect to the Publisher. publisherConn.Connect(); // Set the required properties for the publication. publication = new MergePublication(); publication.ConnectionContext = publisherConn; publication.Name = publicationName; publication.DatabaseName = publicationDbName; // If we can't get the properties for this merge publication, // then throw an application exception. if (publication.LoadProperties() || publication.SnapshotAvailable) { // Set a weekly schedule for the filtered data snapshot. schedule = new ReplicationAgentSchedule(); schedule.FrequencyType = ScheduleFrequencyType.Weekly; schedule.FrequencyRecurrenceFactor = 1; schedule.FrequencyInterval = Convert.ToInt32(0x001); // Set the value of Hostname that defines the data partition. partition = new MergePartition(); partition.DynamicFilterHostName = hostname; snapshotAgentJob = new MergeDynamicSnapshotJob(); snapshotAgentJob.DynamicFilterHostName = hostname; // Create the partition for the publication with the defined schedule. publication.AddMergePartition(partition); publication.AddMergeDynamicSnapshotJob(snapshotAgentJob, schedule); } else { throw new ApplicationException(String.Format( "Settings could not be retrieved for the publication, " + " or the initial snapshot has not been generated. " + "Ensure that the publication {0} exists on {1} and " + "that the Snapshot Agent has run successfully.", publicationName, publisherName)); } } catch (Exception ex) { // Do error handling here. throw new ApplicationException(string.Format( "The partition for '{0}' in the {1} publication could not be created.", hostname, publicationName), ex); } finally { publisherConn.Disconnect(); if (distributorConn.IsOpen) distributorConn.Disconnect(); }
' Define the server, database, and publication names Dim publisherName As String = publisherInstance Dim publicationName As String = "AdvWorksSalesOrdersMerge" Dim publicationDbName As String = "AdventureWorks" Dim distributorName As String = publisherInstance Dim publication As MergePublication Dim partition As MergePartition Dim snapshotAgentJob As MergeDynamicSnapshotJob Dim schedule As ReplicationAgentSchedule ' Create a connection to the Publisher. Dim publisherConn As ServerConnection = New ServerConnection(publisherName) ' Create a connection to the Distributor to start the Snapshot Agent. Dim distributorConn As ServerConnection = New ServerConnection(distributorName) Try ' Connect to the Publisher. publisherConn.Connect() ' Set the required properties for the publication. publication = New MergePublication() publication.ConnectionContext = publisherConn publication.Name = publicationName publication.DatabaseName = publicationDbName ' If we can't get the properties for this merge publication, ' then throw an application exception. If (publication.LoadProperties() Or publication.SnapshotAvailable) Then ' Set a weekly schedule for the filtered data snapshot. schedule = New ReplicationAgentSchedule() schedule.FrequencyType = ScheduleFrequencyType.Weekly schedule.FrequencyRecurrenceFactor = 1 schedule.FrequencyInterval = Convert.ToInt32("0x001", 16) ' Set the value of Hostname that defines the data partition. partition = New MergePartition() partition.DynamicFilterHostName = hostname snapshotAgentJob = New MergeDynamicSnapshotJob() snapshotAgentJob.DynamicFilterHostName = hostname ' Create the partition for the publication with the defined schedule. publication.AddMergePartition(partition) publication.AddMergeDynamicSnapshotJob(snapshotAgentJob, schedule) Else Throw New ApplicationException(String.Format( _ "Settings could not be retrieved for the publication, " + _ " or the initial snapshot has not been generated. " + _ "Ensure that the publication {0} exists on {1} and " + _ "that the Snapshot Agent has run successfully.", _ publicationName, publisherName)) End If Catch ex As Exception ' Do error handling here. Throw New ApplicationException(String.Format( _ "The partition for '{0}' in the {1} publication could not be created.", _ hostname, publicationName), ex) Finally publisherConn.Disconnect() If distributorConn.IsOpen Then distributorConn.Disconnect() End If End Try
