Compartir a través de


Ver y modificar propiedades del artículo

En este tema se describe cómo ver y modificar propiedades de artículo en SQL Server 2014 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 crear una publicación y otras no se pueden modificar si hay 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

Vea y modifique las propiedades del artículo en el cuadro de diálogo Propiedades de la publicación: <publicación>, disponible en Microsoft SQL Server Management Studio y Replication Monitor. Para obtener información sobre cómo iniciar el Monitor de replicación, consulte 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 la configuración 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. Use esta página para agregar y eliminar artículos, así como para cambiar las propiedades y el filtrado de columnas de los artículos.

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

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

  • La página Instantánea FTP (para publicaciones de instantáneas y transaccionales, y publicaciones de combinación para publicadores que ejecutan versiones anteriores a SQL Server 2005) le permite especificar si los suscriptores pueden descargar archivos de instantánea a través del Protocolo de Transferencia de Archivos (FTP).

  • La página de instantáneas FTP e Internet (para publicaciones de mezcla de editores que usan SQL Server 2005 o posterior) le permite especificar si los suscriptores pueden descargar archivos de instantáneas a través de FTP y si los suscriptores pueden sincronizar suscripciones a través de HTTPS.

  • La página Opciones de suscripción permite establecer una serie de opciones que se aplican a todas las suscripciones. Las opciones difieren en función del tipo de publicación.

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

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

  • La página Particiones de datos (para 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 para una o varias particiones, ya sea una vez o en una programación periódica.

Para ver y modificar las propiedades del 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, a continuación, haga clic en Propiedades del artículo.

  2. Seleccione los cambios de propiedad de artículos que deben aplicarse a:

    • Haga clic en Establecer propiedades de <ObjectType> del artículo resaltado para iniciar el cuadro de diálogo Propiedades del artículo - <ObjectName>. Los cambios de propiedad realizados en este cuadro de diálogo solo se aplican al objeto resaltado en el panel de objetos de la página Artículos.

    • Haga clic en Establecer propiedades de todos los <artículos ObjectType> para iniciar el cuadro de diálogo Propiedades para todos los <artículos ObjectType>; 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 aún no están seleccionados para la publicación.

      Nota:

      Los cambios de propiedad realizados en el cuadro de diálogo Propiedades para todos los <artículos ObjectType> invalidan los realizados anteriormente en el cuadro de diálogo Propiedades del artículo : <ObjectName> . Si, por ejemplo, quiere establecer un número de valores predeterminados para todos los artículos de un tipo de objeto, pero también 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> .

Uso de Transact-SQL

Los artículos se pueden modificar y sus propiedades devolverse programáticamente mediante procedimientos almacenados de replicación. Los procedimientos almacenados que use dependen del tipo de publicación al que pertenece el artículo.

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

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

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

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

  1. Ejecute sp_changearticle, especificando la propiedad article 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, también debe especificar un valor de 1 para @force_reinit_subscription. Para obtener más información sobre las propiedades que, cuando se cambian, requieren una nueva instantánea o reinicialización, vea Cambiar las propiedades de publicación y artículo.

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

  1. Ejecute sp_helpmergearticle, especificando el nombre de la publicación para el parámetro @publication y el nombre del 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 los artículos de tabla para enumerar 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, especificando la propiedad article 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, también debe especificar un valor de 1 para @force_reinit_subscription. Para obtener más información sobre las propiedades que, cuando se cambian, requieren una nueva instantánea o reinicialización, vea Cambiar las propiedades de publicación y artículo.

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 [AdventureWorks2012]
EXEC sp_helparticle
  @publication = @publication;
GO

En este ejemplo de replicación transaccional se cambian 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 [AdventureWorks2012]
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 [AdventureWorks2012]
EXEC sp_helpmergearticle
  @publication = @publication;
GO

En este ejemplo de replicación por combinación, se cambian los parámetros de detección de conflictos de 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 [AdventureWorks2012]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

El uso de Replication Management Objects (RMO)

Puede modificar artículos y acceder a sus propiedades mediante programación mediante replication Management Objects (RMO). Las clases de RMO que se usan para ver o modificar las propiedades del artículo dependen del tipo de publicación al que pertenece el artículo.

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

  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, las propiedades del artículo del paso 3 se definieron incorrectamente o el artículo no existe.

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

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

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, las propiedades del artículo del paso 3 se definieron incorrectamente o el artículo no existe.

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

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

Ejemplo (RMO)

En este ejemplo se cambia un artículo de fusión para especificar el manejador de lógica empresarial usado por el artículo.

// Define the Publisher, publication, and article names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2012";
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 = "AdventureWorks2012"
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

Véase también

Implementar un manejador de lógica empresarial para un artículo de fusión
Publicar datos y objetos de base de datos
Cambiar las propiedades de publicación y artículo
Conceptos de procedimientos almacenados del sistema de replicación
Replicación de mezcla avanzada: detección y resolución de conflictos