Ver y modificar propiedades de publicación
En este tema se describe cómo ver y modificar las propiedades de publicación en SQL Server 2012 mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).
En este tema
Antes de empezar:
Limitaciones y restricciones
Recomendaciones
Para ver y modificar las propiedades de publicación con:
SQL Server Management Studio
Transact-SQL
Replication Management Objects (RMO)
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
- Una vez creada una publicación, algunos cambios de propiedades necesitan una nueva instantánea. Si una publicación tiene suscripciones, algunos cambios también necesitan que se reinicialicen todas las suscripciones. Para obtener más información, vea Cambiar las propiedades de la publicación y de los artículos y Agregar y quitar artículos de publicaciones existentes.
[Top]
Usar SQL Server Management Studio
Vea y modifique las propiedades de la 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 obtener información sobre cómo iniciar el Monitor de replicación, vea Iniciar el Monitor de replicación.
El cuadro de diálogo Propiedades de la publicación: <publicación> contiene las siguientes páginas:
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
Conéctese al publicador en Management Studio y, a continuación, expanda el nodo de servidor.
Expanda la carpeta Replicación y, a continuación, la carpeta Publicaciones locales.
Haga clic con el botón secundario en una publicación y, a continuación, haga clic en Propiedades.
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
Expanda un grupo de publicador en el panel izquierdo del Monitor de replicación y, a continuación, expanda un publicador.
Haga clic con el botón secundario en una publicación y, a continuación, haga clic en Propiedades.
Modifique las propiedades que sean necesarias y, a continuación, haga clic en Aceptar.
[Top]
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
- 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
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 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 la publicación y de los artículos.
Para ver las propiedades de una publicación de combinación
- 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
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 nueva instantánea, también debe especificar el valor 1 para @force_invalidate_snapshot y si el cambio va a requerir que se reinicialicen suscriptores, debe especificar el valor 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 la publicación y de los artículos.
Para ver las propiedades de una instantánea
- Ejecute sp_helppublication_snapshot, especificando el nombre de la publicación para el parámetro @publication.
Para cambiar las propiedades de una instantánea
- 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 [AdventureWorks2012]
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 [AdventureWorks2012]
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 [AdventureWorks2012]
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 [AdventureWorks2012]
EXEC sp_changemergepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0,
@force_invalidate_snapshot = 0,
@force_reinit_subscription = 0;
GO
[Top]
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
Cree una conexión al Publicador mediante la clase ServerConnection.
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.
Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que las propiedades de la publicación del paso 2 se definieron incorrectamente o bien, que la publicación no existe.
(Opcional) Para cambiar las propiedades, establezca un nuevo valor para una o más de las propiedades que se pueden establecer. Use 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. 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.
(Opcional) Si especificó un valor de true para CachePropertyChanges, llame al método CommitPropertyChanges para confirmar los cambios en el servidor. Si especificó un 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
Cree una conexión al Publicador mediante la clase ServerConnection.
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.
Llame al método LoadProperties para obtener las propiedades del objeto. Si este método devuelve false, significa que las propiedades de la publicación del paso 2 se definieron incorrectamente o bien, que la publicación no existe.
(Opcional) Para cambiar las propiedades, establezca un nuevo valor para una o más de las propiedades que se pueden establecer. Use 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. 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.
(Opcional) Si especificó 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 (el valor 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 = "AdventureWorks2012";
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 = "AdventureWorks2012"
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 = "AdventureWorks2012";
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 = "AdventureWorks2012"
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
[Top]
Vea también
Tasks
Agregar y quitar artículos de una publicación (SQL Server Management Studio)
Ver información y realizar tareas para una publicación (Monitor de replicación)
Conceptos
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 sobre los procedimientos almacenados del sistema de replicación