Bir Yayını Sil

Şunlar için geçerlidir: SQL Server Azure SQL Yönetilen Örneği

Bu konu, SQL Server Management Studio, Transact-SQL veya Replication Management Objects (RMO) kullanılarak bir yayının SQL Server'da nasıl silineceğini açıklar.

SQL Server Management Studio'yu kullanma

SQL Server Management Studio'daki Local Publications klasöründen yayınları silin.

Bir yayını silmek

  1. Management Studio'da Publisher'a bağlanın ve 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 yayına sağ tıklayın, ardından Sil tuşuna tıklayın.

Transact-SQL Kullanımı

Yayınlar, çoğaltma depolanan prosedürler kullanılarak programatik olarak silinebilir. Kullandığınız saklanan prosedürler, silinen yayın türüne bağlıdır.

Uyarı

Bir yayını silmek, yayımlanmış nesneleri yayın veritabanından veya ilgili nesneleri abonelik veritabanından kaldırmaz. Gerekirse bu nesneleri manuel olarak kaldırmak için komutu DROP <object> kullanın.

Bir anlık görüntü veya işlemsel yayını silmek için

  1. Aşağıdakilerden birini yapın:

    • Tek bir yayını silmek için, yayın veritabanındaki Publisher noktasında sp_droppublication çalıştırın.

    • Yayınlanmış veritabanındaki tüm yayınları silmek ve tüm replikasyon nesnelerini kaldırmak için sp_removedbreplication Publisher'de çalıştırın. @type için tran değerini belirtin. (İsteğe bağlı) Dağıtıcıya erişilemiyorsa veya veritabanının durumu şüpheli veya çevrimdışsa, @force için 1 değeri belirtin. (İsteğe bağlı) Eğer sp_removedbreplication yayın veritabanında yürütülmezse@dbname veritabanının adını belirtin.

      Uyarı

      @force için 1 değeri belirtmek, veritabanında replikasyonla ilgili yayınlama nesneleri bırakabilir.

  2. (İsteğe bağlı) Eğer bu veritabanında başka yayınlar yoksa, mevcut veritabanının yayınlanmasını anlık görüntü veya işlemsel çoğaltma ile devre dışı bırakmak için sp_replicationdboption (Transact-SQL) çalıştırın.

  3. (İsteğe bağlı) Abone veritabanındaki Abone bölümünde, abonelik veritabanındaki kalan replikasyon meta verilerini kaldırmak için sp_subscription_cleanup çalıştırın.

Birleştirme yayınını silmek

  1. Aşağıdakilerden birini yapın:

    • Tek bir yayını silmek için, yayın veritabanındaki Publisher sp_dropmergepublication (Transact-SQL) çalıştırın.

    • Yayınlanmış veritabanındaki tüm yayınları silmek ve tüm replikasyon nesnelerini kaldırmak için sp_removedbreplication Publisher'de çalıştırın. @type için birleştirme değerini belirtin. (İsteğe bağlı) Dağıtıcıya erişilemiyorsa veya veritabanının durumu şüpheli veya çevrimdışsa, @force için 1 değeri belirtin. (İsteğe bağlı) Eğer sp_removedbreplication yayın veritabanında yürütülmezse@dbname veritabanının adını belirtin.

      Uyarı

      @force için 1 değeri belirtmek, veritabanında replikasyonla ilgili yayınlama nesneleri bırakabilir.

  2. (İsteğe bağlı) Bu veritabanında başka yayınlar yoksa, sp_replicationdboption (Transact-SQL) çalıştırarak mevcut veritabanının yayınını birleştirme çoğaltması ile devre dışı bırakın.

  3. (İsteğe bağlı) Abone veritabanında sp_mergesubscription_cleanup (Transact-SQL) çalıştırarak abonelik veritabanındaki kalan replikasyon meta verilerini kaldırın.

Örnekler (Transact-SQL)

Bu örnek, bir veritabanı için işlemsel yayını nasıl kaldıracağınızı ve işlemsel yayıncılığı devre dışı bırakacağınızı gösterir. Bu örnek, tüm aboneliklerin daha önce kaldırıldığını varsaymaktadır. Daha fazla bilgi için Pull Aboneliğini Sil veya Push Aboneliğini Sil bölümlerine bakabilirsiniz.

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 

-- Remove a transactional publication.
USE [AdventureWorks2022]
EXEC sp_droppublication @publication = @publication;

-- Remove replication objects from the database.
USE [master]
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish', 
  @value = N'false';
GO

