Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe cómo crear una suscripción push en SQL Server 2014 utilizando SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO). Para obtener información sobre cómo crear una suscripción de inserción para un suscriptor que no sea de SQL Server, vea Crear una suscripción para un suscriptor que no sea de SQL Server.
Uso de SQL Server Management Studio
Cree una suscripción de inserción en el Publicador o en el Suscriptor mediante el Asistente para la creación de nuevas suscripciones. Siga las instrucciones en el asistente para:
Especifique el publicador y la publicación.
Seleccione dónde se ejecutarán los agentes de replicación. Para una suscripción de inserción, seleccione Ejecutar todos los agentes en el Distribuidor (suscripciones de inserción) en la página Ubicación del agente de distribución o en la página Ubicación del agente de Mezcla, en función del tipo de publicación.
Especifique suscriptores y bases de datos de suscripciones.
Especifique los inicios de sesión y las contraseñas usados para las conexiones realizadas por los agentes de replicación:
Para las suscripciones a publicaciones de instantáneas y transaccionales, especifique las credenciales en la página Seguridad del Agente de distribución .
Para las suscripciones a publicaciones de combinación, especifique las credenciales en la página Seguridad del Agente de Combinación.
Para obtener información sobre los permisos necesarios para cada agente, consulte Modelo de seguridad del agente de replicación.
Especifique una programación de sincronización y cuándo se debe inicializar el suscriptor.
Especifique opciones adicionales para las publicaciones combinadas: tipo de suscripción, y los valores para el filtrado con parámetros.
Especifique opciones adicionales para publicaciones transaccionales que permitan actualizar suscripciones: si los suscriptores deben confirmar cambios en el publicador inmediatamente o escribirlos en una cola; credenciales usadas para conectarse desde el suscriptor al publicador.
Opcionalmente, cree un script para la suscripción.
Para crear una suscripción push desde el Editor
Conéctese al publicador en Microsoft SQL Server Management Studio y, a continuación, expanda el nodo de servidor.
Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .
Haga clic con el botón derecho en la publicación para la que desea crear una o varias suscripciones y, a continuación, haga clic en Nuevas suscripciones.
Complete las páginas del Asistente para Nueva Suscripción.
Para crear una suscripción push desde suscriptor
Conéctese al suscriptor en SQL Server Management Studio y, a continuación, expanda el nodo de servidor.
Expanda la carpeta Replicación .
Haga clic con el botón derecho en la carpeta Suscripciones locales y, a continuación, haga clic en Nuevas suscripciones.
En la página Publicación del Asistente para nueva suscripción, seleccione <Buscar publicador> de SQL Server o <Buscar publicador> de Oracle en la lista desplegable Publicador.
Conéctese al publicador en el cuadro de diálogo Conectar al servidor .
Seleccione una publicación en la página Publicación .
Complete las páginas del Asistente para Nueva Suscripción.
Uso de Transact-SQL
Las suscripciones de inserción se pueden crear programáticamente utilizando procedimientos almacenados para replicación. Los procedimientos almacenados utilizados dependerán del tipo de publicación al que pertenece la suscripción.
Importante
Cuando sea posible, pida a los usuarios que escriban credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales en un archivo de script, debe proteger el archivo para evitar el acceso no autorizado.
Para crear una suscripción de inserción automática a una publicación transaccional o instantánea
En la base de datos de publicación del publicador, compruebe que la publicación admite suscripciones de inserción mediante la ejecución de sp_helppublication.
Si el valor de allow_push es 1, se admiten las suscripciones de empuje.
Si el valor de allow_push es 0, ejecute sp_changepublication, especificando allow_push para @property y
true
para @value.
En el editor de la base de datos de publicación, ejecute sp_addsubscription. Especifique @publication, @subscriber y @destination_db. Especifique un valor de push para @subscription_type. Para obtener información sobre cómo actualizar las suscripciones, consulte Creación de una suscripción actualizable a una publicación transaccional.
En el publicador de la base de datos de publicación, ejecute sp_addpushsubscription_agent. Especifique lo siguiente:
Parámetros @subscriber, @subscriber_db y @publication .
Las credenciales de Microsoft Windows con las que se ejecuta el Agente de Distribución en el Distribuidor para @job_login y @job_password.
Nota:
Las conexiones realizadas con la autenticación integrada de Windows siempre usan las credenciales de Windows especificadas por @job_login y @job_password. El Agente de distribución siempre realiza la conexión local al distribuidor mediante la autenticación integrada de Windows. De forma predeterminada, el agente se conectará al suscriptor mediante la autenticación integrada de Windows.
(Opcional) Valor 0 para @subscriber_security_mode y la información de inicio de sesión de Microsoft SQL Server para @subscriber_login y @subscriber_password. Especifique estos parámetros si necesita usar la autenticación de SQL Server al conectarse al suscriptor.
Una programación de tareas para el trabajo del Agente de Distribución para esta suscripción. Para obtener más información, vea Especificar programaciones de sincronización.
Importante
Al crear una suscripción push en un Publicador con un Distribuidor remoto, los valores proporcionados para todos los parámetros, incluidos job_login y job_password, se envían al Distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de ejecutar este procedimiento almacenado. Para obtener más información, vea Habilitar conexiones cifradas en el motor de base de datos (Administrador de configuración de SQL Server).
Para crear una suscripción de "push" a una publicación de combinación
En el Editor, en la base de datos de publicación, verifique que la publicación admite suscripciones push ejecutando sp_helpmergepublication.
Si el valor de allow_push es 1, la publicación admite suscripciones push.
Si el valor de allow_push no es 1, ejecute sp_changemergepublication, especificando allow_push para @property y
true
para @value.
En la base de datos de publicación del publicador, ejecute sp_addmergesubscription y especifique los parámetros siguientes:
@publication. Este es el nombre de la publicación.
@subscriber_type. Para una suscripción de cliente, especifique local y para una suscripción de servidor, especifique global.
@subscription_priority. Para una suscripción de servidor, especifique una prioridad para la suscripción (de 0,00 a 99,99).
Para más información, consulte Replicación de mezcla avanzada: detección y resolución de conflictos.
En el publicador de la base de datos de publicación, ejecute sp_addmergepushsubscription_agent. Especifique lo siguiente:
Parámetros @subscriber, @subscriber_db y @publication .
Las credenciales de Windows con las que se ejecuta el Agente de Mezcla en el Distribuidor para @job_login y @job_password.
Nota:
Las conexiones realizadas con la autenticación integrada de Windows siempre usan las credenciales de Windows especificadas por @job_login y @job_password. El Agente de mezcla siempre realiza la conexión local al distribuidor mediante la autenticación integrada de Windows. De forma predeterminada, el agente se conectará al suscriptor mediante la autenticación integrada de Windows.
(Opcional) Valor 0 para @subscriber_security_mode y la información de inicio de sesión de SQL Server para @subscriber_login y @subscriber_password. Especifique estos parámetros si necesita usar la autenticación de SQL Server al conectarse al suscriptor.
(Opcional) Valor 0 para @publisher_security_mode y la información de inicio de sesión de SQL Server para @publisher_login y @publisher_password. Especifique estos valores si necesita usar la autenticación de SQL Server al conectarse al publicador.
Una programación para el trabajo del Agente de mezcla para esta suscripción. Para obtener más información, vea Especificar programaciones de sincronización.
Importante
Al crear una suscripción push en un Publicador con un Distribuidor remoto, los valores proporcionados para todos los parámetros, incluidos job_login y job_password, se envían al Distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de ejecutar este procedimiento almacenado. Para obtener más información, vea Habilitar conexiones cifradas en el motor de base de datos (Administrador de configuración de SQL Server).
Ejemplos (Transact-SQL)
En el ejemplo siguiente se crea una suscripción de envío a una publicación transaccional. Los valores de inicio de sesión y contraseña se proporcionan en tiempo de ejecución mediante variables de scripting 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
En el ejemplo siguiente se crea una suscripción push a una publicación de combinación. Los valores de inicio de sesión y contraseña se proporcionan en tiempo de ejecución mediante variables de scripting 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
El uso de Replication Management Objects (RMO)
Puede crear suscripciones push mediante programación utilizando objetos de administración de replicación (RMO). Las clases de RMO que se utilizan para crear una suscripción push dependen del tipo de publicación al que se crea la suscripción.
Importante
Cuando sea posible, pida a los usuarios que escriban credenciales de seguridad en tiempo de ejecución. Si debe almacenar credenciales, use los servicios criptográficos proporcionados por Microsoft Windows .NET Framework.
Para crear una suscripción de inserción a una publicación transaccional o instantánea
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase TransPublication mediante la conexión del Publisher del paso 1. Especifique Name, DatabaseNamey ConnectionContext.
Llame al método LoadProperties. Si este método devuelve
false
, las propiedades especificadas en el paso 2 son incorrectas o la publicación no existe en el servidor.Realice un AND lógico bit a bit (
&
en Visual C# yAnd
en Visual Basic) entre la Attributes propiedad y AllowPush. Si el resultado es None, establezca Attributes en el resultado de un OR lógico bit a bit (|
en Visual C# y en Visual Basic) entreOr
y AttributesAllowPush. A continuación, llame CommitPropertyChanges a para habilitar las suscripciones de inserción.Si la base de datos de suscripciones no existe, créela mediante la Database clase . Para obtener más información, vea Crear, modificar y quitar bases de datos.
Cree una instancia de la clase TransSubscription.
Establezca las siguientes propiedades de suscripción:
al ServerConnection publicador creado en el paso 1 para ConnectionContext.
Nombre de la base de datos de suscripciones para SubscriptionDBName.
Nombre del suscriptor para SubscriberName.
Nombre de la base de datos de publicación para DatabaseName.
Nombre de la publicación para PublicationName.
Los Login campos y Password o SecurePassword* de SynchronizationAgentProcessSecurity para proporcionar las credenciales de la cuenta de Microsoft Windows en la que se ejecuta el Agente de distribución en el distribuidor. Esta cuenta se usa para establecer conexiones locales con el distribuidor y para realizar conexiones remotas mediante la autenticación de Windows.
Nota:
La configuración SynchronizationAgentProcessSecurity no es necesaria cuando un miembro del rol fijo de
sysadmin
servidor crea la suscripción, pero se recomienda. En este caso, el agente suplantará la cuenta del Agente SQL Server. Para obtener más información, consulte Modelo de seguridad del agente de replicación.(Opcional) Valor de
true
(valor predeterminado) para CreateSyncAgentByDefault crear un trabajo de agente que se usa para sincronizar la suscripción. Si especificafalse
, la suscripción solo se puede sincronizar mediante programación.(Opcional) Establezca los SqlStandardLogin campos y SqlStandardPassword o SecureSqlStandardPassword de al usar la autenticación de SubscriberSecurity SQL Server para conectarse al suscriptor.
Llame al método Create.
Importante
Al crear una suscripción de inserción en un publicador con un distribuidor remoto, los valores proporcionados para todas las propiedades, incluidos SynchronizationAgentProcessSecurity, se envían al distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de llamar al Create método . Para obtener más información, vea Habilitar conexiones cifradas en el motor de base de datos (Administrador de configuración de SQL Server).
Para crear una suscripción automática a una publicación de combinación
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase MergePublication mediante la conexión del Publisher del paso 1. Especifique Name, DatabaseNamey ConnectionContext.
Llame al método LoadProperties. Si este método devuelve
false
, las propiedades especificadas en el paso 2 son incorrectas o la publicación no existe en el servidor.Realice un AND lógico bit a bit (
&
en Visual C# yAnd
en Visual Basic) entre la Attributes propiedad y AllowPush. Si el resultado es None, establezca Attributes en el resultado de un OR lógico bit a bit (|
en Visual C# y en Visual Basic) entreOr
y AttributesAllowPush. A continuación, llame a CommitPropertyChanges para habilitar las suscripciones push.Si la base de datos de suscripciones no existe, créela mediante la Database clase . Para obtener más información, vea Crear, modificar y quitar bases de datos.
Cree una instancia de la clase MergeSubscription.
Establezca las siguientes propiedades de suscripción:
El ServerConnection al publicador creado en el paso 1 para ConnectionContext.
Nombre de la base de datos de suscripciones para SubscriptionDBName.
Nombre del suscriptor para SubscriberName.
Nombre de la base de datos de publicación para DatabaseName.
Nombre de la publicación para PublicationName.
Los campos Login y Password o SecurePassword* de SynchronizationAgentProcessSecurity proporcionan las credenciales de la cuenta de Microsoft Windows bajo la cual se ejecuta el Agente de mezcla en el distribuidor. Esta cuenta se usa para establecer conexiones locales con el distribuidor y para realizar conexiones remotas mediante la autenticación de Windows.
Nota:
La configuración SynchronizationAgentProcessSecurity no es necesaria cuando un miembro del rol fijo de
sysadmin
servidor crea la suscripción, pero se recomienda. En este caso, el agente suplantará la cuenta del Agente SQL Server. Para obtener más información, consulte Modelo de seguridad del agente de replicación.(Opcional) Un valor de
true
(el valor predeterminado) para CreateSyncAgentByDefault crear un trabajo de agente que se utiliza para sincronizar la suscripción. Si especificafalse
, la suscripción solo se puede sincronizar mediante programación.(Opcional) Establezca los campos SqlStandardLogin y SqlStandardPassword o SecureSqlStandardPassword de SubscriberSecurity al usar la autenticación de SQL Server para conectarse al suscriptor.
(Opcional) Establezca los campos SqlStandardLogin y SqlStandardPassword o SecureSqlStandardPassword de PublisherSecurity al usar la autenticación de SQL Server para conectarse al publicador.
Llame al método Create.
Importante
Al crear una suscripción de inserción en un publicador con un distribuidor remoto, los valores proporcionados para todas las propiedades, incluso SynchronizationAgentProcessSecurity, se envían al distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de llamar al Create método . Para obtener más información, vea Habilitar conexiones cifradas en el motor de base de datos (Administrador de configuración de SQL Server).
Ejemplos (RMO)
En este ejemplo se crea una nueva suscripción de inserción a una publicación transaccional. Las credenciales de la cuenta de Windows que se usan para ejecutar el trabajo del Agente de distribución se pasan en tiempo de ejecución.
// 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
En este ejemplo se crea una nueva suscripción de inserción a una publicación de combinación. Las credenciales de la cuenta de Windows que se usan para ejecutar el trabajo del Agente de mezcla se pasan en tiempo de ejecución.
// 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
Véase también
Ver y modificar las propiedades de la suscripción de notificaciones push
Procedimientos recomendados de seguridad de replicación
Create a Publication (Creación de una publicación)
Conceptos de objetos de gestión de replicación
Sincronizar una suscripción push
Suscribirse a publicaciones
Usar sqlcmd con variables de script