Jak Usuwanie publikacji (Programowanie RMO)
Publikacje można usunąć programowo przy użyciu obiektów zarządzania replikacji (RMO).Klasy RMO, które służy do usuwania publikacja zależy od typu publikacja, można usunąć.
Aby usunąć migawka lub transakcyjnych publikacja
Tworzenie połączenia do Wydawca za pomocą ServerConnection klasy
Utworzenie wystąpienie TransPublication klasy
Ustaw Name i DatabaseName właściwość publikacja i zestaw ConnectionContext właściwość połączenia, utworzony w kroku 1.
Sprawdź, czy IsExistingObject właściwość, aby sprawdzić, czy istnieje publikacja.Jeśli wartość tej właściwość jest false, publikacja nie istnieje albo niepoprawnie zostały zdefiniowane właściwość publikacji w kroku 3.
Wywołanie Remove metoda.
(Opcjonalnie) Jeśli istnieją inne publikacje transakcyjnych dla tej bazy danych, można wyłączyć bazy danych transakcyjnych publikowania w następujący sposób:
Utworzenie wystąpienie ReplicationDatabase klasyUstaw ConnectionContext właściwość do wystąpienie ServerConnection z kroku 1.
Wywołanie LoadProperties metoda.Jeśli ta metoda zwraca false, upewnij się, że baza danych istnieje.
Ustaw EnabledTransPublishing Właściwość false.
Wywołanie CommitPropertyChanges metoda.
Zamknij połączenia.
Aby usunąć publikacja seryjnej
Tworzenie połączenia do Wydawca za pomocą ServerConnection klasy
Utworzenie wystąpienie MergePublication klasy
Ustaw Name i DatabaseName właściwość publikacja i zestaw ConnectionContext właściwość połączenia, utworzony w kroku 1.
Sprawdź, czy IsExistingObject właściwość, aby sprawdzić, czy istnieje publikacja.Jeśli wartość tej właściwość jest false, publikacja nie istnieje albo niepoprawnie zostały zdefiniowane właściwość publikacji w kroku 3.
Wywołanie Remove metoda.
(Opcjonalnie) Jeśli istnieje innych publikacji seryjnej tej bazy danych, bazy danych można wyłączyć scalanie publikowania w następujący sposób:
Utworzenie wystąpienie ReplicationDatabase klasyUstaw ConnectionContext właściwość do wystąpienie ServerConnection z kroku 1.
Wywołanie LoadProperties metoda.Jeśli ta metoda zwraca false, sprawdź, czy istnieje baza danych.
Ustaw EnabledMergePublishing Właściwość false.
Wywołanie CommitPropertyChanges metoda.
Zamknij połączenia.
Przykład
W następującym przykładzie usunięto transakcyjnych publikacja.Jeśli istnieją inne publikacje transakcyjnych dla tej bazy danych, publikowanie transakcyjne jest niedostępne.
// Define the Publisher, publication database,
// and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2008R2";
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 = "AdventureWorks2008R2"
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
W następującym przykładzie usunięto publikacja korespondencji seryjnej.Jeśli istnieje innych publikacji seryjnej tej bazy danych, także publikacji seryjnej jest wyłączona.
// Define the Publisher, publication database,
// and publication names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2008R2";
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 = "AdventureWorks2008R2"
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