Partilhar via


Visualizar e modificar propriedades de artigos

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Este tópico descreve como visualizar e modificar propriedades de um artigo no SQL Server usando o SQL Server Management Studio, o Transact-SQL ou o RMO (Replication Management Objects).

Neste tópico

Antes de começar

Limitações e Restrições

  • Algumas propriedades não podem ser modificadas após uma publicação ter sido criada, e outras não podem ser modificadas se houverem assinaturas na publicação. As propriedades que não podem ser definidas são exibidas como somente leitura.

Recomendações

Como usar o SQL Server Management Studio.

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

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

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

  • A página Filtrar Linhas corresponde à página Filtrar Linhas de Tabela no Assistente para Nova Publicação. Use essa página para adicionar, editar e excluir filtros de linhas estáticas para todos os tipos de publicações, e para adicionar, editar e excluir filtros de linhas com parâmetros e associar 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 estar compactado e scripts para serem executados antes e depois que o instantâneo for aplicado.

  • A página Instantâneo FTP (para publicações transacionais e de instantâneo e publicações de mesclagem para versões de Publicadores em execução antes do SQL Server 2005) permite que você especifique se os Assinantes podem baixar arquivos através de FTP (Protocolo de Transferência de Arquivo).

  • A página Instantâneo de FTP e Internet (para publicações de mesclagem de Publicadores executando o SQL Server 2005 ou versões posteriores) permite que você especifique se os Assinantes podem baixar arquivos de instantâneo através de FTP, e se os Assinantes podem sincronizar as assinaturas através de HTTPS.

  • A página Opções de Assinatura permite que você possa definir um número de opções que se aplicam à todas as assinaturas. As opções diferem dependendo do tipo de publicação.

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

  • A página Segurança do Agente permite que você acesse as configurações para as contas sob as quais os seguintes agentes executam e fazem conexões com os computadores em uma topologia de replicação: O Agente de Instantâneo para todas as publicações; o Log Reader Agent para todas as publicações transacionais e o Queue Reader Agent para publicações transacionais que permitem assinaturas de atualização enfileiradas.

  • A página Partições de Dados (para publicações de mesclagem de Publicadores executando o SQL Server 2005 ou posterior) permite que você especifique se os Assinantes das publicações com filtros com parâmetros podem solicitar uma instantâneo, se um não estiver disponível. Ele também permite que você gere instantâneos para uma ou mais partições uma vez ou em uma agenda recorrente.

Para visualizar e modificar as propriedades do artigo

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

  2. Selecione quais alterações da propriedade dos artigos devem ser aplicadas a:

    • Clique em Definir as Propriedades do Artigo <ObjectType> Realçado para iniciar a caixa de diálogo Propriedades do Artigo – <ObjectName>. As alterações de propriedade feitas nessa 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 as Propriedades de Todos os Artigos <ObjectType>, para iniciar a caixa de diálogo Propriedades de Todos os Artigos <ObjectType>. As alterações à propriedade feitas nessa caixa de diálogo são aplicadas a todos os objetos desse tipo, no painel de objetos da página Artigos, incluindo os ainda não selecionados para publicação.

      Observação

      Alterações de propriedade feitas na caixa de diálogo Propriedades para Todos os Artigos <ObjectType> substituem todas as alterações feitas anteriormente na caixa de diálogo Propriedades do Artigo – <ObjectName>. Se, por exemplo, você quiser definir um número de padrões para todos os artigos de um tipo de objeto, mas também quer definir algumas propriedades para objetos individuais, defina primeiro os padrões para todos os artigos. Em seguida, defina as propriedades para os objetos individuais.

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

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

Usando o Transact-SQL

É possível modificar artigos e retornar suas propriedades programaticamente usando procedimentos armazenados de replicação. Os procedimentos armazenados usados dependem do tipo de publicação ao qual o artigo pertence.

Para exibir as propriedades de um artigo que pertence 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, serão retornadas informações para todos os artigos na publicação.

  2. Execute sp_helparticlecolumns para que os artigos de tabela listem 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 do artigo que está sendo alterado no parâmetro @property e o novo valor desta propriedade no parâmetro @value.

    Observação

    Se a alteração exigir a geração de um novo instantâneo, deve-se também especificar um valor 1 para @force_invalidate_snapshot e, se a alteração exigir que os Assinantes sejam reinicializados, deve-se também especificar um valor 1 para @force_reinit_subscription. Para obter mais informações sobre as propriedades que, quando alteradas, exigem um novo instantâneo ou uma nova reinicialização, consulte Alterar propriedades da publicação e 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, serão retornadas informações de todos os artigos em uma publicação ou no publicador.

  2. Execute sp_helpmergearticlecolumn para que os artigos de tabela listem 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 do artigo que está sendo alterado no parâmetro @property e o novo valor desta propriedade no parâmetro @value.

    Observação

    Se a alteração exigir a geração de um novo instantâneo, deve-se também especificar um valor 1 para @force_invalidate_snapshot e, se a alteração exigir que os Assinantes sejam reinicializados, deve-se também especificar um valor 1 para @force_reinit_subscription. Para obter mais informações sobre as propriedades que, quando alteradas, exigem um novo instantâneo ou uma nova reinicialização, consulte Alterar propriedades da publicação e do artigo.

Exemplo (Transact-SQL)

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

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

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

Esse exemplo de replicação transacional altera as opções de esquema para o 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 [AdventureWorks2022]
EXEC sp_changearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'schema_option', 
  @value = @option,
  @force_invalidate_snapshot = 1;
GO

Esse exemplo de replicação de mesclagem retorna as propriedades do artigo publicado.

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

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

Esse exemplo de replicação de mesclagem altera as configurações de detecção de conflito 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 [AdventureWorks2022]
EXEC sp_changemergearticle 
  @publication = @publication,
  @article = @article, 
  @property = N'column_tracking', 
  @value = N'true',
  @force_invalidate_snapshot = 1,
  @force_reinit_subscription = 1;
GO

Usando o RMO (Replication Management Objects)

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

Para exibir ou modificar propriedades de um artigo que pertence a uma publicação de instantâneo ou 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 de artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.

  6. (Opcional) Para alterar propriedades, defina um novo valor para uma das propriedades TransArticle 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 de artigo na etapa 3 foram definidas incorretamente ou o artigo não existe.

  6. (Opcional) Para alterar propriedades, defina um novo valor para uma das propriedades MergeArticle 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)

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