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.
Este tópico descreve como criar uma assinatura push no SQL Server 2014 usando o SQL Server Management Studio, o Transact-SQL ou o RMO (Replication Management Objects). Para obter informações sobre como criar uma assinatura push para um Assinante que não seja do SQL Server, consulte Criar uma assinatura para um Assinante que não seja do SQL Server.
Como usar o SQL Server Management Studio.
Crie uma assinatura push no Editor ou no Subscritor usando o Assistente de Nova Assinatura. Siga as páginas do assistente para:
Especifique o Publicador e a publicação.
Selecione onde os agentes de replicação serão executados. Para uma assinatura push, selecione Executar todos os agentes no Distribuidor (assinaturas push) na página Local do Agente de Distribuição ou na página Local do Agente de Mesclagem, dependendo do tipo de publicação.
Especifique assinantes e bancos de dados de assinatura.
Especifique os logons e senhas usados para conexões feitas por agentes de replicação:
Para assinaturas momentâneas e publicações transacionais, especifique credenciais na página Segurança do Agente de Distribuição.
Para assinaturas para mesclar publicações, especifique as credenciais na página Segurança do Agente de Mesclagem .
Para obter informações sobre as permissões exigidas por cada agente, consulte Replication Agent Security Model.
Especifique um cronograma de sincronização e quando o assinante deve ser inicializado.
Especificar opções adicionais para publicações de mesclagem: tipo de assinatura; e valores para filtragem parametrizada.
Especifique opções adicionais para publicações transacionais que permitem a atualização de assinaturas: se os Assinantes devem confirmar alterações no Publicador imediatamente ou gravá-las em uma fila; credenciais usadas para se conectar do Assinante ao Publicador.
Opcionalmente, faça o script da assinatura.
Para criar uma assinatura push do Publicador
Conecte-se ao Publicador no Microsoft SQL Server Management Studio e, em seguida, expanda o nó do servidor.
Expanda a pasta Replicação e expanda a pasta Publicações Locais .
Clique com o botão direito do mouse na publicação para a qual você deseja criar uma ou mais assinaturas e clique em Novas Assinaturas.
Preencha as páginas no Assistente de Nova Assinatura.
Para criar uma assinatura push do Assinante
Conecte-se ao Assinante no SQL Server Management Studio, e expanda o nó do servidor.
Expanda a pasta Replicação .
Clique com o botão direito do mouse na pasta Assinaturas Locais e clique em Novas Assinaturas.
Na página Publicação do Assistente para Nova Assinatura, selecione <Encontrar Publicador SQL Server> ou <Encontrar Publicador Oracle> no menu suspenso do Publicador.
Conecte-se ao Publicador na caixa de diálogo Conectar ao Servidor .
Selecione uma publicação na página Publicação .
Preencha as páginas do Assistente para Nova Assinatura.
Usando Transact-SQL
As assinaturas push podem ser criadas programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados usados dependerão do tipo de publicação ao qual a assinatura pertence.
Importante
Quando possível, solicite aos usuários que insiram credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, deverá proteger o arquivo para impedir o acesso não autorizado.
Para criar uma assinatura push para um instantâneo ou publicação transacional
No Publicador do banco de dados de publicação, verifique se a publicação dá suporte a assinaturas push executando sp_helppublication.
Se o valor de allow_push for 1, as assinaturas push são suportadas.
Se o valor de allow_push for 0, execute sp_changepublication, especificando allow_push para @property e
truepara @value.
No Publicador do banco de dados de publicações, execute sp_addsubscription. Especifique @publication, @subscriber e @destination_db. Especifique um valor de push para @subscription_type. Para obter informações sobre como atualizar assinaturas, consulte Criar uma assinatura atualizável para uma publicação transacional
No Publicador do banco de dados de publicação, execute sp_addpushsubscription_agent. Especifique o seguinte:
Os parâmetros @subscriber, @subscriber_db e @publication .
As credenciais do Microsoft Windows nas quais o Agente de Distribuição no Distribuidor é executado para @job_login e @job_password.
Observação
As conexões feitas usando a Autenticação Integrada do Windows sempre usam as credenciais do Windows especificadas por @job_login e @job_password. O Agente de Distribuição sempre faz a conexão local com o Distribuidor usando a Autenticação Integrada do Windows. Por padrão, o agente se conectará ao Assinante usando a Autenticação Integrada do Windows.
(Opcional) Um valor 0 para @subscriber_security_mode e as informações de logon do Microsoft SQL Server para @subscriber_login e @subscriber_password. Especifique esses parâmetros se precisar usar a Autenticação do SQL Server ao se conectar ao Assinante.
Um agendamento para o trabalho do Agente de Distribuição para esta assinatura. Para obter mais informações, consulte Especificar Agendamentos de Sincronização.
Importante
Ao criar uma assinatura push em um Publicador com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo job_login e job_password, são enviados ao Distribuidor como texto sem formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado. Para obter mais informações, confira Habilitar conexões criptografadas para o mecanismo de banco de dados (SQL Server Configuration Manager).
Para criar uma assinatura push para uma publicação de mesclagem
No Publicador do banco de dados de publicação, verifique se a publicação dá suporte a assinaturas push executando sp_helpmergepublication.
Se o valor de allow_push for 1, a publicação oferecerá suporte a assinaturas push.
Se o valor de allow_push não for 1, execute sp_changemergepublication, especificando allow_push para @property e
truepara @value.
No Publicador no banco de dados de publicação, execute sp_addmergesubscription, especificando os seguintes parâmetros:
@publication. Esse é o nome da publicação.
@subscriber_type. Para uma assinatura de cliente, especifique local e para uma assinatura de servidor, especifique global.
@subscription_priority. Para uma assinatura de servidor, especifique uma prioridade para a assinatura (0,00 a 99,99).
Para obter mais informações, consulte Detecção e resolução de conflitos de replicação de mesclagem avançada.
No Publicador do banco de dados de publicação, execute sp_addmergepushsubscription_agent. Especifique o seguinte:
Os parâmetros @subscriber, @subscriber_db e @publication .
As credenciais do Windows nas quais o Agente de Mesclagem no Distribuidor é executado para @job_login e @job_password.
Observação
As conexões feitas usando a Autenticação Integrada do Windows sempre usam as credenciais do Windows especificadas por @job_login e @job_password. O Merge Agent sempre faz a conexão local com o Distribuidor usando a Autenticação Integrada do Windows. Por padrão, o agente se conectará ao Assinante usando a Autenticação Integrada do Windows.
(Opcional) Um valor 0 para @subscriber_security_mode e as informações de logon do SQL Server para @subscriber_login e @subscriber_password. Especifique esses parâmetros se precisar usar a Autenticação do SQL Server ao se conectar ao Assinante.
(Opcional) Um valor 0 para @publisher_security_mode e as informações de logon do SQL Server para @publisher_login e @publisher_password. Especifique esses valores se precisar usar a Autenticação do SQL Server ao se conectar ao Publicador.
Um agendamento para o trabalho do Merge Agent para esta assinatura. Para obter mais informações, consulte Especificar Agendamentos de Sincronização.
Importante
Ao criar uma assinatura push em um Publicador com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo job_login e job_password, são enviados ao Distribuidor como texto sem formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado. Para obter mais informações, confira Habilitar conexões criptografadas para o mecanismo de banco de dados (SQL Server Configuration Manager).
Exemplos (Transact-SQL)
O exemplo a seguir cria uma assinatura push para uma publicação transacional. Os valores de logon e senha são fornecidos em tempo de execução usando variáveis de script sqlcmd .
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2012Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2012]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
O exemplo a seguir cria uma assinatura push para uma publicação de mesclagem. Os valores de logon e senha são fornecidos em tempo de execução usando variáveis de script sqlcmd .
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2012];
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
Usando Objetos de Gerenciamento de Replicação (RMO)
Você pode criar assinaturas push programaticamente usando RMO (Replication Management Objects). As classes RMO que você usa para criar uma assinatura push dependem do tipo de publicação para a qual a assinatura é criada.
Importante
Quando possível, solicite aos usuários que insiram credenciais de segurança no runtime. Se você precisar armazenar credenciais, use os serviços criptográficos fornecidos pelo Microsoft Windows .NET Framework.
Para criar uma assinatura push para um instantâneo ou publicação transacional
Crie uma conexão com o Publicador usando a classe ServerConnection .
Crie uma instância da TransPublication classe usando a conexão do Publicador da etapa 1. Especificar Name, DatabaseNamee ConnectionContext.
Chame o método LoadProperties . Se esse método retornar
false, as propriedades especificadas na etapa 2 estarão incorretas ou a publicação não existirá no servidor.Execute uma operação lógica AND bit a bit (
&no Visual C# eAndno Visual Basic) entre a propriedade Attributes e AllowPush. Se o resultado for None, defina Attributes como o resultado de um OR lógico bit a bit (|no Visual C# eOrno Visual Basic) entre Attributes e AllowPush. Em seguida, chame CommitPropertyChanges para habilitar assinaturas push.Se o banco de dados de assinatura não existir, crie-o usando a Database classe. Para obter mais informações, consulte Criando, alterando e removendo bancos de dados.
Criar uma instância da classe TransSubscription.
Defina as seguintes propriedades de assinatura:
O ServerConnection para o Publicador criado na etapa 1 para ConnectionContext.
Nome do banco de dados de assinatura para SubscriptionDBName.
Nome do Assinante para SubscriberName.
Nome do banco de dados de publicação para DatabaseName.
Nome da publicação para PublicationName.
Os campos Login, Password ou SecurePassword* de SynchronizationAgentProcessSecurity para fornecer as credenciais da conta Microsoft Windows sob a qual o Agente de Distribuição é executado no Distribuidor. Essa conta é usada para fazer conexões locais com o Distribuidor e para fazer conexões remotas usando a Autenticação do Windows.
Observação
A configuração SynchronizationAgentProcessSecurity não é necessária quando a assinatura é criada por um membro que possui a função fixa de servidor
sysadmin, no entanto, é recomendável. Nesse caso, o agente representará a conta do SQL Server Agent. Para obter mais informações, consulte Replication Agent Security Model.(Opcional) Um valor de
true(o padrão) para criar um trabalho de agente com CreateSyncAgentByDefault usado para sincronizar a assinatura. Se você especificarfalse, a assinatura só poderá ser sincronizada programaticamente.(Opcional) Defina os campos SqlStandardLogin e SqlStandardPassword ou SecureSqlStandardPassword de SubscriberSecurity quando usar a Autenticação do SQL Server para se conectar ao Assinante.
Chame o método Create .
Importante
Ao criar uma assinatura push em um Publicador com um Distribuidor remoto, os valores fornecidos para todas as propriedades, incluindo SynchronizationAgentProcessSecurity, são enviados para o Distribuidor como texto sem formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de chamar o Create método. Para obter mais informações, confira Habilitar conexões criptografadas para o mecanismo de banco de dados (SQL Server Configuration Manager).
Para criar uma assinatura push para uma publicação de mesclagem
Crie uma conexão com o Publicador usando a classe ServerConnection .
Crie uma instância da MergePublication classe usando a conexão do Publicador da etapa 1. Especificar Name, DatabaseNamee ConnectionContext.
Chame o método LoadProperties . Se esse método retornar
false, as propriedades especificadas na etapa 2 estarão incorretas ou a publicação não existirá no servidor.Execute uma operação lógica AND bit a bit (
&no Visual C# eAndno Visual Basic) entre a propriedade Attributes e AllowPush. Se o resultado for None, defina Attributes como o resultado de um OR lógico bit a bit (|no Visual C# eOrno Visual Basic) entre Attributes e AllowPush. Em seguida, chame CommitPropertyChanges para habilitar assinaturas push.Se o banco de dados de assinatura não existir, crie-o usando a Database classe. Para obter mais informações, consulte Criando, alterando e removendo bancos de dados.
Criar uma instância da classe MergeSubscription.
Defina as seguintes propriedades de assinatura:
O ServerConnection para o Publicador criado na etapa 1 para ConnectionContext.
Nome do banco de dados de assinatura para SubscriptionDBName.
Nome do Assinante para SubscriberName.
Nome do banco de dados de publicação para DatabaseName.
Nome da publicação para PublicationName.
Os campos Login e, ou Password, ou SecurePassword* de SynchronizationAgentProcessSecurity são usados para fornecer as credenciais para a conta do Microsoft Windows na qual o Merge Agent é executado no Distribuidor. Essa conta é usada para fazer conexões locais com o Distribuidor e para fazer conexões remotas usando a Autenticação do Windows.
Observação
A configuração SynchronizationAgentProcessSecurity não é necessária quando a assinatura é criada por um membro que possui a função fixa de servidor
sysadmin, no entanto, é recomendável. Nesse caso, o agente representará a conta do SQL Server Agent. Para obter mais informações, consulte Replication Agent Security Model.(Opcional) Um valor de
true(o padrão) para criar um trabalho de agente com CreateSyncAgentByDefault usado para sincronizar a assinatura. Se você especificarfalse, a assinatura só poderá ser sincronizada programaticamente.(Opcional) Defina os campos SqlStandardLogin e SqlStandardPassword ou SecureSqlStandardPassword de SubscriberSecurity quando usar a Autenticação do SQL Server para se conectar ao Assinante.
(Opcional) Defina os campos SqlStandardLogin e SqlStandardPassword ou SecureSqlStandardPassword de PublisherSecurity ao usar a Autenticação do SQL Server para se conectar ao Publicador.
Chame o método Create .
Importante
Ao criar uma assinatura push em um Publicador com um Distribuidor remoto, os valores fornecidos para todas as propriedades, incluindo SynchronizationAgentProcessSecurity, são enviados para o Distribuidor como texto sem formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de chamar o Create método. Para obter mais informações, confira Habilitar conexões criptografadas para o mecanismo de banco de dados (SQL Server Configuration Manager).
Exemplos (RMO)
Este exemplo cria uma nova assinatura push para uma publicação transacional. As credenciais da conta do Windows que você usa para executar o trabalho do Agente de Distribuição são passadas em runtime.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksProductTran";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(subscriberName);
// Create the objects that we need.
TransPublication publication;
TransSubscription subscription;
try
{
// Connect to the Publisher.
conn.Connect();
// Ensure that the publication exists and that
// it supports push subscriptions.
publication = new TransPublication();
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 TransSubscription();
subscription.ConnectionContext = conn;
subscription.SubscriberName = subscriberName;
subscription.PublicationName = publicationName;
subscription.DatabaseName = publicationDbName;
subscription.SubscriptionDBName = subscriptionDbName;
// Specify the Windows login credentials for the Distribution Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
subscription.SynchronizationAgentProcessSecurity.Password = winPassword;
// By default, subscriptions to transactional publications are synchronized
// continuously, but in this case we only want to synchronize on demand.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand;
// 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 = "AdvWorksProductTran"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
' Create the objects that we need.
Dim publication As TransPublication
Dim subscription As TransSubscription
Try
' Connect to the Publisher.
conn.Connect()
' Ensure that the publication exists and that
' it supports push subscriptions.
publication = New TransPublication()
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 TransSubscription()
subscription.ConnectionContext = conn
subscription.SubscriberName = subscriberName
subscription.PublicationName = publicationName
subscription.DatabaseName = publicationDbName
subscription.SubscriptionDBName = subscriptionDbName
' Specify the Windows login credentials for the Distribution Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin
subscription.SynchronizationAgentProcessSecurity.Password = winPassword
' By default, subscriptions to transactional publications are synchronized
' continuously, but in this case we only want to synchronize on demand.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand
' 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
Este exemplo cria uma nova assinatura push para uma publicação de mesclagem. As credenciais da conta do Windows que você usa para executar o trabalho do Merge Agent são passadas em runtime.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
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 = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
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
Consulte Também
Exibir e modificar propriedades de assinatura push
Práticas recomendadas de segurança de replicação
Criar uma publicação
Conceitos de Objetos de Gerenciamento de Replicação
Sincronizar uma Assinatura Push
Assinar publicações
Usar sqlcmd com variáveis de script