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 eliminar una suscripción de extracción en SQL Server 2014 mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).
En este tema
Para eliminar una suscripción de extracción, utilice:
Uso de SQL Server Management Studio
Elimine una suscripción de extracció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 de extracción en el publicador
Conéctese al publicador en SQL Server Management Studio y, a continuación, expanda el nodo del servidor.
Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .
Expanda la publicación asociada a la suscripción que desea eliminar.
Haga clic con el botón derecho 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 la suscripción. Si desactiva la casilla Conectar al Suscriptor, deberá conectarse al Suscriptor más adelante para eliminar la información.
Para eliminar una suscripción de 'pull' en el Suscriptor
Conéctese al suscriptor 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 Suscripciones locales .
Haga clic con el botón derecho 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 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 extracción se pueden eliminar mediante programación usando procedimientos almacenados de replicación. Los procedimientos almacenados utilizados dependerán del tipo de publicación al que pertenece la suscripción.
Para eliminar una suscripción de extracción a una publicación instantánea o transaccional
En el suscriptor de la base de datos de suscripciones, ejecute sp_droppullsubscription (Transact-SQL). Especifique @publication, @publisher y @publisher_db.
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.
Para suprimir una suscripción de extracción en una publicación de fusión
En el suscriptor de la base de datos de suscripciones, ejecute sp_dropmergepullsubscription (Transact-SQL). Especifique @publication, @publisher y @publisher_db.
En el publicador de la base de datos de publicación, ejecute sp_dropmergesubscription (Transact-SQL). Especifique @publication, @subscriber y @subscriber_db. Especifique un valor de pull para @subscription_type. (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.
Ejemplos (Transact-SQL)
En el siguiente ejemplo, se elimina una suscripción de extracción a una publicación transaccional. El primer lote se ejecuta en el suscriptor y el segundo se ejecuta en el publicador.
-- 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 is the batch executed at the Subscriber to drop
-- a pull subscription to a transactional publication.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2012';
USE [AdventureWorks2012Replica]
EXEC sp_droppullsubscription
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication;
GO
-- 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
El siguiente ejemplo elimina una suscripción de recuperación a una publicación de fusión. El primer lote se ejecuta en el suscriptor y el segundo se ejecuta en el publicador.
-- 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 Subscriber to remove
-- a merge pull subscription.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publication_db AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publication_db = N'AdventureWorks2012';
USE [AdventureWorks2012Replica]
EXEC sp_dropmergepullsubscription
@publisher = @publisher,
@publisher_db = @publication_db,
@publication = @publication;
GO
-- 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)
Puede eliminar suscripciones de extracción programáticamente utilizando Objetos de Administración de Replicación (RMO). Las clases de RMO que se usan para eliminar una suscripción de extracción dependen del tipo de publicación a la que se suscribe la suscripción de extracción.
Para eliminar una suscripción de tipo "pull" a una publicación transaccional o instantánea.
Cree conexiones tanto al suscriptor como al publicador mediante la ServerConnection clase .
Cree una instancia de la clase TransPullSubscription y establezca las propiedades PublicationName, DatabaseName, PublisherName y PublicationDBName. Use la conexión de suscriptor del paso 1 para establecer la ConnectionContext propiedad .
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.Llame al método Remove.
Cree una instancia de la clase TransPublication mediante la conexión del Publisher del paso 1. Especifique Name, DatabaseName y ConnectionContext.
Llame al método LoadProperties. Si este método devuelve
false
, las propiedades especificadas en el paso 5 son incorrectas o la publicación no existe en el servidor.Llame al método RemovePullSubscription. Especifique el nombre del suscriptor y la base de datos de suscripción para los parámetros subscriber y subscriberDB.
Para eliminar una suscripción de extracción a una publicación de combinación
Cree conexiones tanto al suscriptor como al publicador mediante la ServerConnection clase .
Cree una instancia de la clase MergePullSubscription y establezca las propiedades PublicationName, DatabaseName, PublisherName y PublicationDBName. Use la conexión del paso 1 para establecer la ConnectionContext propiedad .
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.Llame al método Remove.
Cree una instancia de la clase MergePublication utilizando la conexión del Publisher del paso 1. Especifique Name, DatabaseName y ConnectionContext.
Llame al método LoadProperties. Si este método devuelve
false
, las propiedades especificadas en el paso 5 son incorrectas o la publicación no existe en el servidor.Llame al método RemovePullSubscription. Especifique el nombre del suscriptor y la base de datos de suscripción para los parámetros subscriber y subscriberDB.
Ejemplos (RMO)
En este ejemplo se elimina una suscripción de extracción a una publicación transaccional y se quita el registro de la suscripción en el publicador.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksProductTran";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
//Create connections to the Publisher and Subscriber.
ServerConnection subscriberConn = new ServerConnection(subscriberName);
ServerConnection publisherConn = new ServerConnection(publisherName);
// Create the objects that we need.
TransPublication publication;
TransPullSubscription subscription;
try
{
// Connect to the Subscriber.
subscriberConn.Connect();
// Define the pull subscription.
subscription = new TransPullSubscription();
subscription.ConnectionContext = subscriberConn;
subscription.PublisherName = publisherName;
subscription.PublicationName = publicationName;
subscription.PublicationDBName = publicationDbName;
subscription.DatabaseName = subscriptionDbName;
// Define the publication.
publication = new TransPublication();
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
publication.ConnectionContext = publisherConn;
// Delete the pull subscription, if it exists.
if (subscription.IsExistingObject)
{
if (publication.LoadProperties())
{
// Remove the pull subscription registration at the Publisher.
publication.RemovePullSubscription(subscriberName, subscriptionDbName);
}
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));
}
// 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
{
subscriberConn.Disconnect();
publisherConn.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 connections to the Publisher and Subscriber.
Dim subscriberConn As ServerConnection = New ServerConnection(subscriberName)
Dim publisherConn As ServerConnection = New ServerConnection(publisherName)
' Create the objects that we need.
Dim publication As TransPublication
Dim subscription As TransPullSubscription
Try
' Connect to the Subscriber.
subscriberConn.Connect()
' Define the pull subscription.
subscription = New TransPullSubscription()
subscription.ConnectionContext = subscriberConn
subscription.PublisherName = publisherName
subscription.PublicationName = publicationName
subscription.PublicationDBName = publicationDbName
subscription.DatabaseName = subscriptionDbName
' Define the publication.
publication = New TransPublication()
publication.Name = publicationName
publication.DatabaseName = publicationDbName
publication.ConnectionContext = publisherConn
' Delete the pull subscription, if it exists.
If subscription.IsExistingObject Then
If publication.LoadProperties() Then
' Remove the pull subscription registration at the Publisher.
publication.RemovePullSubscription(subscriberName, subscriptionDbName)
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
' 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
subscriberConn.Disconnect()
publisherConn.Disconnect()
End Try
En este ejemplo se elimina una suscripción de pull a una publicación de fusión y se quita el registro de la suscripción en el Editor.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
//Create connections to the Publisher and Subscriber.
ServerConnection subscriberConn = new ServerConnection(subscriberName);
ServerConnection publisherConn = new ServerConnection(publisherName);
// Create the objects that we need.
MergePublication publication;
MergePullSubscription subscription;
try
{
// Connect to the Subscriber.
subscriberConn.Connect();
// Define the pull subscription.
subscription = new MergePullSubscription();
subscription.ConnectionContext = subscriberConn;
subscription.PublisherName = publisherName;
subscription.PublicationName = publicationName;
subscription.PublicationDBName = publicationDbName;
subscription.DatabaseName = subscriptionDbName;
// Define the publication.
publication = new MergePublication();
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
publication.ConnectionContext = publisherConn;
// Delete the pull subscription, if it exists.
if (subscription.IsExistingObject)
{
// Delete the pull subscription at the Subscriber.
subscription.Remove();
if (publication.LoadProperties())
{
publication.RemovePullSubscription(subscriberName, subscriptionDbName);
}
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));
}
}
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
{
subscriberConn.Disconnect();
publisherConn.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"
'Create connections to the Publisher and Subscriber.
Dim subscriberConn As ServerConnection = New ServerConnection(subscriberName)
Dim publisherConn As ServerConnection = New ServerConnection(publisherName)
' Create the objects that we need.
Dim publication As MergePublication
Dim subscription As MergePullSubscription
Try
' Connect to the Subscriber.
subscriberConn.Connect()
' Define the pull subscription.
subscription = New MergePullSubscription()
subscription.ConnectionContext = subscriberConn
subscription.PublisherName = publisherName
subscription.PublicationName = publicationName
subscription.PublicationDBName = publicationDbName
subscription.DatabaseName = subscriptionDbName
' Define the publication.
publication = New MergePublication()
publication.Name = publicationName
publication.DatabaseName = publicationDbName
publication.ConnectionContext = publisherConn
' Delete the pull subscription, if it exists.
If subscription.IsExistingObject Then
' Delete the pull subscription at the Subscriber.
subscription.Remove()
If publication.LoadProperties() Then
publication.RemovePullSubscription(subscriberName, subscriptionDbName)
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
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
subscriberConn.Disconnect()
publisherConn.Disconnect()
End Try
Véase también
Suscribirse a publicaciones
Procedimientos recomendados de seguridad de replicación