Eliminar una suscripción de inserción
Se aplica a: SQL Server Azure SQL Database
En este tema se describe cómo eliminar una suscripción de inserción en SQL Server mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).
En este tema
Para eliminar una suscripción de inserción con:
Uso de SQL Server Management Studio
Elimine una suscripción de inserción en el publicador (desde la carpeta Publicaciones locales en SQL Server Management Studio) o el suscriptor (desde la carpeta Suscripciones locales). Al eliminar una suscripción no se quitan los objetos ni los datos de la suscripción, y deben quitarse manualmente.
Para eliminar una suscripción de inserción en el publicador
Conéctese al publicador en 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 .
Expanda la publicación asociada con la suscripción que desea eliminar.
Haga clic con el botón secundario en la suscripción y, a continuación, haga clic en Eliminar.
En el cuadro de diálogo de confirmación, seleccione si desea conectarse al suscriptor para eliminar la información de suscripciones. Si desactiva la casilla Conectar a suscriptor , debe conectar al suscriptor posteriormente para eliminar la información.
Para eliminar una suscripción de inserción en el suscriptor
Conéctese al suscriptor en SQL Server Management Studio y expanda el nodo de servidor.
Expanda la carpeta Replicación y, a continuación, la carpeta Suscripciones locales.
Haga clic con el botón secundario en la suscripción que desea eliminar y, a continuación, haga clic en Eliminar.
En el cuadro de diálogo de confirmación, seleccione si desea conectarse al publicador para eliminar la información de suscripciones. Si desactiva la casilla Conectar al publicador , deberá conectarse al publicador más adelante para eliminar la información.
Usar Transact-SQL
Las suscripciones de inserción pueden eliminarse mediante programación con procedimientos almacenados de replicación. Los procedimientos almacenados que se usen dependerán del tipo de publicación a la que corresponda la suscripción.
Para eliminar una suscripción de inserción a una publicación transaccional o de instantáneas
En la base de datos de publicación del publicador, ejecute sp_dropsubscription (Transact-SQL). Especifique @publication y @subscriber. Especifique un valor de all para @article. (Opcional) Si no se puede tener acceso al Distribuidor, especifique un valor de 1 para @ignore_distributor para eliminar la suscripción sin quitar los objetos relacionados en el Distribuidor.
En la base de datos de suscripciones del suscriptor, ejecute sp_subscription_cleanup (Transact-SQL) para quitar los metadatos de replicación restantes en la base de datos de suscripciones.
Para eliminar una suscripción de inserción a una publicación de combinación
En el publicador, ejecute sp_dropmergesubscription (Transact-SQL) y especifique @publication, @subscriber y @subscriber_db. (Opcional) Si no se puede tener acceso al Distribuidor, especifique un valor de 1 para @ignore_distributor para eliminar la suscripción sin quitar los objetos relacionados en el Distribuidor.
En la base de datos de suscripciones del suscriptor, ejecute sp_mergesubscription_cleanup (Transact-SQL). Especifique @publisher, @publisher_dby @publication. Esto quita los metadatos de mezcla de la base de datos de suscripciones.
Ejemplos (Transact-SQL)
En este ejemplo se elimina una suscripción de inserción 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 [AdventureWorks2022]
EXEC sp_dropsubscription
@publication = @publication,
@article = N'all',
@subscriber = @subscriber;
GO
En este ejemplo se elimina una suscripción de inserción a una publicación de combinación.
-- 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'AdventureWorks2022Replica';
USE [AdventureWorks2022]
EXEC sp_dropmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB;
GO
Usar Replication Management Objects (RMO)
Las clases RMO que se usan para eliminar una suscripción de inserción dependen del tipo de publicación a la se suscribe dicha suscripción.
Para eliminar una suscripción de inserción a una publicación transaccional o de instantáneas
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase TransSubscription.
Establezca las propiedades PublicationName, SubscriptionDBName, SubscriberNamey DatabaseName .
Establezca la conexión ServerConnection del paso 1 para la propiedad ConnectionContext .
Compruebe la propiedad IsExistingObject para asegurarse de que la suscripción existe. Si el valor de esta propiedad es false, significa que las propiedades de suscripción del paso 2 se definieron incorrectamente o bien, que la suscripción no existe.
Llame al método Remove.
Para eliminar una suscripción de inserción a una publicación de combinación
Cree una conexión al publicador mediante la clase ServerConnection .
Cree una instancia de la clase MergeSubscription.
Establezca las propiedades PublicationName, SubscriptionDBName, SubscriberNamey DatabaseName .
Establezca la conexión ServerConnection del paso 1 para la propiedad ConnectionContext .
Compruebe la propiedad IsExistingObject para asegurarse de que la suscripción existe. Si el valor de esta propiedad es false, significa que las propiedades de suscripción del paso 2 se definieron incorrectamente o bien, que la suscripción no existe.
Llame al método Remove.
Ejemplos (RMO)
Las suscripciones de inserción se pueden eliminar mediante programación utilizando Replication Management Objects (RMO).
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksProductTran";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
string publicationDbName = "AdventureWorks2022";
//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 = "AdventureWorks2022Replica"
Dim publicationDbName As String = "AdventureWorks2022"
'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