Menghapus Langganan Push

Berlaku untuk:SQL ServerAzure SQL Database

Topik ini menjelaskan cara menghapus langganan push di SQL Server dengan menggunakan SQL Server Management Studio, Transact-SQL, atau Replication Management Objects (RMO).

Dalam Topik Ini

Menggunakan SQL Server Management Studio

Hapus langganan push di Publisher (dari folder Publikasi Lokal di SQL Server Management Studio) atau Pelanggan (dari folder Langganan Lokal). Menghapus langganan tidak menghapus objek atau data dari langganan; mereka harus dihapus secara manual.

Untuk menghapus langganan push di Publisher

  1. Koneksi ke Publisher di SQL Server Management Studio, lalu perluas simpul server.

  2. Perluas folder Replikasi, lalu perluas folder Publikasi Lokal.

  3. Perluas publikasi yang terkait dengan langganan yang ingin Anda hapus.

  4. Klik kanan langganan, lalu klik Hapus.

  5. Dalam kotak dialog konfirmasi, pilih apakah akan tersambung ke Pelanggan untuk menghapus informasi langganan. Jika Anda menghapus kotak centang Koneksi ke Pelanggan, Anda harus tersambung ke Pelanggan nanti untuk menghapus informasi.

Untuk menghapus langganan push di Pelanggan

  1. Koneksi ke Pelanggan di SQL Server Management Studio, lalu perluas simpul server.

  2. Perluas folder Replikasi, lalu perluas folder Langganan Lokal.

  3. Klik kanan langganan yang ingin Anda hapus, lalu klik Hapus.

  4. Dalam kotak dialog konfirmasi, pilih apakah akan tersambung ke Publisher untuk menghapus informasi langganan. Jika Anda menghapus kotak centang Koneksi ke Publisher, Anda harus menyambungkan ke Publisher nanti untuk menghapus informasi.

Menggunakan T-SQL

Langganan push dapat dihapus secara terprogram menggunakan prosedur tersimpan replikasi. Prosedur tersimpan yang digunakan bergantung pada jenis publikasi tempat langganan berada.

Untuk menghapus langganan push ke rekam jepret atau publikasi transaksi

  1. Di Publisher pada database publikasi, jalankan sp_dropsubscription (Transact-SQL). Tentukan @publication dan @subscriber. Tentukan nilai semua untuk @article. (Opsional) Jika Distributor tidak dapat diakses, tentukan nilai 1 untuk @ignore_distributor menghapus langganan tanpa menghapus objek terkait di Distributor.

  2. Di Pelanggan pada database langganan, jalankan sp_subscription_cleanup (Transact-SQL) untuk menghapus metadata replikasi dalam database langganan.

Untuk menghapus langganan push ke publikasi gabungan

  1. Di Publisher, jalankan sp_dropmergesubscription (Transact-SQL), menentukan @publication, @subscriber, dan @subscriber_db. (Opsional) Jika Distributor tidak dapat diakses, tentukan nilai 1 untuk @ignore_distributor menghapus langganan tanpa menghapus objek terkait di Distributor.

  2. Di Pelanggan pada database langganan, jalankan sp_mergesubscription_cleanup (Transact-SQL). Tentukan @publisher, @publisher_db, dan @publication. Ini menghapus metadata gabungan dari database langganan.

Contoh (Transact-SQL)

Contoh ini menghapus langganan push ke publikasi transaksi.

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

Contoh ini menghapus langganan push ke publikasi gabungan.

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

Menggunakan Objek Manajemen Replikasi (RMO)

Kelas RMO yang Anda gunakan untuk menghapus langganan push bergantung pada jenis publikasi tempat langganan pendorongan berlangganan.

Untuk menghapus langganan push ke rekam jepret atau publikasi transaksi

  1. Buat koneksi ke Publisher dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas TransSubscription.

  3. Atur PublicationNameproperti , SubscriptionDBName, SubscriberName, dan DatabaseName .

  4. Atur ServerConnection dari langkah 1 untuk ConnectionContext properti .

  5. IsExistingObject Periksa properti untuk memverifikasi bahwa langganan ada. Jika nilai properti ini salah, properti langganan di langkah 2 didefinisikan dengan tidak benar atau langganan tidak ada.

  6. Panggil Remove metode.

Untuk menghapus langganan push ke publikasi gabungan

  1. Buat koneksi ke Publisher dengan menggunakan ServerConnection kelas .

  2. Membuat instans kelas MergeSubscription.

  3. Atur PublicationNameproperti , SubscriptionDBName, SubscriberName, dan DatabaseName .

  4. Atur ServerConnection dari langkah 1 untuk ConnectionContext properti .

  5. IsExistingObject Periksa properti untuk memverifikasi bahwa langganan ada. Jika nilai properti ini salah, properti langganan di langkah 2 didefinisikan dengan tidak benar atau langganan tidak ada.

  6. Panggil Remove metode.

Contoh (RMO)

Anda dapat menghapus langganan push secara terprogram dengan menggunakan Objek Manajemen Replikasi (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

Lihat Juga

Berlangganan Publikasi
Praktik Terbaik Keamanan Replikasi