Ver y modificar las propiedades de un artículo

Se aplica a:SQL ServerAzure SQL Managed Instance

Este tema describe cómo ver y modificar las propiedades de artículo en SQL Server mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).

En este tema

Antes de empezar

Limitaciones y restricciones

  • Algunas propiedades no se pueden modificar después de crearlas, y otras no se pueden modificar si existen suscripciones a la publicación. Las propiedades que no se pueden modificar se muestran como de solo lectura.

Recomendaciones

Uso de SQL Server Management Studio

Consulte y modifique propiedades de publicación en el cuadro de diálogo Propiedades de la publicación: <publicación>, que está disponible en Microsoft SQL Server Management Studio y en el Monitor de replicación. Para información sobre cómo iniciar el Monitor de replicación, vea Iniciar el Monitor de replicación.

  • La página General incluye el nombre y la descripción de la publicación, el nombre de la base de datos, el tipo de publicación y los valores de expiración de la suscripción.

  • La página Artículos corresponde a la página Artículos del Asistente para nueva publicación. Utilice esta página para agregar y eliminar artículos, y para cambiar propiedades y el filtro de columna de artículos.

  • La página Filtrar filas corresponde a la página Filtrar filas de tabla del Asistente para nueva publicación. Utilice esta página para agregar, editar y eliminar filtros de fila estáticos de todos los tipos de publicaciones, y para agregar, editar y eliminar filtros de fila con parámetros y filtros de combinación de publicaciones de combinación.

  • La página Instantánea permite especificar el formato y la ubicación de la instantánea, si la instantánea debe comprimirse y si los scripts deben ejecutarse antes y después de aplicar la instantánea.

  • La página Instantánea de FTP (en publicaciones de instantáneas y transaccionales, y publicaciones de combinación en publicadores que ejecutan versiones anteriores a SQL Server 2005) permite especificar si los suscriptores pueden descargar archivos de instantáneas mediante el Protocolo de transferencia de archivos (FTP).

  • La página Instantánea de FTP e Internet (en publicaciones de combinación de publicadores que ejecutan SQL Server 2005 o posterior) permite especificar si los suscriptores pueden descargar archivos de instantáneas mediante FTP y si los suscriptores pueden sincronizar suscripciones mediante HTTPS.

  • La página Opciones de suscripción permite establecer diversas opciones que se aplican a todas las suscripciones. Las opciones varían según el tipo de publicación.

  • La página Lista de acceso a la publicación permite especificar qué inicios de sesión y grupos pueden tener acceso a una publicación.

  • La página Seguridad del agente le permite tener acceso a la configuración para las cuentas con las que se ejecutan los agentes siguientes y realizan conexiones a los equipos en una topología de replicación: el Agente de instantáneas para todas las publicaciones, el Agente de registro del LOG para todas las publicaciones transaccionales y el Agente de lectura de cola para las publicaciones transaccionales que permiten las suscripciones de actualización en cola.

  • La página Particiones de datos (en publicaciones de combinación de publicadores que ejecutan SQL Server 2005 o posterior) permite especificar si los suscriptores a publicaciones con filtros con parámetros pueden solicitar una instantánea si no está disponible. También permite generar instantáneas de una o varias particiones, solo una vez o varias veces.

Para ver y modificar propiedades de un artículo

  1. En la página Artículos del cuadro de diálogo Propiedades de la publicación: <publicación>, seleccione un artículo y luego haga clic en Propiedades del artículo.

  2. Seleccione a qué propiedades de artículos se deben aplicar los cambios:

    • Haga clic en Establecer propiedades del artículo de <tipoDeObjeto> resaltado para iniciar el cuadro de diálogo Propiedades del artículo: <tipoDeObjeto>; los cambios de propiedad realizados en este cuadro de diálogo solo se aplican al objeto que está resaltado en el panel de objetos de la página Artículos.

    • Haga clic en Establecer propiedades de todos los artículos de <tipoDeObjeto>, para iniciar el cuadro de diálogo Propiedades de todos los artículos de <tipoDeObjeto>. Los cambios de propiedad realizados en este cuadro de diálogo se aplican a todos los objetos de ese tipo en el panel de objetos de la página Artículos, incluidos los que todavía no se hayan seleccionado para la publicación.

      Nota:

      Los cambios de propiedades realizados en el cuadro de diálogo Propiedades de todos los artículos de <tipoDeObjeto> reemplazan los que se hicieran anteriormente en el cuadro de diálogo Propiedades del artículo: <nombreDeObjeto>. Por ejemplo, si desea establecer varios valores predeterminados para todos los artículos de un tipo de objeto, pero solamente desea establecer algunas propiedades para objetos individuales, establezca primero los valores predeterminados para todos los artículos. A continuación, establezca las propiedades de los objetos individuales.

  3. Modifique las propiedades si es necesario y, a continuación, haga clic en Aceptar.

  4. Haga clic en Aceptar en el cuadro de diálogo Propiedades de la publicación: <publicación>.