Bu örnek, bir veri tabanı için birleştirme yayınını nasıl kaldıracağınızı ve birleştirme yayıncılığını devre dışı bırakacağınızı gösterir. Bu örnek, tüm aboneliklerin daha önce kaldırıldığını varsaymaktadır. Daha fazla bilgi için Pull Aboneliğini Sil veya Push Aboneliğini Sil bölümlerine bakabilirsiniz.

DECLARE @publication AS sysname
DECLARE @publicationDB    AS sysname
SET @publication = N'AdvWorksSalesOrdersMerge' 
SET @publicationDB = N'AdventureWorks'

-- Remove the merge publication.
USE [AdventureWorks]
EXEC sp_dropmergepublication @publication = @publication;

-- Remove replication objects from the database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'merge publish', 
  @value = N'false'
GO

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

Replikasyon Yönetim Nesneleri (RMO) kullanarak yayınları programlı olarak silebilirsiniz. Bir yayını kaldırmak için kullandığınız RMO sınıfları, kaldırdığınız yayın türüne bağlıdır.

Anlık görüntüyü veya işlemsel yayını kaldırma

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

  2. TransPublication sınıfının bir örneğini oluşturun.

  3. Yayın için Name ve DatabaseName özelliklerini ayarlayın ve ConnectionContext özelliğini 1. adımda oluşturulan bağlantıya ayarlayın.

  4. Yayının mevcut olduğunu doğrulamak için IsExistingObject özelliğini kontrol edin. Eğer bu özelliğin değeri yanlışsa, ya 3. adımdaki yayın özellikleri yanlış tanımlanmıştır ya da yayın yoktur.

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

  6. (İsteğe bağlı) Bu veritabanı için başka işlemsel yayınlar yoksa, veritabanı aşağıdaki şekilde işlemsel yayıncılıkla devre dışı bırakılabilir:

    1. ReplicationDatabase sınıfının bir örneğini oluşturun. ServerConnection özelliğini, 1. adımdaki ConnectionContext örneğine ayarlayın.

    2. yöntemini çağırın LoadProperties . Bu yöntem yanlış dönerse, veritabanının var olduğunu doğrulayın.

    3. Özelliği EnabledTransPublishingfalse olarak ayarlayın.

    4. yöntemini çağırın CommitPropertyChanges .

  7. Bağlantıları kapatın.

Birleştirme yayınını kaldırmak için

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

  2. MergePublication sınıfının bir örneğini oluşturun.

  3. Yayın için Name ve DatabaseName özelliklerini ayarlayın ve ConnectionContext özelliğini 1. adımda oluşturulan bağlantıya ayarlayın.

  4. Yayının mevcut olduğunu doğrulamak için IsExistingObject özelliğini kontrol edin. Eğer bu özelliğin değeri yanlışsa, ya 3. adımdaki yayın özellikleri yanlış tanımlanmıştır ya da yayın yoktur.

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

  6. (İsteğe bağlı) Bu veritabanı için başka birleştirme yayınları yoksa, veritabanı aşağıdaki şekilde birleştirme yayıncılığı için devre dışı bırakılabilir:

    1. ReplicationDatabase sınıfının bir örneğini oluşturun. ConnectionContext özelliğini, 1. Adımdaki ServerConnection örneğine ayarlayın.

    2. yöntemini çağırın LoadProperties . Bu yöntem yanlış dönerse, veritabanının var olduğunu doğrulayın.

    3. Özelliği EnabledMergePublishingfalse olarak ayarlayın.

    4. yöntemini çağırın CommitPropertyChanges .

  7. Bağlantıları kapatın.

Örnekler (RMO)

Aşağıdaki örnek, işlemsel bir yayını siler. Bu veritabanı için başka işlemsel yayınlar yoksa, işlemsel yayıncılık da devre dışı bırakılır.

// Define the Publisher, publication database, 
// and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";

TransPublication publication;
ReplicationDatabase publicationDb;

