Compartir a través de


Crear una suscripción push

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

  1. Conéctese al publicador en Microsoft SQL Server Management Studio y, a continuación, expanda el nodo de servidor.

  2. Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .

  3. 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.

  4. Complete las páginas del Asistente para Nueva Suscripción.

Para crear una suscripción push desde suscriptor

  1. Conéctese al suscriptor en SQL Server Management Studio y, a continuación, expanda el nodo de servidor.

  2. Expanda la carpeta Replicación .

  3. Haga clic con el botón derecho en la carpeta Suscripciones locales y, a continuación, haga clic en Nuevas suscripciones.

  4. 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.

  5. Conéctese al publicador en el cuadro de diálogo Conectar al servidor .

  6. Seleccione una publicación en la página Publicación .

  7. 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

  1. 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.

  2. 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.

  3. 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

  1. 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.

  2. 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.

  3. 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

  1. Cree una conexión al publicador mediante la clase ServerConnection .

  2. Cree una instancia de la clase TransPublication mediante la conexión del Publisher del paso 1. Especifique Name, DatabaseNamey ConnectionContext.

  3. 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.

  4. Realice un AND lógico bit a bit (& en Visual C# y And 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) entre Or y AttributesAllowPush. A continuación, llame CommitPropertyChanges a para habilitar las suscripciones de inserción.

  5. 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.

  6. Cree una instancia de la clase TransSubscription.

  7. Establezca las siguientes propiedades de suscripción:

  8. 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

  1. Cree una conexión al publicador mediante la clase ServerConnection .

  2. Cree una instancia de la clase MergePublication mediante la conexión del Publisher del paso 1. Especifique Name, DatabaseNamey ConnectionContext.

  3. 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.

  4. Realice un AND lógico bit a bit (& en Visual C# y And 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) entre Or y AttributesAllowPush. A continuación, llame a CommitPropertyChanges para habilitar las suscripciones push.

  5. 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.

  6. Cree una instancia de la clase MergeSubscription.

  7. Establezca las siguientes propiedades de suscripción:

  8. 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