Cómo ver y modificar propiedades de artículo (programación con RMO)

Puede modificar los artículos y obtener acceso mediante programación a sus propiedades con los objetos de administración de replicación (RMO). Las clases RMO que usa para ver o modificar las propiedades de artículo dependen del tipo de publicación a la que pertenece el artículo.

Para ver o modificar propiedades de un artículo que pertenece a una publicación transaccional o de instantáneas

  1. Cree una conexión al publicador mediante la clase ServerConnection.

  2. Cree una instancia de la clase TransArticle.

  3. Establezca las propiedades Name, PublicationName y DatabaseName.

  4. Establezca la conexión del paso 1 para la propiedad ConnectionContext.

  5. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, se definieron incorrectamente las propiedades de artículo en el paso 3, o bien el artículo no existe.

  6. (Opcional) Para cambiar las propiedades, establezca un nuevo valor para una de las propiedades TransArticle que se pueden establecer.

  7. (Opcional) Si especificara un valor de true para CachePropertyChanges, llame al método CommitPropertyChanges para confirmar los cambios en el servidor. Si especificara un valor de false para CachePropertyChanges (predeterminado), los cambios se envían inmediatamente al servidor.

Para ver o modificar propiedades de un artículo que pertenece a una publicación de mezcla

  1. Cree una conexión al publicador mediante la clase ServerConnection.

  2. Cree una instancia de la clase MergeArticle.

  3. Establezca las propiedades Name, PublicationName y DatabaseName.

  4. Establezca la conexión del paso 1 para la propiedad ConnectionContext.

  5. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, se definieron incorrectamente las propiedades de artículo en el paso 3, o bien el artículo no existe.

  6. (Opcional) Para cambiar las propiedades, establezca un nuevo valor para una de las propiedades MergeArticle que se pueden establecer.

  7. (Opcional) Si especificara un valor de true para CachePropertyChanges, llame al método CommitPropertyChanges para confirmar los cambios en el servidor. Si especificara un valor de false para CachePropertyChanges (predeterminado), los cambios se envían inmediatamente al servidor.

Ejemplo

Este ejemplo cambia un artículo de mezcla para especificar el controlador de lógica de negocios que usa el artículo.

            // Define the Publisher, publication, and article names.
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string publicationDbName = "AdventureWorks2008R2";
            string articleName = "SalesOrderHeader";
            
            // Set the friendly name of the business logic handler.
            string customLogic = "OrderEntryLogic";

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

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

                // Set the required properties for the article.
                article.ConnectionContext = conn;
                article.Name = articleName;
                article.DatabaseName = publicationDbName;
                article.PublicationName = publicationName;

                // Load the article properties.
                if (article.LoadProperties())
                {
                    article.ArticleResolver = customLogic;
                }
                else
                {
                    // Throw an exception of the article does not exist.
                    throw new ApplicationException(String.Format(
                    "{0} is not published in {1}", articleName, publicationName));
                }
                
            }
            catch (Exception ex)
            {
                // Do error handling here and rollback the transaction.
                throw new ApplicationException(String.Format(
                    "The business logic handler {0} could not be associated with " +
                    " the {1} article.",customLogic,articleName), ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2008R2"
Dim articleName As String = "SalesOrderHeader"

' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"

Dim article As MergeArticle = New MergeArticle()

' 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 article.
    article.ConnectionContext = conn
    article.Name = articleName
    article.DatabaseName = publicationDbName
    article.PublicationName = publicationName

    ' Load the article properties.
    If article.LoadProperties() Then
        article.ArticleResolver = customLogic
    Else
        ' Throw an exception of the article does not exist.
        Throw New ApplicationException(String.Format( _
         "{0} is not published in {1}", articleName, publicationName))
    End If

Catch ex As Exception
    ' Do error handling here and rollback the transaction.
    Throw New ApplicationException(String.Format( _
     "The business logic handler {0} could not be associated with " + _
     " the {1} article.", customLogic, articleName), ex)
Finally
    conn.Disconnect()
End Try