// Create a connection to the Publisher 
// using Windows Authentication.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    conn.Connect();

    // Set the required properties for the transactional publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // Delete the publication, if it exists and has no subscriptions.
    if (publication.LoadProperties() && !publication.HasSubscription)
    {
        publication.Remove();
    }
    else
    {
        // Do something here if the publication does not exist
        // or has subscriptions.
        throw new ApplicationException(String.Format(
            "The publication {0} could not be deleted. " +
            "Ensure that the publication exists and that all " +
            "subscriptions have been deleted.",
            publicationName, publisherName));
    }

    // If no other transactional publications exists,
    // disable publishing on the database.
    publicationDb = new ReplicationDatabase(publicationDbName, conn);
    if (publicationDb.LoadProperties())
    {
        if (publicationDb.TransPublications.Count == 0)
        {
            publicationDb.EnabledTransPublishing = false;
        }
    }
    else
    {
        // Do something here if the database does not exist.
        throw new ApplicationException(String.Format(
            "The database {0} does not exist on {1}.",
            publicationDbName, publisherName));
    }
}
catch (Exception ex)
{
    // Implement application error handling here.
    throw new ApplicationException(String.Format(
        "The publication {0} could not be deleted.",
        publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the Publisher, publication database, 
' and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"

Dim publication As TransPublication
Dim publicationDb As ReplicationDatabase

' Create a connection to the Publisher 
' using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    conn.Connect()

    ' Set the required properties for the transactional publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' Delete the publication, if it exists and has no subscriptions.
    If publication.LoadProperties() And Not publication.HasSubscription Then
        publication.Remove()
    Else
        ' Do something here if the publication does not exist
        ' or has subscriptions.
        Throw New ApplicationException(String.Format( _
         "The publication {0} could not be deleted. " + _
         "Ensure that the publication exists and that all " + _
         "subscriptions have been deleted.", _
         publicationName, publisherName))
    End If

    ' If no other transactional publications exists,
    ' disable publishing on the database.
    publicationDb = New ReplicationDatabase(publicationDbName, conn)
    If publicationDb.LoadProperties() Then
        If publicationDb.TransPublications.Count = 0 Then
            publicationDb.EnabledTransPublishing = False
        End If
    Else
        ' Do something here if the database does not exist.
        Throw New ApplicationException(String.Format( _
         "The database {0} does not exist on {1}.", _
         publicationDbName, publisherName))
    End If
Catch ex As Exception
    ' Implement application error handling here.
    Throw New ApplicationException(String.Format( _
     "The publication {0} could not be deleted.", _
     publicationName), ex)
Finally
    conn.Disconnect()
End Try

Aşağıdaki örnek, bir birleştirme yayınını siler. Bu veritabanı için başka birleştirme yayınları yoksa, birleştirme yayıncılığı da devre dışı bırakılır.

// Define the Publisher, publication database, 
// and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";

MergePublication publication;
ReplicationDatabase publicationDb;

// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for the merge publication.
    publication = new MergePublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    // Delete the publication, if it exists and has no subscriptions.
    if (publication.LoadProperties() && !publication.HasSubscription)
    {
        publication.Remove();
    }
    else
    {
        // Do something here if the publication does not exist
        // or has subscriptions.
        throw new ApplicationException(String.Format(
            "The publication {0} could not be deleted. " +
            "Ensure that the publication exists and that all " +
            "subscriptions have been deleted.",
            publicationName, publisherName));
    }

    // If no other merge publications exists,
    // disable publishing on the database.
    publicationDb = new ReplicationDatabase(publicationDbName, conn);
    if (publicationDb.LoadProperties())
    {
        if (publicationDb.MergePublications.Count == 0 && publicationDb.EnabledMergePublishing)
        {
            publicationDb.EnabledMergePublishing = false;
        }
    }
    else
    {
        // Do something here if the database does not exist.
        throw new ApplicationException(String.Format(
            "The database {0} does not exist on {1}.",
            publicationDbName, publisherName));
    }
}
catch (Exception ex)
{
    // Implement application error handling here.
    throw new ApplicationException(String.Format(
        "The publication {0} could not be deleted.",
        publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Define the Publisher, publication database, 
' and publication names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"

Dim publication As MergePublication
Dim publicationDb As ReplicationDatabase

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for the merge publication.
    publication = New MergePublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    ' Delete the publication, if it exists and has no subscriptions.
    If (publication.LoadProperties() And Not publication.HasSubscription) Then
        publication.Remove()
    Else
        ' Do something here if the publication does not exist
        ' or has subscriptions.
        Throw New ApplicationException(String.Format( _
         "The publication {0} could not be deleted. " + _
         "Ensure that the publication exists and that all " + _
         "subscriptions have been deleted.", _
         publicationName, publisherName))
    End If

    ' If no other merge publications exists,
    ' disable publishing on the database.
    publicationDb = New ReplicationDatabase(publicationDbName, conn)
    If publicationDb.LoadProperties() Then
        If publicationDb.MergePublications.Count = 0 _
        And publicationDb.EnabledMergePublishing Then
            publicationDb.EnabledMergePublishing = False
        End If
    Else
        ' Do something here if the database does not exist.
        Throw New ApplicationException(String.Format( _
         "The database {0} does not exist on {1}.", _
         publicationDbName, publisherName))
    End If
Catch ex As Exception
    ' Implement application error handling here.
    Throw New ApplicationException(String.Format( _
     "The publication {0} could not be deleted.", _
     publicationName), ex)
Finally
    conn.Disconnect()
End Try