Compartilhar via


Exibir e modificar propriedades do artigo

Este tópico descreve como exibir e modificar as propriedades do artigo no SQL Server 2014 usando o SQL Server Management Studio, o Transact-SQL ou o RMO (Replication Management Objects).

Nesse Tópico

Antes de começar

Limitações e restrições

  • Algumas propriedades não poderão ser modificadas após a criação de uma publicação e outras não poderão ser modificadas se houver assinaturas para a publicação. As propriedades que não podem ser modificadas são exibidas como somente leitura.

Recomendações

Como usar o SQL Server Management Studio.

Exibir e modificar as propriedades do artigo na caixa de diálogo Propriedades da Publicação – <Publicação> , que está disponível no Microsoft SQL Server Management Studio e no Replication Monitor. Para obter informações sobre como iniciar o Replication Monitor, consulte Iniciar o Replication Monitor.

  • A página Geral inclui o nome e a descrição da publicação, o nome do banco de dados, o tipo de publicação e as configurações de expiração da assinatura.

  • A página Artigos corresponde à página Artigos no Assistente para Nova Publicação. Use esta página para adicionar e excluir artigos e alterar propriedades e filtragem de colunas para artigos.

  • A página Filtrar Linhas corresponde à página Filtrar Linhas da Tabela no Assistente para Nova Publicação. Use esta página para adicionar, editar e excluir filtros de linha estáticos para todos os tipos de publicações e para adicionar, editar e excluir filtros de linha parametrizados e unir filtros para publicações de mesclagem.

  • A página Instantâneo permite que você especifique o formato e o local do instantâneo, se o instantâneo deve ser compactado e os scripts a serem executados antes e depois que o instantâneo for aplicado.

  • A página FTP Snapshot (para publicações de instantâneos e transacionais e publicações de mesclagem para Publicadores que executam versões anteriores ao SQL Server 2005) permite que você especifique se os Assinantes podem baixar arquivos de instantâneo por meio do FTP (Protocolo de Transferência de Arquivo).

  • A página Captura de FTP e Internet (para publicações de mesclagem de Editores que executam o SQL Server 2005 ou posterior) permite especificar se os Assinantes podem baixar arquivos de captura por meio de FTP e se os Assinantes podem sincronizar assinaturas por meio de HTTPS.

  • A página Opções de Assinatura permite que você defina várias opções que se aplicam a todas as assinaturas. As opções diferem dependendo do tipo de publicação.

  • A página Lista de Acesso à Publicação permite especificar quais logons e grupos podem acessar uma publicação.

  • A página Segurança do Agente permite que você acesse as configurações das contas nas quais os seguintes agentes são executados e façam conexões com os computadores em uma topologia de replicação: o Snapshot Agent para todas as publicações; o Agente Leitor de Log para todas as publicações transacionais; e o Agente Leitor de Filas para publicações transacionais que permitem atualizações de assinaturas em fila.

  • A página Partições de Dados (para publicações de mesclagem de Editores que executam o SQL Server 2005 ou posterior) permite especificar se os Assinantes de publicações com filtros parametrizados podem solicitar um instantâneo quando não houver um disponível. Ele também permite que você gere instantâneos para uma ou mais partições, uma única vez ou de forma recorrente.

Para exibir e modificar as propriedades do artigo

  1. Na página Artigos das Propriedades da Publicação – <Caixa de diálogo Publicação> , selecione um artigo e clique em Propriedades do Artigo.

  2. Selecione a quais artigos as alterações de propriedade devem ser aplicadas a:

    • Clique em Definir Propriedades do <ObjectType> Realçado para iniciar a caixa de diálogo Propriedades do Artigo – <ObjectName>; as alterações de propriedade feitas nesta caixa de diálogo são aplicadas somente ao objeto que está realçado no painel de objetos na página Artigos.

    • Clique em Definir Propriedades de Todos os <Artigos objectType>, para iniciar a caixa de diálogo Propriedades para Todos os <Artigos objectType>; as alterações de propriedade feitas nesta caixa de diálogo são aplicadas a todos os objetos desse tipo no painel de objetos na página Artigos, incluindo os que ainda não foram selecionados para publicação.

      Observação

      As alterações de propriedade feitas na caixa de diálogo Propriedades para Todos os <Artigos ObjectType> substituem toda e qualquer alteração feita anteriormente na caixa de diálogo Propriedades do Artigo – <ObjectName>. Se, por exemplo, você quiser definir vários padrões para todos os artigos de um tipo de objeto, mas também quiser definir algumas propriedades para objetos individuais, defina os padrões para todos os artigos primeiro. Em seguida, defina as propriedades para os objetos individuais.

  3. Modifique as propriedades, se necessário, e clique em OK.

  4. Clique em OK na caixa de diálogo Propriedades da Publicação – <Publicação> .

Usando Transact-SQL

Os artigos podem ser modificados e suas propriedades retornadas programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados que você usa dependem do tipo de publicação ao qual o artigo pertence.

