Cómo especificar programaciones de sincronización (programación con RMO)
La replicación usa el Agente SQL Server para programar los trabajos de las actividades que se producen periódicamente, como la generación de instantáneas y la sincronización de suscripción. Puede usar objetos de administración de replicación (RMO) mediante programación para especificar las programaciones de los trabajos de agente de replicación.
Nota
Si crea una suscripción y especifica un valor false para CreateSyncAgentByDefault (comportamiento predeterminado de las suscripciones de extracción), no se crea el trabajo del agente y se omiten las propiedades de la programación. En este caso, la aplicación debe determinar la programación de sincronización. Para obtener más información, vea Cómo crear una suscripción de extracción (programación con RMO) y Cómo crear una suscripción de inserción (programación con RMO).
Para definir una programación del agente de replicación al crear una suscripción de inserción a una publicación transaccional
Cree una instancia de la clase TransSubscription para la base de datos de suscripciones que está creando. Para obtener más información, vea Cómo crear una suscripción de inserción (programación con RMO).
Antes de llamar Create, establezca uno o varios de los campos siguientes de la propiedad AgentSchedule:
FrequencyType- el tipo de frecuencia (como diaria o semanal) que usa al programar el agente.
FrequencyInterval- el día de la semana en el que se ejecuta un agente.
FrequencyRelativeInterval- la semana de un mes determinado en la que se programa el agente para que se ejecute mensualmente.
FrequencyRecurrenceFactor- el número de unidades de tipo de frecuencia que se producen entre las sincronizaciones.
FrequencySubDay- la unidad de frecuencia cuando el agente se ejecuta más de una vez al día.
FrequencySubDayInterval- el número de unidades de frecuencia entre ejecuciones cuando el agente se ejecuta más de una vez al día.
ActiveStartTime- la primera hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveEndTime- la primera hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveStartDate- primer día vigente de la programación del agente.
ActiveEndDate- último día vigente de la programación del agente.
Nota
Si no especifica una de estas propiedades, se establece un valor predeterminado.
Llame al método Create para crear la suscripción.
Para definir una programación del agente de replicación al crear una suscripción de extracción a una publicación transaccional
Cree una instancia de la clase TransPullSubscription para la base de datos de suscripciones que está creando. Para obtener más información, vea Cómo crear una suscripción de extracción (programación con RMO).
Antes de llamar Create, establezca uno o varios de los campos siguientes de la propiedad AgentSchedule:
FrequencyType- el tipo de frecuencia (como diaria o semanal) que usa al programar el agente.
FrequencyInterval- el día de la semana en el que se ejecuta un agente.
FrequencyRelativeInterval- la semana de un mes determinado en la que se programa el agente para que se ejecute mensualmente.
FrequencyRecurrenceFactor- el número de unidades de tipo de frecuencia que se producen entre las sincronizaciones.
FrequencySubDay- la unidad de frecuencia cuando el agente se ejecuta más de una vez al día.
FrequencySubDayInterval- el número de unidades de frecuencia entre ejecuciones cuando el agente se ejecuta más de una vez al día.
ActiveStartTime- la primera hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveEndTime- la última hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveStartDate- primer día vigente de la programación del agente.
ActiveEndDate- último día vigente de la programación del agente.
Nota
Si no especifica una de estas propiedades, se establece un valor predeterminado.
Llame al método Create para crear la suscripción.
Para definir una programación del agente de replicación al crear una suscripción de extracción a una publicación mezcla
Cree una instancia de la clase MergePullSubscription para la base de datos de suscripciones que está creando. Para obtener más información, vea Cómo crear una suscripción de extracción (programación con RMO).
Antes de llamar Create, establezca uno o varios de los campos siguientes de la propiedad AgentSchedule:
FrequencyType- el tipo de frecuencia (como diaria o semanal) que usa al programar el agente.
FrequencyInterval- el día de la semana en el que se ejecuta un agente.
FrequencyRelativeInterval- la semana de un mes determinado en la que se programa el agente para que se ejecute mensualmente.
FrequencyRecurrenceFactor- el número de unidades de tipo de frecuencia que se producen entre las sincronizaciones.
FrequencySubDay- la unidad de frecuencia cuando el agente se ejecuta más de una vez al día.
FrequencySubDayInterval- el número de unidades de frecuencia entre ejecuciones cuando el agente se ejecuta más de una vez al día.
ActiveStartTime- la primera hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveEndTime- la última hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveStartDate- primer día vigente de la programación del agente.
ActiveEndDate- último día vigente de la programación del agente.
Nota
Si no especifica una de estas propiedades, se establece un valor predeterminado.
Llame al método Create para crear la suscripción.
Para definir una programación del agente de replicación al crear una suscripción de inserción a una publicación mezcla
Cree una instancia de la clase MergeSubscription para la base de datos de suscripciones que está creando. Para obtener más información, vea Cómo crear una suscripción de inserción (programación con RMO).
Antes de llamar Create, establezca uno o varios de los campos siguientes de la propiedad AgentSchedule:
FrequencyType- el tipo de frecuencia (como diaria o semanal) que usa al programar el agente.
FrequencyInterval- el día de la semana en el que se ejecuta un agente.
FrequencyRelativeInterval- la semana de un mes determinado en la que se programa el agente para que se ejecute mensualmente.
FrequencyRecurrenceFactor- el número de unidades de tipo de frecuencia que se producen entre las sincronizaciones.
FrequencySubDay- la unidad de frecuencia cuando el agente se ejecuta más de una vez al día.
FrequencySubDayInterval- el número de unidades de frecuencia entre ejecuciones cuando el agente se ejecuta más de una vez al día.
ActiveStartTime- la primera hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveEndTime- la última hora de un día determinado en la que se inicia la ejecución de un agente.
ActiveStartDate- primer día vigente de la programación del agente.
ActiveEndDate- último día vigente de la programación del agente.
Nota
Si no especifica una de estas propiedades, se establece un valor predeterminado.
Llame al método Create para crear la suscripción.
Ejemplo
Este ejemplo crea una suscripción de inserción a una publicación de mezcla y especifica la programación en la que se sincroniza la suscripción.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2008R2Replica";
string publicationDbName = "AdventureWorks2008R2";
string hostname = @"adventure-works\garrett1";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(subscriberName);
// Create the objects that we need.
MergePublication publication;
MergeSubscription subscription;
try
{
// Connect to the Publisher.
conn.Connect();
// Ensure that the publication exists and that
// it supports push subscriptions.
publication = new MergePublication();
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
publication.ConnectionContext = conn;
if (publication.IsExistingObject)
{
if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPush;
}
// Define the push subscription.
subscription = new MergeSubscription();
subscription.ConnectionContext = conn;
subscription.SubscriberName = subscriberName;
subscription.PublicationName = publicationName;
subscription.DatabaseName = publicationDbName;
subscription.SubscriptionDBName = subscriptionDbName;
subscription.HostName = hostname;
// Set a schedule to synchronize the subscription every 2 hours
// during weekdays from 6am to 10pm.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly;
subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32(0x003E);
subscription.AgentSchedule.FrequencyRecurrenceFactor = 1;
subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour;
subscription.AgentSchedule.FrequencySubDayInterval = 2;
subscription.AgentSchedule.ActiveStartDate = 20051108;
subscription.AgentSchedule.ActiveEndDate = 20071231;
subscription.AgentSchedule.ActiveStartTime = 060000;
subscription.AgentSchedule.ActiveEndTime = 100000;
// Specify the Windows login credentials for the Merge Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
subscription.SynchronizationAgentProcessSecurity.Password = winPassword;
// Create the push subscription.
subscription.Create();
}
else
{
// Do something here if the publication does not exist.
throw new ApplicationException(String.Format(
"The publication '{0}' does not exist on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Implement the appropriate error handling here.
throw new ApplicationException(String.Format(
"The subscription to {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2008R2Replica"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim hostname As String = "adventure-works\garrett1"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
' Create the objects that we need.
Dim publication As MergePublication
Dim subscription As MergeSubscription
Try
' Connect to the Publisher.
conn.Connect()
' Ensure that the publication exists and that
' it supports push subscriptions.
publication = New MergePublication()
publication.Name = publicationName
publication.DatabaseName = publicationDbName
publication.ConnectionContext = conn
If publication.IsExistingObject Then
If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
publication.Attributes = publication.Attributes _
Or PublicationAttributes.AllowPush
End If
' Define the push subscription.
subscription = New MergeSubscription()
subscription.ConnectionContext = conn
subscription.SubscriberName = subscriberName
subscription.PublicationName = publicationName
subscription.DatabaseName = publicationDbName
subscription.SubscriptionDBName = subscriptionDbName
subscription.HostName = hostname
' Set a schedule to synchronize the subscription every 2 hours
' during weekdays from 6am to 10pm.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly
subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32("0x003E", 16)
subscription.AgentSchedule.FrequencyRecurrenceFactor = 1
subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour
subscription.AgentSchedule.FrequencySubDayInterval = 2
subscription.AgentSchedule.ActiveStartDate = 20051108
subscription.AgentSchedule.ActiveEndDate = 20071231
subscription.AgentSchedule.ActiveStartTime = 60000
subscription.AgentSchedule.ActiveEndTime = 100000
' Specify the Windows login credentials for the Merge Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin
subscription.SynchronizationAgentProcessSecurity.Password = winPassword
' Create the push subscription.
subscription.Create()
Else
' Do something here if the publication does not exist.
Throw New ApplicationException(String.Format( _
"The publication '{0}' does not exist on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Implement the appropriate error handling here.
Throw New ApplicationException(String.Format( _
"The subscription to {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try
Vea también