Aracılığıyla paylaş


Anında İletme Aboneliğini Silme

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Bu konuda, SQL Server Management Studio, Transact-SQL veya Çoğaltma Yönetimi Nesneleri (RMO) kullanarak SQL Server'da anında iletme aboneliğinin nasıl silineceği açıklanmaktadır.

Bu Konuda

SQL Server Management Studio'yu kullanma

Publisher'da (SQL Server Management Studio'daki Yerel Yayınlar klasöründen) veya Abone'den ( Yerel Abonelikler klasöründen) bir anında iletme aboneliği silin. Aboneliğin silinmesi abonelikten nesneleri veya verileri kaldırmaz; el ile kaldırılmalıdır.

Publisher'da anında iletme aboneliğini silmek için

  1. SQL Server Management Studio'da Publisher'a bağlanın ve ardından sunucu düğümünü genişletin.

  2. Çoğaltma klasörünü genişletin ve ardından Yerel Yayınlar klasörünü genişletin.

  3. Silmek istediğiniz abonelikle ilişkili yayını genişletin.

  4. Aboneliğe sağ tıklayın ve ardından Sil'e tıklayın.

  5. Onay iletişim kutusunda abonelik bilgilerini silmek için Abone'ye bağlanıp bağlanmayacağınızı seçin. Aboneye Bağlan onay kutusunu temizlerseniz, bilgileri silmek için aboneye daha sonra bağlanmalısınız.

Abonede bir push aboneliğini silmek için

  1. SQL Server Management Studio'da Aboneye bağlanın ve ardından sunucu düğümünü genişletin.

  2. Çoğaltma klasörünü genişletin ve ardından Yerel Abonelikler klasörünü genişletin.

  3. Silmek istediğiniz aboneliğe sağ tıklayın ve ardından Sil'e tıklayın.

  4. Onay iletişim kutusunda, abonelik bilgilerini silmek için Yayımcı'ya bağlanıp bağlanmayacağınızı seçin. Yayımcıya Bağlan onay kutusunu temizlerseniz, daha sonra bilgileri silmek için Publisher'a bağlanmanız gerekir.

Transact-SQL Kullanımı

Anında iletme abonelikleri, çoğaltma saklı yordamları kullanılarak program aracılığıyla silinebilir. Kullanılan saklı yordamlar, aboneliğin ait olduğu yayın türüne bağlıdır.

Anlık görüntüye veya işlem yayınına gönderme aboneliğini silmek için

  1. Yayın veritabanındaki Publisher'da sp_dropsubscription (Transact-SQL)'i çalıştırın. @publication ve @subscriber belirtin. @article için tümünün değerini belirtin. (İsteğe bağlı) Dağıtımcıya erişilemiyorsa, @ignore_distributor dağıtımcıda ilgili nesneleri kaldırmadan aboneliği silmek için 1 değerini belirtin.

  2. Abonelik veritabanındaki çoğaltma meta verilerini kaldırmak için Abone olarak sp_subscription_cleanup (Transact-SQL) çalıştırın.

Birleştirme yayınına ait bir itme aboneliğini silmek için

  1. Publisher'da @publication, @subscriberve @subscriber_db belirterek sp_dropmergesubscription ( Transact-SQL ) yürütebilirsiniz. (İsteğe bağlı) Dağıtımcıya erişilemiyorsa, @ignore_distributor dağıtımcıda ilgili nesneleri kaldırmadan aboneliği silmek için 1 değerini belirtin.

  2. Abonelik veritabanındaki Abone'de sp_mergesubscription_cleanup (Transact-SQL) yürütün. @publisher, @publisher_db ve @publication belirtin. Bu işlem abonelik veritabanından birleştirme meta verilerini kaldırır.

Örnekler (Transact-SQL)

Bu örnek, bir işlem yayını için bir push aboneliğini siler.

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

Bu örnek, birleştirme yayınına yönelik anında aboneliği siler.

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

Çoğaltma Yönetimi Nesnelerini (RMO) Kullanma

Anında iletme aboneliğini silmek için kullandığınız RMO sınıfları, gönderim aboneliğinin abone olduğu yayın türüne bağlıdır.

Anlık görüntüye veya işlem yayınına anlık gönderim aboneliğini silme

  1. sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.

  2. Sınıfının bir örneğini TransSubscription oluşturun.

  3. PublicationName, , SubscriptionDBNameSubscriberNameve DatabaseName özelliklerini ayarlayın.

  4. 1. adımdaki ServerConnection değerini ConnectionContext özelliği için ayarlayın.

  5. Aboneliğin IsExistingObject var olduğunu doğrulamak için özelliğini denetleyin. Bu özelliğin değeri false ise, 2. adımdaki abonelik özellikleri yanlış tanımlanmıştır veya abonelik mevcut değildir.

  6. yöntemini çağırın Remove .

Birleştirme yayını için anlık bildirim aboneliğini silmek

  1. sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.

  2. Sınıfının bir örneğini MergeSubscription oluşturun.

  3. PublicationName, , SubscriptionDBNameSubscriberNameve DatabaseName özelliklerini ayarlayın.

  4. 1. adımdaki ServerConnection değerini ConnectionContext özelliği olarak ayarlayın.

  5. Aboneliğin IsExistingObject var olduğunu doğrulamak için özelliğini denetleyin. Bu özelliğin değeri false ise, 2. adımdaki abonelik özellikleri yanlış tanımlanmıştır veya abonelik mevcut değildir.

  6. yöntemini çağırın Remove .

Örnekler (RMO)

Çoğaltma Yönetimi Nesnelerini (RMO) kullanarak gönderme aboneliklerini program aracılığıyla silebilirsiniz.

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