Eliminazione di una sottoscrizione pushDelete a Push Subscription

In questo argomento viene descritto come eliminare una sottoscrizione push in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLo RMO (Replication Management Objects).This topic describes how to delete a push subscription in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO).

Contenuto dell'argomentoIn This Topic

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Eliminare una sottoscrizione push dal server di pubblicazione (dalla cartella Pubblicazioni locali in SQL Server Management StudioSQL Server Management Studio) o dal Sottoscrittore (dalla cartella Sottoscrizioni locali ).Delete a push subscription at the Publisher (from the Local Publications folder in SQL Server Management StudioSQL Server Management Studio) or the Subscriber (from the Local Subscriptions folder). Se si elimina una sottoscrizione, gli oggetti o i dati non vengono rimossi automaticamente dalla sottoscrizione, ma è necessario rimuoverli manualmente.Deleting a subscription does not remove objects or data from the subscription; they must be removed manually.

Per eliminare una sottoscrizione push dal server di pubblicazioneTo delete a push subscription at the Publisher

  1. Connettersi al server di pubblicazione in SQL Server Management StudioSQL Server Management Studioe quindi espandere il nodo del server.Connect to the Publisher in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Espandere la cartella Replica e quindi la cartella Pubblicazioni locali .Expand the Replication folder, and then expand the Local Publications folder.

  3. Espandere la pubblicazione associata alla sottoscrizione che si desidera eliminare.Expand the publication associated with the subscription you want to delete.

  4. Fare clic con il pulsante destro del mouse sulla sottoscrizione e quindi scegliere Elimina.Right-click the subscription, and then click Delete.

  5. Nella finestra di dialogo di conferma specificare se connettersi al Sottoscrittore per eliminare le informazioni sulla sottoscrizione.In the confirmation dialog box, select whether to connect to the Subscriber to delete subscription information. Se si deseleziona la casella di controllo Connetti al Sottoscrittore , è necessario connettersi al Sottoscrittore in un secondo momento per eliminare le informazioni.If you clear the Connect to Subscriber checkbox, you should connect to the Subscriber later to delete the information.

Per eliminare una sottoscrizione push dal SottoscrittoreTo delete a push subscription at the Subscriber

  1. Connettersi al Sottoscrittore in SQL Server Management StudioSQL Server Management Studioe quindi espandere il nodo del server.Connect to the Subscriber in SQL Server Management StudioSQL Server Management Studio, and then expand the server node.

  2. Espandere la cartella Replica e quindi la cartella Sottoscrizioni locali .Expand the Replication folder, and then expand the Local Subscriptions folder.

  3. Fare clic con il pulsante destro del mouse sulla sottoscrizione che si desidera eliminare e quindi scegliere Elimina.Right-click the subscription you want to delete, and then click Delete.

  4. Nella finestra di dialogo di conferma specificare se connettersi al server di pubblicazione per eliminare le informazioni sulla sottoscrizione.In the confirmation dialog box, select whether to connect to the Publisher to delete subscription information. Se si deseleziona la casella di controllo Connetti al server di pubblicazione , sarà necessario connettersi al server di pubblicazione in seguito per eliminare le informazioni.If you clear the Connect to Publisher check box, you should connect to the Publisher later to delete the information.

Utilizzo di Transact-SQL Using Transact-SQL

È possibile eliminare sottoscrizioni push a livello di programmazione tramite le stored procedure di replica.Push subscriptions can be deleted programmatically using replication stored procedures. Le stored procedure utilizzate dipendono dal tipo di pubblicazione a cui appartiene la sottoscrizione.The stored procedures used depend on the type of publication to which the subscription belongs.

Per eliminare una sottoscrizione push di una pubblicazione snapshot o transazionaleTo delete a push subscription to a snapshot or transactional publication

  1. Nel database di pubblicazione del server di pubblicazione eseguire sp_dropsubscription (Transact-SQL).At the Publisher on the publication database, execute sp_dropsubscription (Transact-SQL). Specificare i parametri @publication e @subscriber.Specify @publication and @subscriber. Specificare il valore all per il parametro @article.Specify a value of all for @article. (Facoltativo) Se non è possibile accedere al database di distribuzione, specificare il valore 1 per il parametro @ignore_distributor per eliminare la sottoscrizione senza rimuovere gli oggetti correlati nel database di distribuzione.(Optional) If the Distributor cannot be accessed, specify a value of 1 for @ignore_distributor to delete the subscription without removing related objects at the Distributor.

  2. Nel database di sottoscrizione del Sottoscrittore eseguire sp_subscription_cleanup (Transact-SQL) per rimuovere i metadati di replica nel database di sottoscrizione.At the Subscriber on the subscription database, execute sp_subscription_cleanup (Transact-SQL) to remove replication metadata in the subscription database.

