Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:SQL Server
Banco de Dados SQL do Azure
Este tópico descreve como eliminar uma subscrição push no SQL Server utilizando SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO).
Neste tópico
Para eliminar uma subscrição push, utilizando:
SQL Server Management Studio (Estúdio de Gestão do Servidor SQL)
Usando o SQL Server Management Studio
Elimine uma subscrição push no Publisher (da pasta Local Publications no SQL Server Management Studio) ou no Subscriber (da pasta Local Subscriptions ). Eliminar uma subscrição não remove objetos ou dados da subscrição; Devem ser removidos manualmente.
Para eliminar uma subscrição push no Publisher
Ligue-se ao Publisher no SQL Server Management Studio e depois expanda o nó do servidor.
Expanda a pasta Replicação e depois expanda a pasta Publicações Locais .
Expanda a publicação associada à subscrição que pretende eliminar.
Clique com o botão direito na subscrição e depois clique em Eliminar.
Na caixa de diálogo de confirmação, selecione se se deve ligar ao Assinante para eliminar a informação da subscrição. Se desmarcar a opção Ligar ao Assinante, deve conectar-se ao Assinante mais tarde para apagar a informação.
Para eliminar uma subscrição push no Assinante
Liga-te ao Assinante no SQL Server Management Studio e, em seguida, expande o nó do servidor.
Expanda a pasta Replicação e depois expanda a pasta Subscrições Locais .
Clique com o botão direito na subscrição que quer eliminar e depois clique em Apagar.
Na caixa de diálogo de confirmação, selecione se se deve ligar ao Publisher para eliminar informações de subscrição. Se desmarcar a caixa de seleção Ligar ao Editor, deverá ligar-se ao Editor mais tarde para apagar a informação.
Usando Transact-SQL
As subscrições push podem ser eliminadas programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados utilizados dependem do tipo de publicação a que a subscrição pertence.
Para eliminar uma subscrição push de um snapshot ou de uma publicação transacional
No Editor na base de dados de publicações, execute sp_dropsubscription (Transact-SQL). Especifique @publicação e @assinante. Especifique um valor de todos para @article. (Opcional) Se o Distribuidor não puder ser acedido, especifique um valor de 1 para @ignore_distributor para eliminar a subscrição sem remover objetos relacionados no Distribuidor.
No Subscriber na base de dados de subscrição, execute sp_subscription_cleanup (Transact-SQL) para remover os metadados de replicação na base de dados de subscrição.
Para eliminar uma subscrição push a uma publicação de fusão
No Publisher, execute sp_dropmergesubscription (Transact-SQL), especificando @publication, @subscriber e @subscriber_db. (Opcional) Se o Distribuidor não puder ser acedido, especifique um valor de 1 para @ignore_distributor para eliminar a subscrição sem remover objetos relacionados no Distribuidor.
No Subscritor na base de dados de subscrição, execute sp_mergesubscription_cleanup (Transact-SQL). Especifique @publisher, @publisher_db e @publication. Isto remove os metadados de fusão da base de dados de subscrição.
Exemplos (Transact-SQL)
Este exemplo elimina uma subscrição push de uma publicação transacional.
-- 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
Este exemplo elimina uma subscrição push a uma publicação de fusão.
-- 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
Utilização de Objetos de Gestão de Replicação (RMO)
As classes RMO que usa para eliminar uma subscrição push dependem do tipo de publicação a que a subscrição push está subscrita.
Para eliminar uma subscrição push de um snapshot ou publicação transacional
Crie uma ligação ao Editor usando a ServerConnection classe.
Cria uma instância da TransSubscription classe.
Defina as propriedades PublicationName, SubscriptionDBName, SubscriberName e DatabaseName.
Defina o ServerConnection conforme o passo 1 para a propriedade ConnectionContext.
Verifique a IsExistingObject propriedade para verificar se a subscrição existe. Se o valor desta propriedade for falso, ou as propriedades de subscrição no passo 2 foram definidas incorretamente ou a subscrição não existe.
Chame o método Remove.
Para eliminar uma subscrição push numa publicação de fusão
Crie uma ligação ao Editor usando a ServerConnection classe.
Cria uma instância da MergeSubscription classe.
Defina as propriedades PublicationName, SubscriptionDBName, SubscriberName e DatabaseName.
Defina o ServerConnection a partir do passo 1 para a ConnectionContext propriedade.
Verifique a IsExistingObject propriedade para verificar se a subscrição existe. Se o valor desta propriedade for falso, ou as propriedades de subscrição no passo 2 foram definidas incorretamente ou a subscrição não existe.
Chame o método Remove.
Exemplos (RMO)
Pode eliminar subscrições push programaticamente usando os Objectos de Gestão de Replicação (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