Jak Wyświetlanie i modyfikowanie właściwości publikacji (Programowanie RMO)
Można modyfikować publikacje i uzyskiwać dostęp do ich właściwości programowo przy użyciu obiektów zarządzania replikacji (RMO).Klasy RMO, które służy do wyświetlania lub modyfikowania właściwości publikacja zależy od typu publikacja.
Aby wyświetlić lub zmodyfikować właściwości 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.
Wywołanie LoadProperties metoda, aby pobrać właściwości obiektu.Jeśli ta metoda zwraca false, publikacja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości publikacji w kroku 2.
(Opcjonalnie) Aby zmienić właściwości, zestaw nową wartość dla jednego lub więcej zestawwłaściwości tabeli.Użyj operator logicznego I (& w Microsoft Visual C# i And w języku Microsoft Visual Basic) do ustalenia, czy danej PublicationAttributes wartość jest zestaw dla Attributes właściwość.Use the inclusive logical OR operator (| in Visual C# and Or in Visual Basic) and the exclusive logical OR operator (^ in Visual C# and Xor in Visual Basic) to change the PublicationAttributes values for the Attributes property.
(Opcjonalnie) Jeżeli określono wartość true dla CachePropertyChanges, call CommitPropertyChanges metoda zatwierdzanie zmian na serwerze.Jeżeli określono wartość false dla CachePropertyChanges (domyślnie), zmiany są wysyłane do serwera natychmiast.
Aby wyświetlić lub zmodyfikować właściwości 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.
Wywołanie LoadProperties metoda, aby pobrać właściwości obiektu.Jeśli ta metoda zwraca false, publikacja nie istnieje albo niepoprawnie zostały zdefiniowane właściwości publikacji w kroku 2.
(Opcjonalnie) Aby zmienić właściwości, zestaw nową wartość dla jednego lub więcej zestawwłaściwości tabeli.Użyj operator logicznego I (& w środowisku Visual C# i And w języku Visual Basic) do określenia, czy dany PublicationAttributes wartość jest zestaw dla Attributes właściwość.Use the inclusive logical OR operator (| in Visual C# and Or in Visual Basic) and the exclusive logical OR operator (^ in Visual C# and Xor in Visual Basic) to change the PublicationAttributes values for the Attributes property.
(Opcjonalnie) Jeżeli określono wartość true dla CachePropertyChanges, call CommitPropertyChanges metoda zatwierdzanie zmian na serwerze.Jeżeli określono wartość false dla CachePropertyChanges (domyślnie), zmiany są wysyłane do serwera natychmiast.
Przykład
W tym przykładzie atrybuty publikacja dla transakcyjnych publikacja.Zmiany są buforowane, dopóki jawnie wysyłany do serwera.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2008R2";
TransPublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new TransPublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// Explicitly enable caching of property changes on this object.
publication.CachePropertyChanges = true;
// If we can't get the properties for this publication,
// throw an application exception.
if (publication.LoadProperties())
{
// Enable support for push subscriptions and disable support
// for pull subscriptions.
if ((publication.Attributes & PublicationAttributes.AllowPull) != 0)
{
publication.Attributes ^= PublicationAttributes.AllowPull;
}
if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPush;
}
// Send changes to the server.
publication.CommitPropertyChanges();
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(
"The publication property could not be changed.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim publication As TransPublication
' 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 publication.
publication = New TransPublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' Explicitly enable caching of property changes on this object.
publication.CachePropertyChanges = True
' If we can't get the properties for this publication,
' throw an application exception.
If publication.LoadProperties() Then
' Enable support for push subscriptions and disable support
' for pull subscriptions.
If (publication.Attributes And PublicationAttributes.AllowPull) <> 0 Then
publication.Attributes = publication.Attributes _
Xor PublicationAttributes.AllowPull
End If
If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
publication.Attributes = publication.Attributes _
Or PublicationAttributes.AllowPush
End If
' Send changes to the server.
publication.CommitPropertyChanges()
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException( _
"The publication property could not be changed.", ex)
Finally
conn.Disconnect()
End Try
W tym przykładzie wyłącza DDL replikacja dla publikacja korespondencji seryjnej.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2008R2";
MergePublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new MergePublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this merge publication, then throw an application exception.
if (publication.LoadProperties())
{
// If DDL replication is currently enabled, disable it.
if (publication.ReplicateDdl == DdlReplicationOptions.All)
{
publication.ReplicateDdl = DdlReplicationOptions.None;
}
else
{
publication.ReplicateDdl = DdlReplicationOptions.All;
}
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(
"The publication property could not be changed.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim publication As MergePublication
' 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 publication.
publication = New MergePublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this merge publication, then throw an application exception.
If publication.LoadProperties() Then
' If DDL replication is currently enabled, disable it.
If publication.ReplicateDdl = DdlReplicationOptions.All Then
publication.ReplicateDdl = DdlReplicationOptions.None
Else
publication.ReplicateDdl = DdlReplicationOptions.All
End If
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException( _
"The publication property could not be changed.", ex)
Finally
conn.Disconnect()
End Try