Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Este tópico descreve como especificar agendas de sincronização no SQL Server usando o SQL Server Management Studio, o Transact-SQL ou o (RMO) Replication Management Objects. Quando criar uma assinatura, você pode definir uma agenda de sincronização que controla quando o agente de replicação para a assinatura executará. Se você não especificar os parâmetros de programação, a assinatura usará a agenda padrão.
As assinaturas são sincronizadas pelo Agente de Distribuição (para replicação de instantâneo e transacional) ou pelo Agente de Mesclagem (para replicação de mesclagem). Os agentes podem ser executados continuamente, sob demanda ou de acordo com uma programação.
Como usar o SQL Server Management Studio.
Especifique agendas de sincronização na página Agenda de Sincronização do Assistente para Nova Assinatura. Para mais informações sobre como acessar esse assistente, consulte Create a Push Subscription e Create a Pull Subscription.
Modifique agendas de sincronização na caixa de diálogo Propriedades do Plano de Trabalho, que se encontra disponível na pasta Trabalhos no SQL Server Management Studio e nas janelas de detalhes do agente no Replication Monitor. Para obter informações sobre como iniciar o Replication Monitor, consulte Start the Replication Monitor (Iniciar o Replication Monitor).
Se você especificar agendas da pasta Jobs use a tabela a seguir para determinar o nome do trabalho do agente.
| Agente | Nome do trabalho |
|---|---|
| Agente de Mesclagem para assinaturas pull | <Editor-BaseDeDadosDePublicações-Publicação-Assinante-BaseDeDadosDeAssinaturas-inteiro><><><><><> |
| Agente de Mesclagem para assinaturas push | <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><> |
| Agente de Distribuição para assinaturas de push | < > |
| Agente de Distribuição para assinaturas de pull | Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-GUID<><><><><> 2<> |
| Agente de Distribuição para assinaturas push para Assinantes que não são do SQL Server | <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><> |
1 Para assinaturas push de publicações Oracle, é <Publisher>-<Publisher> em vez de <Publisher>-<PublicationDatabase>
2 Para assinaturas pull de publicações Oracle, é <Publisher>-<DistributionDatabase> em vez de <Publisher>-<PublicationDatabase>
Para especificar agendas de sincronização
Na página SynchronizationSchedule do Assistente para Nova Assinatura, selecione um dos seguintes valores na lista suspensa Agendamento do Agente para cada assinatura que você está criando:
Executar continuamente
Executar somente sob demanda
<Definir Agendamento...>
Se você selecionar <Definir Agendamento...>, especifique uma agenda na caixa de diálogo Propriedades da Agenda de Trabalho e clique em OK.
Conclua o assistente.
Para modificar uma agenda de sincronização para uma assinatura push no Replication Monitor
Expanda um grupo de Publicadores no painel esquerdo do Replication Monitor, expanda um Publicador e, em seguida, clique na publicação.
Clique na guia Todas as Assinaturas .
Clique com o botão direito do mouse em uma assinatura e clique em Exibir Detalhes.
Na janela Assinatura <SubscriptionName>, clique em Ação e depois em Propriedades do Trabalho de <AgentName>.
Na página Agendas da caixa de diálogo Propriedades do Trabalho – <JobName>, clique em Editar.
Na caixa de diálogo Propriedades da Agenda de Trabalho , selecione um valor da lista suspensa Tipo de Agenda :
Para especificar que o agente deve executar continuamente, selecione Iniciar automaticamente quando o SQL Server Agent for iniciado.
Para especificar que o agente deve ser executado em uma programação, selecione Recorrente.
Para especificar que o agente deve ser executado sob demanda, selecione Uma única vez.
Se você selecionar Recorrente, especifique uma agenda para o agente.
Selecione OK.
Para modificar uma agenda de sincronização para uma assinatura push no Management Studio
Conecte-se ao Distribuidor no Management Studio e, em seguida, expanda o nó do servidor.
Expanda a pasta SQL Server Agent e, em seguida, a pasta Trabalhos .
Clique com o botão direito do mouse no trabalho do Agente de Distribuição ou do Agente de Mesclagem associado à assinatura e clique em Propriedades.
Na página Agendas da caixa de diálogo Propriedades do Trabalho – <JobName>, clique em Editar.
Na caixa de diálogo Propriedades da Agenda de Trabalho , selecione um valor da lista suspensa Tipo de Agenda :
Para especificar que o agente deve executar continuamente, selecione Iniciar automaticamente quando o SQL Server Agent for iniciado.
Para especificar que o agente deve ser executado em uma programação, selecione Recorrente.
Para especificar que o agente deve ser executado sob demanda, selecione Uma única vez.
Se você selecionar Recorrente, especifique uma agenda para o agente.
Selecione OK.
Para alterar um agendamento de sincronização de uma assinatura pull no Management Studio
Conecte-se ao Assinante no Management Studio e, em seguida, expanda o nó de servidor.
Expanda a pasta SQL Server Agent e, em seguida, a pasta Trabalhos .
Clique com o botão direito do mouse no trabalho do Agente de Distribuição ou do Agente de Mesclagem associado à assinatura e clique em Propriedades.
Na página Agendas da caixa de diálogo Propriedades do Trabalho – <JobName>, clique em Editar.
Na caixa de diálogo Propriedades da Agenda de Trabalho , selecione um valor da lista suspensa Tipo de Agenda :
Para especificar que o agente deve executar continuamente, selecione Iniciar automaticamente quando o SQL Server Agent for iniciado.
Para especificar que o agente deve ser executado em uma programação, selecione Recorrente.
Para especificar que o agente deve ser executado sob demanda, selecione Uma única vez.
Se você selecionar Recorrente, especifique uma agenda para o agente.
Selecione OK.
Usando o Transact-SQL
Você pode definir agendas de sincronização de forma programada, usando os procedimentos de replicação armazenados. Os procedimentos armazenados que você usa dependem do tipo de replicação e do tipo de assinatura (pull ou push).
Uma agenda é definida pelos seguintes parâmetros de programação, os comportamentos dos quais são herdados de sp_add_schedule (Transact-SQL):
@frequency_type - o tipo de frequência usado ao programar o agente.
@frequency_interval - o dia da semana no qual um agente é executado.
@frequency_relative_interval - a semana de um determinado mês quando o agente é programado para executar mensalmente.
@frequency_recurrence_factor - o número de unidades tipo frequência que ocorrem entre as sincronizações.
@frequency_subday - a unidade de frequência quando o agente é executado com mais frequência do que uma vez por dia.
@frequency_subday_interval - o número de unidades de frequência entre execuções quando o agente executa mais frequentemente do que uma vez por dia.
@active_start_time_of_day - o horário mais cedo de um determinado dia em que uma execução de um agente será iniciada.
@active_end_time_of_day - o horário mais tarde em um determinado dia em que uma execução de agente se iniciará.
@active_start_date - o primeiro dia em que a agenda do agente estará em vigor.
@active_end_date - o último dia em que a agenda do agente estará em vigor.
Para definir o agendamento de sincronização de uma assinatura pull de uma publicação transacional
Crie uma nova assinatura de pull para uma publicação transacional. Para obter mais informações, consulte Create a Pull Subscription.
No Assinante, execute o procedimento armazenado sp_addpullsubscription_agent (Transact-SQL). Especifique @publisher, @publisher_db, @publication e as credenciais do Microsoft Windows sob as quais o Agente de Distribuição no Assinante executa @job_name e @password. Especifique os parâmetros de sincronização, detalhados acima, que definem a agenda para o trabalho do Agente de Distribuição que sincroniza a assinatura.
Para definir o agendamento da sincronização para uma assinatura push de uma publicação transacional
Crie uma assinatura push nova para uma publicação transacional. Para obter mais informações, consulte Create a Push Subscription.
No assinante, execute sp_addpushsubscription_agent (Transact-SQL). Especifique o @subscriber, o @subscriber_db, o @publication e as credenciais do Windows sob as quais o Agente de Distribuição é executado no Assinante para @job_name e @password. Especifique os parâmetros de sincronização, detalhados acima, que definem a agenda para o trabalho do Agente de Distribuição que sincroniza a assinatura.
Para definir a agenda de sincronização para uma assinatura pull em uma publicação de mesclagem
Crie uma assinatura pull nova para uma publicação de mesclagem. Para obter mais informações, consulte Create a Pull Subscription.
No assinante, execute sp_addmergepullsubscription_agent. Especifique @publisher, @publisher_db, @publication e as credenciais do Windows sob as quais o Agente de Mesclagem é executado no Assinante, para @job_name e @password. Especifique os parâmetros de sincronização, detalhados acima, que definem o agendamento do trabalho do Agente de Mesclagem que sincroniza a assinatura.
Para definir o agendamento de sincronização de uma assinatura push em uma publicação de mesclagem
Crie uma assinatura push nova para uma publicação de mesclagem. Para obter mais informações, consulte Create a Push Subscription.
No Assinante, execute o sp_addmergepushsubscription_agent. Especifique @subscriber, @subscriber_db e @publication, bem como as credenciais do Windows com as quais o Agente de Mesclagem é executado no Assinante, para @job_name e @password. Especifique os parâmetros de sincronização, detalhados acima, que definem o agendamento do trabalho do Agente de Mesclagem que sincroniza a assinatura.
Usando os Objetos de Gerenciamento de Replicação (RMO)
A replicação usa o SQL Server Agent para agendar tarefas para executar atividades que ocorrem periodicamente, como a geração de instantâneos e a sincronização de assinaturas. Use programaticamente os RMO (Replication Management Objects) para especificar agendamentos de trabalhos de agente de replicação.
Observação
Quando uma subscrição é criada e um valor false é especificado para CreateSyncAgentByDefault (comportamento padrão para inscrições pull), o trabalho do agente não é criado e as propriedades agendadas são ignoradas. Nesse caso, o agendamento de sincronização precisará ser determinado pelo aplicativo. Para obter mais informações, consulte Create a Pull Subscription e Create a Push Subscription.
Para definir o agendamento do agente de replicação ao criar uma assinatura push para uma publicação transacional
Crie uma instância da classe TransSubscription para a assinatura que está sendo criada. Para obter mais informações, consulte Create a Push Subscription.
Antes de chamar Create, defina um ou mais dos campos seguintes da propriedade AgentSchedule :
FrequencyType - o tipo de frequência (como diária ou semanal) que você usa para agendar o agente.
FrequencyInterval - dia da semana em que o agente é executado.
FrequencyRelativeInterval - semana de um dado mês em que o agente está programado para ser executado mensalmente.
FrequencyRecurrenceFactor - número de unidades do tipo-frequência que ocorrem entre sincronizações.
FrequencySubDay - unidade de frequência usada quando o agente é executado mais de uma vez por dia.
FrequencySubDayInterval - número de unidades de frequência entre execuções quando o agente é executado com frequência maior que uma vez ao dia.
ActiveStartTime - horário mais cedo em um determinado dia em que uma execução do agente começa.
ActiveEndTime - horário limite, em um determinado dia, para o início de uma execução do agente.
ActiveStartDate - primeiro dia em que o agendamento do agente entra em vigor.
ActiveEndDate - último dia de vigência da programação do agente.
Observação
Se uma dessas propriedades não for especificada, um valor padrão será determinado.
Chame o método Create para criar a assinatura.
Para definir o agendamento do agente de replicação ao criar uma assinatura pull para uma publicação transacional
Crie uma instância da classe TransPullSubscription para a assinatura que está sendo criada. Para obter mais informações, consulte Create a Pull Subscription.
Antes de chamar Create, defina um ou mais dos campos seguintes da propriedade AgentSchedule :
FrequencyType - tipo de frequência (por exemplo, diária ou semanal) usada durante o agendamento do agente.
FrequencyInterval - dia da semana em que um agente é executado.
FrequencyRelativeInterval - semana de um determinado mês na qual o agente está programado para ser executado mensalmente.
FrequencyRecurrenceFactor - número de unidades do tipo-frequência que ocorrem entre sincronizações.
FrequencySubDay - unidade de frequência em que o agente é executado com frequência maior que uma vez ao dia.
FrequencySubDayInterval - número de unidades de frequência entre execuções quando o agente é executado com frequência maior que uma vez ao dia.
ActiveStartTime - horário mais cedo em um determinado dia em que a execução do agente começa.
ActiveEndTime - horário mais tarde em um determinado dia em que a execução do agente é iniciada.
ActiveStartDate - primeiro dia em que o agendamento do agente entra em vigor.
ActiveEndDate - último dia em que a agenda do agente está em vigor.
Observação
Se uma dessas propriedades não for especificada, um valor padrão será determinado.
Chame o método Create para criar a assinatura.
Para definir o agendamento do agente de replicação ao criar uma assinatura pull para uma publicação de mesclagem
Crie uma instância da classe MergePullSubscription para a assinatura que está sendo criada. Para obter mais informações, consulte Create a Pull Subscription.
Antes de chamar Create, defina um ou mais dos campos seguintes da propriedade AgentSchedule :
FrequencyType - tipo de frequência (por exemplo, diária ou semanal) usada durante o agendamento do agente.
FrequencyInterval - dia da semana em que o agente é executado.
FrequencyRelativeInterval - semana de um determinado mês na qual o agente está programado para ser executado mensalmente.
FrequencyRecurrenceFactor - número de unidades do tipo-frequência que ocorrem entre sincronizações.
FrequencySubDay - unidade de frequência em que o agente é executado com frequência maior que uma vez ao dia.
FrequencySubDayInterval - número de unidades de frequência entre execuções quando o agente é executado com frequência maior que uma vez ao dia.
ActiveStartTime - horário mais cedo em um determinado dia em que a execução do agente começa.
ActiveEndTime - horário mais tarde em um determinado dia em que a execução do agente é iniciada.
ActiveStartDate - primeiro dia em que o agendamento do agente entra em vigor.
ActiveEndDate - último dia em que a agenda do agente está em vigor.
Observação
Se uma dessas propriedades não for especificada, um valor padrão será determinado.
Chame o método Create para criar a assinatura.
Para definir o agendamento do agente de replicação ao criar uma assinatura push para uma publicação de mesclagem
Crie uma instância da classe MergeSubscription para a assinatura que está sendo criada. Para obter mais informações, consulte Create a Push Subscription.
Antes de chamar Create, defina um ou mais dos campos seguintes da propriedade AgentSchedule :
FrequencyType - tipo de frequência (por exemplo, diária ou semanal) usada durante o agendamento do agente.
FrequencyInterval - dia da semana em que o agente é executado.
FrequencyRelativeInterval - semana de um determinado mês na qual o agente está programado para ser executado mensalmente.
FrequencyRecurrenceFactor - número de unidades do tipo-frequência que ocorrem entre sincronizações.
FrequencySubDay - unidade de frequência em que o agente é executado com frequência maior que uma vez ao dia.
FrequencySubDayInterval - número de unidades de frequência entre execuções quando o agente é executado com frequência maior que uma vez ao dia.
ActiveStartTime - horário mais cedo em um determinado dia em que a execução do agente começa.
ActiveEndTime - horário mais tarde em um determinado dia em que a execução do agente é iniciada.
ActiveStartDate - primeiro dia em que o agendamento do agente entra em vigor.
ActiveEndDate - último dia em que a agenda do agente está em vigor.
Observação
Se uma dessas propriedades não for especificada, um valor padrão será determinado.
Chame o método Create para criar a assinatura.
Exemplo (RMO)
Este exemplo cria uma assinatura push para uma publicação de mescla e especifica o agendamento segundo o qual a assinatura é sincronizada.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
string publicationDbName = "AdventureWorks2022";
string hostname = @"adventure-works\garrett1";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
// 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 = "AdventureWorks2022Replica"
Dim publicationDbName As String = "AdventureWorks2022"
Dim hostname As String = "adventure-works\garrett1"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
' 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