Para exibir as propriedades de um artigo pertencente a um instantâneo ou publicação transacional

  1. Execute sp_helparticle, especificando o nome da publicação para o parâmetro @publication e o nome do artigo para o parâmetro @article . Se você não especificar @article, as informações serão retornadas para todos os artigos na publicação.

  2. Execute sp_helparticlecolumns para artigos de tabela a fim de listar todas as colunas disponíveis na tabela base.

Para modificar as propriedades de um artigo que pertence a um instantâneo ou publicação transacional

  1. Execute sp_changearticle, especificando a propriedade de artigo que está sendo alterada no parâmetro @property e o novo valor dessa propriedade no parâmetro @value .

    Observação

    Se a alteração exigir a geração de um novo instantâneo, você também deverá especificar um valor de 1 para @force_invalidate_snapshot e, se a alteração exigir que os Assinantes sejam reinicializados, você também deverá especificar um valor de 1 para @force_reinit_subscription. Para obter mais informações sobre as propriedades que, quando alteradas, exigem um novo instantâneo ou a reinicialização, consulte Alterar Publicação e Propriedades do Artigo.

Para exibir as propriedades de um artigo que pertence a uma publicação de mesclagem

  1. Execute sp_helpmergearticle, especificando o nome da publicação para o parâmetro @publication e o nome do artigo para o parâmetro @article . Se você não especificar esses parâmetros, as informações serão retornadas para todos os artigos em uma publicação ou no publicador.

  2. Execute sp_helpmergearticlecolumn para os artigos de tabela para listar todas as colunas disponíveis na tabela base.

Para modificar as propriedades de um artigo que pertence a uma publicação de mesclagem

  1. Execute sp_changemergearticle, especificando a propriedade de artigo que está sendo alterada no parâmetro @property e o novo valor dessa propriedade no parâmetro @value .

    Observação

    Se a alteração exigir a geração de um novo instantâneo, você também deverá especificar um valor de 1 para @force_invalidate_snapshot e, se a alteração exigir que os Assinantes sejam reinicializados, você também deverá especificar um valor de 1 para @force_reinit_subscription. Para obter mais informações sobre as propriedades que, quando alteradas, exigem um novo instantâneo ou reinicialização, consulte Alterar Publicação e Propriedades do Artigo.

Exemplo (Transact-SQL)

Este exemplo de replicação transacional retorna as propriedades do artigo publicado.

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

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

Este exemplo de replicação transacional altera as opções de esquema do artigo 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 exemplo de replicação de mesclagem retorna as propriedades do artigo publicado.

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

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

Este exemplo de replicação de mesclagem altera as configurações de detecção de conflitos para um artigo 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

Usando Objetos de Gerenciamento de Replicação (RMO)

Você pode modificar artigos e acessar suas propriedades programaticamente usando RMO (Replication Management Objects). As classes RMO que você usa para exibir ou modificar as propriedades do artigo dependem do tipo de publicação ao qual o artigo pertence.

Para exibir ou modificar propriedades de um artigo que pertence a um instantâneo ou publicação transacional

  1. Crie uma conexão com o Publicador usando a classe ServerConnection .

  2. Criar uma instância da classe TransArticle.

  3. Defina as propriedades Name, PublicationNamee DatabaseName .

  4. Defina a conexão da etapa 1 para a propriedade ConnectionContext.

  5. Chame o método LoadProperties para obter as propriedades do objeto. Se esse método retornar false, as propriedades do artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.

  6. (Opcional) Para alterar as propriedades, defina um novo valor para uma das TransArticle propriedades que podem ser definidas.

  7. (Opcional) Se você especificar um valor de true para CachePropertyChanges, chame o método CommitPropertyChanges para confirmar as alterações no servidor. (Opcional) Se você especificar um valor de false para CachePropertyChanges (padrão), as alterações serão enviadas imediatamente ao servidor.

Para exibir ou modificar propriedades de um artigo que pertence a uma publicação de mesclagem

  1. Crie uma conexão com o Publicador usando a classe ServerConnection .

  2. Criar uma instância da classe MergeArticle.

  3. Defina as propriedades Name, PublicationNamee DatabaseName .

  4. Defina a conexão da etapa 1 para a propriedade ConnectionContext.

  5. Chame o método LoadProperties para obter as propriedades do objeto. Se esse método retornar false, as propriedades do artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.

  6. (Opcional) Para alterar as propriedades, defina um novo valor para uma das MergeArticle propriedades que podem ser definidas.

  7. (Opcional) Se você especificar um valor de true para CachePropertyChanges, chame o método CommitPropertyChanges para confirmar as alterações no servidor. (Opcional) Se você especificar um valor de false para CachePropertyChanges (padrão), as alterações serão enviadas imediatamente ao servidor.

Exemplo (RMO)

Este exemplo altera um artigo de mesclagem para especificar o manipulador de lógica de negócios usado pelo artigo.

// 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

Consulte Também

Implementar um Manipulador de Lógica de Negócios para um Artigo de Mesclagem
Publicar dados e objetos de banco de dados
Alterar propriedades de publicação e artigo
Conceitos de procedimentos armazenados do sistema de replicação
Detecção e resolução avançadas de conflitos de replicação de mesclagem