Per eliminare una sottoscrizione push di una pubblicazione di tipo mergeTo delete a push subscription to a merge publication

  1. Nel server di pubblicazione eseguire sp_dropmergesubscription (Transact-SQL), specificando @publication, @subscriber e @subscriber_db.At the Publisher, execute sp_dropmergesubscription (Transact-SQL), specifying @publication, @subscriber and @subscriber_db. (Facoltativo) Se non è possibile accedere al database di distribuzione, specificare il valore 1 per il parametro @ignore_distributor per eliminare la sottoscrizione senza rimuovere gli oggetti correlati nel database di distribuzione.(Optional) If the Distributor cannot be accessed, specify a value of 1 for @ignore_distributor to delete the subscription without removing related objects at the Distributor.

  2. Nel database di sottoscrizione del Sottoscrittore eseguire sp_mergesubscription_cleanup (Transact-SQL).At the Subscriber on the subscription database, execute sp_mergesubscription_cleanup (Transact-SQL). Specificare i parametri @publisher, @publisher_dbe @publication.Specify @publisher, @publisher_db, and @publication. per rimuovere i metadati di merge dal database di sottoscrizione.This removes merge metadata from the subscription database.

Esempi (Transact-SQL) Examples (Transact-SQL)

In questo esempio viene eliminata una sottoscrizione push di una pubblicazione transazionale.This example deletes a push subscription to a transactional publication.

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

In questo esempio viene eliminata una sottoscrizione push di una pubblicazione di tipo merge.This example deletes a push subscription to a merge publication.

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

Utilizzo di RMO (Replication Management Objects) Using Replication Management Objects (RMO)

Le classi RMO utilizzate per l'eliminazione di una sottoscrizione push dipendono dal tipo di pubblicazione per cui viene creata la sottoscrizione push.The RMO classes that you use to delete a push subscription depend on the type of publication to which the push subscription is subscribed.

Per eliminare una sottoscrizione push di una pubblicazione snapshot o transazionaleTo delete a push subscription to a snapshot or transactional publication

  1. Creare una connessione al Sottoscrittore tramite la classe ServerConnection.Create a connection to the Subscriber by using the ServerConnection class.

  2. Creare un'istanza della classe TransSubscription.Create an instance of the TransSubscription class.

  3. Impostare le proprietà PublicationName, SubscriptionDBName, SubscriberName e DatabaseName.Set the PublicationName, SubscriptionDBName, SubscriberName, and DatabaseName properties.

  4. Impostare la connessione ServerConnection del passaggio 1 per la proprietà ConnectionContext.Set the ServerConnection from step 1 for the ConnectionContext property.

  5. Controllare la proprietà IsExistingObject per verificare che la sottoscrizione esista.Check the IsExistingObject property to verify that the subscription exists. Se il valore di questa proprietà è false, le proprietà di sottoscrizioni sono state definite in modo non corretto nel passaggio 2 oppure la sottoscrizione non esiste.If the value of this property is false, either the subscription properties in step 2 were defined incorrectly or the subscription does not exist.

  6. Chiamare il metodo Remove.Call the Remove method.

Per eliminare una sottoscrizione push di una pubblicazione di tipo mergeTo delete a push subscription to a merge publication

  1. Creare una connessione al Sottoscrittore tramite la classe ServerConnection.Create a connection to the Subscriber by using the ServerConnection class.

  2. Creare un'istanza della classe MergeSubscription.Create an instance of the MergeSubscription class.

  3. Impostare le proprietà PublicationName, SubscriptionDBName, SubscriberName e DatabaseName.Set the PublicationName, SubscriptionDBName, SubscriberName, and DatabaseName properties.

  4. Impostare la connessione ServerConnection del passaggio 1 per la proprietà ConnectionContext.Set the ServerConnection from step 1 for the ConnectionContext property.

  5. Controllare la proprietà IsExistingObject per verificare che la sottoscrizione esista.Check the IsExistingObject property to verify that the subscription exists. Se il valore di questa proprietà è false, le proprietà di sottoscrizioni sono state definite in modo non corretto nel passaggio 2 oppure la sottoscrizione non esiste.If the value of this property is false, either the subscription properties in step 2 were defined incorrectly or the subscription does not exist.

  6. Chiamare il metodo Remove.Call the Remove method.

Esempi (RMO) Examples (RMO)

È possibile eliminare sottoscrizioni push a livello di programmazione tramite gli oggetti RMO (Replication Management Objects).You can delete push subscriptions programmatically by using 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

Vedere ancheSee Also

Sottoscrivere le pubblicazioni Subscribe to Publications
Replication Security Best Practices Replication Security Best Practices