Compartir a través de


Eliminar una suscripción push

En este tema se describe cómo eliminar una suscripción push en SQL Server 2014 utilizando SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).

En este tema

Uso de SQL Server Management Studio

Eliminar una suscripción de inserción en el publicador (desde la carpeta Publicaciones locales de SQL Server Management Studio) o en el suscriptor (desde la carpeta Suscripciones locales). La eliminación de una suscripción no quita objetos ni datos de la suscripción; deben quitarse manualmente.

Para eliminar una suscripción push en el Publicador

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

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

  3. Expanda la publicación asociada a la suscripción que desea eliminar.

  4. Haga clic con el botón derecho en la suscripción y, a continuación, haga clic en Eliminar.

  5. En el cuadro de diálogo de confirmación, seleccione si desea conectarse al suscriptor para eliminar la información de la suscripción. Si desmarcas la casilla Conectar al suscriptor, debes conectarte al suscriptor más adelante para borrar la información.

Para eliminar una suscripción de inserción en el dispositivo del 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 y, a continuación, expanda la carpeta Suscripciones locales .

  3. Haga clic con el botón derecho en la suscripción que desea eliminar y, a continuación, haga clic en Eliminar.

  4. En el cuadro de diálogo de confirmación, seleccione si desea conectarse al publicador para eliminar la información de la suscripción. Si desactiva la casilla Conectar al publicador , debe conectarse al publicador más adelante para eliminar la información.

Uso de Transact-SQL

Las suscripciones de inserción se pueden eliminar de forma programática utilizando procedimientos almacenados de replicación. Los procedimientos almacenados utilizados dependen del tipo de publicación al que pertenece la suscripción.

Para eliminar una suscripción de inserción a una publicación transaccional o instantánea

  1. En la base de datos de publicación del publicador, ejecute sp_dropsubscription (Transact-SQL). Especifique @publication y @subscriber. Especifique un valor de todo para @article. (Opcional) Si no se puede acceder al distribuidor, especifique un valor de 1 para @ignore_distributor eliminar la suscripción sin quitar objetos relacionados en el distribuidor.

  2. En el suscriptor de la base de datos de suscripciones, ejecute sp_subscription_cleanup (Transact-SQL) para quitar los metadatos de replicación en la base de datos de suscripciones.

Para eliminar una suscripción de inserción a una publicación de combinación

  1. En el publicador, ejecute sp_dropmergesubscription (Transact-SQL) y especifique @publication, @subscriber y @subscriber_db. (Opcional) Si no se puede acceder al distribuidor, especifique un valor de 1 para @ignore_distributor eliminar la suscripción sin quitar objetos relacionados en el distribuidor.

  2. En el suscriptor de la base de datos de suscripciones, ejecute sp_mergesubscription_cleanup (Transact-SQL). Especifique @publisher, @publisher_db y @publication. Esto elimina los metadatos de combinación de la base de datos de suscripciones.

Ejemplos (Transact-SQL)

En este ejemplo, se elimina una suscripción push a una publicación transaccional.

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

-- This batch is executed at the Publisher to remove 
-- a pull or push subscription to a transactional publication.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);

USE [AdventureWorks2012]
EXEC sp_dropsubscription 
  @publication = @publication, 
  @article = N'all',
  @subscriber = @subscriber;
GO

En este ejemplo se elimina una suscripción push a una publicación de merge.

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

-- This batch is executed at the Publisher to remove 
-- a pull or push subscription to a merge publication.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2012Replica';

USE [AdventureWorks2012]
EXEC sp_dropmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB;
GO

El uso de Replication Management Objects (RMO)

Las clases de RMO que usas para eliminar una suscripción automática dependen del tipo de publicación a la que está suscrita dicha suscripción.

Para eliminar una suscripción push a una publicación de instantánea o transaccional

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

  2. Cree una instancia de la clase TransSubscription.

  3. Establezca las propiedades PublicationName, SubscriptionDBName, SubscriberName y DatabaseName.

  4. Configure el ServerConnection del paso 1 para la propiedad ConnectionContext.

  5. Compruebe la IsExistingObject propiedad para comprobar que la suscripción existe. Si el valor de esta propiedad es false, las propiedades de la suscripción del paso 2 se definieron incorrectamente o la suscripción no existe.

  6. Llame al método Remove.

Para eliminar una suscripción automática a una publicación de combinación

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

  2. Cree una instancia de la clase MergeSubscription.

  3. Establezca las PublicationName, SubscriptionDBName, SubscriberName, y DatabaseName propiedades.

  4. Establezca del paso 1 el ServerConnection para la propiedad ConnectionContext.

  5. Compruebe la IsExistingObject propiedad para comprobar que la suscripción existe. Si el valor de esta propiedad es false, las propiedades de la suscripción del paso 2 se definieron incorrectamente o la suscripción no existe.

  6. Llame al método Remove.

Ejemplos (RMO)

Puede eliminar suscripciones de inserción programáticamente usando los Replication Management Objects (RMO).

// 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(publisherName);

// Create the objects that we need.
TransSubscription subscription;

try
{
    // Connect to the Subscriber.
    conn.Connect();

    // Define the pull subscription.
    subscription = new TransSubscription();
    subscription.ConnectionContext = conn;
    subscription.SubscriberName = subscriberName;
    subscription.PublicationName = publicationName;
    subscription.SubscriptionDBName = subscriptionDbName;
    subscription.DatabaseName = publicationDbName;

    // Delete the pull subscription, if it exists.
    if (subscription.IsExistingObject)
    {
        // Delete the pull subscription at the Subscriber.
        subscription.Remove();
    }
    else
    {
        throw new ApplicationException(String.Format(
            "The subscription to {0} does not exist on {1}",
            publicationName, subscriberName));
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here.
    throw new ApplicationException(String.Format(
        "The subscription to {0} could not be deleted.", 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(publisherName)

' Create the objects that we need.
Dim subscription As TransSubscription

Try
    ' Connect to the Subscriber.
    conn.Connect()

    ' Define the pull subscription.
    subscription = New TransSubscription()
    subscription.ConnectionContext = conn
    subscription.SubscriberName = subscriberName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.DatabaseName = publicationDbName

    ' Delete the pull subscription, if it exists.
    If subscription.IsExistingObject Then

        ' Delete the pull subscription at the Subscriber.
        subscription.Remove()
    Else
        Throw New ApplicationException(String.Format( _
         "The subscription to {0} does not exist on {1}", _
         publicationName, subscriberName))
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here.
    Throw New ApplicationException(String.Format( _
        "The subscription to {0} could not be deleted.", publicationName), ex)
Finally
    conn.Disconnect()
End Try

Véase también

Suscribirse a publicaciones
Procedimientos recomendados de seguridad de replicación