Ver y modificar propiedades de publicación

Se aplica a:SQL ServerAzure SQL Managed Instance

Obtenga información sobre cómo ver y modificar las propiedades de publicación 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 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.

En el cuadro de diálogo Propiedades de la publicación: <publicación> se incluyen las páginas siguientes:

  • 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 una publicación en Management Studio

  1. Conéctese al publicador en Management Studio y, a continuación, expanda el nodo de servidor.

  2. Expanda la carpeta Replicación y, a continuación, expanda la carpeta Publicaciones locales .

  3. Haga clic con el botón secundario en una publicación y, a continuación, haga clic en Propiedades.

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

Para ver y modificar propiedades de una publicación en el Monitor de replicación

  1. Expanda un grupo de publicador en el panel izquierdo del Monitor de replicación y, a continuación, expanda un publicador.

  2. Haga clic con el botón secundario en una publicación y, a continuación, haga clic en Propiedades.

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

Usar Transact-SQL

Se puede modificar las publicaciones y devolver sus propiedades mediante programación utilizando procedimientos almacenados de replicación. Los procedimientos almacenados que utilice dependerán del tipo de publicación.

Para ver las propiedades de una instantánea o publicación transaccional

  1. Ejecute sp_helppublication, especificando el nombre de la publicación para el parámetro @publication . Si no especifica este parámetro, se devuelve información sobre todas las publicaciones del publicador.

Para cambiar las propiedades de una instantánea o publicación transaccional

  1. Ejecute sp_changepublication, especificando la propiedad de publicación que quiere cambiar en el parámetro @property y el nuevo valor de esta propiedad en el parámetro @value .

    Nota:

    Si el cambio va a requerir que se genere una nueva instantánea, también debe especificar el valor 1 para @ force_invalidate_snapshoty si el cambio va a requerir que se reinicialicen los suscriptores, debe especificar el valor 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 una publicación de combinación

  1. Ejecute sp_helpmergepublication, especificando el nombre de la publicación para el parámetro @publication . Si no especifica este parámetro, se devuelve información sobre todas las publicaciones del publicador.

Para cambiar las propiedades de una publicación de combinación

  1. Ejecute sp_changemergepublication, especificando la propiedad de publicación que se está cambiando en el parámetro @property y el nuevo valor de esta propiedad en el parámetro @value .

    Nota:

    Si el cambio va a requerir que se genere una instantánea nueva, también debe especificar el valor 1 para @force_invalidate_snapshot y si el cambio va a requerir que se reinicialicen los suscriptores, debe especificar el valor 1 para @force_reinit_subscription. Para más información sobre las propiedades que, cuando se cambian, requieren una nueva instantánea o reinicialización, consulte Cambio de las propiedades de la publicación y de los artículos.

Para ver las propiedades de una instantánea

  1. Ejecute sp_helppublication_snapshot, especificando el nombre de la publicación para el parámetro @publication .

Para cambiar las propiedades de una instantánea

  1. Ejecute sp_changepublication_snapshot, especificando una o más de las nuevas propiedades de instantánea para los parámetros de instantánea adecuados.

Ejemplos (Transact-SQL)

Este ejemplo de replicación transaccional devuelve las propiedades de la publicación.

DECLARE @myTranPub AS sysname
SET @myTranPub = N'AdvWorksProductTran' 

USE [AdventureWorks2022]
EXEC sp_helppublication @publication = @myTranPub
GO

Este ejemplo de replicación transaccional deshabilita la replicación de esquema para la publicación.

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

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Este ejemplo de replicación de mezcla devuelve las propiedades de la publicación.

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

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

Este ejemplo de replicación de mezcla deshabilita la replicación de esquema para la publicación.

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

-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

Usar Replication Management Objects (RMO)

Puede modificar publicaciones 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 publicación dependen del tipo de publicación.

Para ver o modificar las propiedades de 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 TransPublication , establezca las propiedades Name y DatabaseName para la publicación y establezca la propiedad ConnectionContext en la conexión creada en el paso 1.

  3. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que las propiedades de publicación del paso 2 se definieron incorrectamente, o bien que la publicación no existe.

  4. (Opcional) Para cambiar las propiedades, establezca un nuevo valor para una o más de las propiedades que se pueden establecer. Usa el operador lógico AND (& en Microsoft Visual C# y And en Microsoft Visual Basic) para determinar si un valor PublicationAttributes determinado está establecido para la propiedad Attributes. (Opcional) Use el operador lógico OR inclusivo (| en Visual C# y Or en Visual Basic) y el operador lógico OR exclusivo (^ en Visual C# y Xor en Visual Basic) para cambiar los valores PublicationAttributes para la propiedad Attributes .

  5. (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 las propiedades de una publicación de combinación

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

  2. Cree una instancia de la clase MergePublication , establezca las propiedades Name y DatabaseName para la publicación y establezca la propiedad ConnectionContext en la conexión creada en el paso 1.

  3. Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que las propiedades de publicación del paso 2 se definieron incorrectamente, o bien que la publicación no existe.

  4. (Opcional) Para cambiar las propiedades, establezca un nuevo valor para una o más de las propiedades que se pueden establecer. Usa el operador lógico AND (& en Visual C# y And en Visual Basic) para determinar si un valor PublicationAttributes determinado está establecido para la propiedad Attributes. (Opcional) Use el operador lógico OR inclusivo (| en Visual C# y Or en Visual Basic) y el operador lógico OR exclusivo (^ en Visual C# y Xor en Visual Basic) para cambiar los valores PublicationAttributes para la propiedad Attributes .

  5. (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.

Ejemplos (RMO)

Este ejemplo establece los atributos de publicación para una publicación transaccional. Los cambios están almacenados en memoria caché hasta que se envían explícitamente al servidor.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";

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

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

Este ejemplo deshabilita la replicación de DDL para una publicación de combinación.

// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";

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

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

Consulte también

Publicar datos y objetos de base de datos
Cambiar las propiedades de la publicación y de los artículos
Realizar cambios de esquema en bases de datos de publicaciones
Conceptos de procedimientos almacenados del sistema de replicación
Agregar y quitar artículos de una publicación (SQL Server Management Studio)
Visualización de información y realización de tareas mediante el Monitor de replicación
er y modificar las propiedades de un artículo