Usar Transact-SQL

Se pueden modificar los artículos y devolver sus propiedades mediante programación con los procedimientos almacenados de replicación. Los procedimientos almacenados que se usen dependerán del tipo de publicación a la que pertenece el artículo.

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

  1. Ejecute sp_helparticle y especifique el nombre de la publicación para el parámetro @publication y el nombre de artículo para el parámetro @article. Si no especifica @article, se devolverá información para todos los artículos de la publicación.

  2. Ejecute sp_helparticlecolumns para que los artículos de tabla muestren todas las columnas disponibles en la tabla base.

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

  1. Ejecute sp_changearticle y especifique la propiedad de artículo que se va a cambiar en el parámetro @property y el nuevo valor de esta propiedad en el parámetro @value.

    Nota:

    Si el cambio requiere la generación de una nueva instantánea, también debe especificar un valor de 1 para @force_invalidate_snapshot, y si el cambio requiere que se reinicialicen los suscriptores, debe especificar un valor de 1 para @force_reinit_subscription. Para más información sobre las propiedades que, cuando se cambian, necesitan una nueva instantánea o una reinicialización, Change Publication and Article Properties (Cambiar las propiedades de la publicación y de los artículos).

Para ver las propiedades de un artículo que pertenece a una publicación de combinación

  1. Ejecute sp_helpmergearticle y especifique el nombre de la publicación para el parámetro @publication y el nombre de artículo para el parámetro @article. Si no especifica estos parámetros, se devolverá información para todos los artículos de una publicación o en el publicador.

  2. Ejecute sp_helpmergearticlecolumn para que los artículos de tabla muestren todas las columnas disponibles en la tabla base.

Para modificar las propiedades de un artículo que pertenece a una publicación de combinación

  1. Ejecute sp_changemergearticle y especifique la propiedad de artículo que se va a cambiar en el parámetro @property y el nuevo valor de esta propiedad en el parámetro @value.

    Nota:

    Si el cambio requiere la generación de una nueva instantánea, también debe especificar un valor de 1 para @force_invalidate_snapshot, y si el cambio requiere que se reinicialicen los suscriptores, debe especificar un valor de 1 para @force_reinit_subscription. Para más información sobre las propiedades que, cuando se cambian, necesitan una nueva instantánea o una reinicialización, Change Publication and Article Properties (Cambiar las propiedades de la publicación y de los artículos).

Ejemplo (Transact-SQL)

Este ejemplo de replicación transaccional devuelve las propiedades del artículo publicado.

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

USE [AdventureWorks2022]
EXEC sp_helparticle
  @publication = @publication;
GO

Este ejemplo de replicación transaccional cambia las opciones de esquema del artículo publicado.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));

-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

Este ejemplo de replicación de mezcla devuelve las propiedades del artículo publicado.

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';

USE [AdventureWorks2022]
EXEC sp_helpmergearticle
  @publication = @publication;
GO

Este ejemplo de replicación de mezcla cambia los valores de detección de conflictos para un artículo publicado.

DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';

-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Usar Replication Management Objects (RMO)

Puede modificar los artículos y obtener acceso mediante programación a sus propiedades utilizando Replication Management Objects (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, PublicationNamey 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 especificó el valor 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 combinación

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

  2. Cree una instancia de la clase MergeArticle.

  3. Establezca las propiedades Name, PublicationNamey 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 especificó el valor false para CachePropertyChanges (predeterminado), los cambios se envían inmediatamente al servidor.

Ejemplo (RMO)

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 = "AdventureWorks2022";
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 = "AdventureWorks2022"
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

Consulte también

Implementar un controlador de lógica de negocios para un artículo de mezcla
Publicar datos y objetos de base de datos
Cambiar las propiedades de la publicación y de los artículos
Conceptos de procedimientos almacenados del sistema de replicación
Detección y resolución de conflictos de replicación de mezcla avanzada