Visualizzazione e modifica delle proprietà degli articoli

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Questo argomento descrive come visualizzare e modificare le proprietà di articolo in SQL Server tramite SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).

Contenuto dell'articolo

Prima di iniziare

Limitazioni e restrizioni

  • Alcune proprietà non possono essere modificate dopo la creazione di una pubblicazione, mentre altre proprietà non possono essere modificate se sono presenti sottoscrizioni alla pubblicazione. Le proprietà che non possono essere modificate vengono visualizzate come di sola lettura.

Consigli

Utilizzo di SQL Server Management Studio

Visualizza e modifica le proprietà degli articoli nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione> disponibile in Microsoft SQL Server Management Studio e Monitoraggio replica. Per informazioni sull'avvio di Monitoraggio replica, vedere Avviare Monitoraggio replica.

  • Nella pagina Generale sono presenti il nome e la descrizione della pubblicazione, il nome del database, il tipo di pubblicazione e le impostazioni di scadenza della sottoscrizione.

  • La pagina Articoli corrisponde alla pagina Articoli presente nella Creazione guidata nuova pubblicazione. Utilizzare questa pagina per aggiungere ed eliminare articoli e per modificare le proprietà e l'applicazione di filtri a colonne per gli articoli.

  • La pagina Filtra righe corrisponde alla pagina Filtro righe tabella presente nella Creazione guidata nuova pubblicazione. Utilizzare questa pagina per aggiungere, modificare ed eliminare filtri di righe statici per tutti i tipi di pubblicazioni e aggiungere, modificare ed eliminare filtri di righe con parametri e filtri join per le pubblicazioni di tipo merge.

  • La pagina Snapshot consente di specificare il formato e la posizione dello snapshot, se comprimere lo snapshot e gli script da eseguire prima e dopo l'applicazione dello snapshot.

  • La pagina Snapshot FTP , per le pubblicazioni snapshot e transazionali e per le pubblicazioni di tipo merge nei server di pubblicazione che eseguono versioni precedenti a SQL Server 2005, consente di specificare se i Sottoscrittori possono scaricare file di snapshot tramite FTP (File Transfer Protocol).

  • La pagina Snapshot FTP e Internet , per le pubblicazioni di tipo merge da server di pubblicazione che eseguono SQL Server 2005 o versione successiva, consente di specificare se i Sottoscrittori possono scaricare file di snapshot tramite FTP e sincronizzare le sottoscrizioni tramite HTTPS.

  • Nella pagina Opzioni della sottoscrizione è possibile impostare alcune opzioni che si applicano a tutte le sottoscrizioni. Le opzioni variano in relazione al tipo di pubblicazione.

  • La pagina Elenco accesso pubblicazione consente di specificare quali account di accesso e gruppi possono accedere a una pubblicazione.

  • La pagina Sicurezza agente consente di accedere alle impostazioni degli account utilizzati per l'esecuzione degli agenti seguenti e per la creazione di connessioni ai computer in una topologia di replica: l'agente snapshot per tutte le pubblicazioni, l'agente di lettura log per tutte le pubblicazioni transazionali e l'agente di lettura coda per le pubblicazioni transazionali che consentono sottoscrizioni ad aggiornamento in coda.

  • La pagina Partizioni dati , per le pubblicazioni di tipo merge da server di pubblicazione che eseguono SQL Server 2005 o versione successiva, consente di specificare se i Sottoscrittori delle pubblicazioni con filtri con parametri possono richiedere uno snapshot qualora non ne fosse disponibile uno. In questa pagina è inoltre possibile generare snapshot per una o più partizioni, una sola volta o in base a una pianificazione periodica.

Per visualizzare e modificare le proprietà degli articoli

  1. Nella pagina Articoli della finestra di dialogo Proprietà pubblicazione - <Pubblicazione> selezionare un articolo e quindi fare clic su Proprietà articolo.

  2. Selezionare gli articoli a cui si applicano le modifiche delle proprietà:

    • Fare clic su Imposta proprietà dell'articolo di <TipoOggetto> evidenziato per aprire la finestra di dialogo Proprietà articolo - <NomeOggetto>. Le modifiche apportate alle proprietà in questa finestra di dialogo vengono applicate solo all'oggetto evidenziato nel riquadro degli oggetti nella pagina Articoli.

    • Fare clic su Imposta proprietà di tutti gli articoli di <TipoOggetto> per aprire la finestra di dialogo Proprietà di tutti gli articoli <TipoOggetto>. Le modifiche apportate alle proprietà in questa finestra di dialogo vengono applicate a tutti gli oggetti del tipo indicato nel riquadro degli oggetti all'interno della pagina Articoli, inclusi quelli non ancora selezionati per la pubblicazione.

      Nota

      Le modifiche apportate alle proprietà nella finestra di dialogo Proprietà di tutti gli articoli <TipoOggetto> sostituiscono tutte le modifiche eseguite precedentemente nella finestra di dialogo Proprietà articolo - <NomeOggetto>. Se ad esempio si desidera impostare alcuni valori predefiniti per tutti gli articoli di un tipo di oggetto e, al contempo, alcune proprietà per singoli oggetti, è necessario impostare innanzitutto i valori predefiniti per tutti gli articoli, quindi le proprietà relative ai singoli oggetti.

  3. Se necessario, modificare le proprietà e quindi fare clic su OK.

  4. Fare clic su OK nella finestra di dialogo Proprietà pubblicazione - <Pubblicazione>.

Utilizzo di Transact-SQL

È possibile modificare gli articoli e restituire a livello di programmazione le relative proprietà tramite le stored procedure di replica. Le stored procedure utilizzate dipenderanno dal tipo di pubblicazione a cui appartiene l'articolo.

Per visualizzare le proprietà di un articolo appartenente a una pubblicazione snapshot o transazionale

  1. Eseguire sp_helparticle, specificando il nome della pubblicazione per il parametro @publication e il nome dell'articolo per il parametro @article. Se @article viene omesso, verranno restituite informazioni su tutti gli articoli della pubblicazione.

  2. Eseguire sp_helparticlecolumns per gli articoli di tabella per elencare tutte le colonne disponibili nella tabella di base.

Per modificare le proprietà di un articolo appartenente a una pubblicazione snapshot o transazionale

  1. Eseguire sp_changearticle, specificando la proprietà dell'articolo da modificare nel parametro @property e il nuovo valore di questa proprietà nel parametro @value.

    Nota

    Se la modifica richiede la generazione di un nuovo snapshot, è necessario specificare anche il valore 1 per @force_invalidate_snapshot e, se richiede la reinizializzazione dei Sottoscrittori, è necessario specificare anche il valore 1 per @force_reinit_subscription. Per altre informazioni sulle proprietà che, in caso di modifica, richiedono un nuovo snapshot o una reinizializzazione, vedere Modificare le proprietà di pubblicazioni e articoli.

Per visualizzare le proprietà di un articolo appartenente a una pubblicazione di tipo merge

  1. Eseguire sp_helpmergearticle, specificando il nome della pubblicazione per il parametro @publication e il nome dell'articolo per il parametro @article. Se questi parametri vengono omessi, verranno restituite informazioni su tutti gli articoli della pubblicazione o del server di pubblicazione.

  2. Eseguire sp_helpmergearticlecolumn per gli articoli di tabella per elencare tutte le colonne disponibili nella tabella di base.

Per modificare le proprietà di un articolo appartenente a una pubblicazione di tipo merge

  1. Eseguire sp_changemergearticle, specificando la proprietà dell'articolo da modificare nel parametro @property e il nuovo valore di questa proprietà nel parametro @value.

    Nota

    Se la modifica richiede la generazione di un nuovo snapshot, è necessario specificare anche il valore 1 per @force_invalidate_snapshot e, se richiede la reinizializzazione dei Sottoscrittori, è necessario specificare anche il valore 1 per @force_reinit_subscription. Per altre informazioni sulle proprietà che, in caso di modifica, richiedono un nuovo snapshot o una reinizializzazione, vedere Modificare le proprietà di pubblicazioni e articoli.

Esempio (Transact-SQL)

In questo esempio di replica transazionale vengono restituite le proprietà dell'articolo pubblicato.

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

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

In questo esempio di replica transazionale vengono modificate le opzioni dello schema per l'articolo pubblicato.

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

In questo esempio di replica di tipo merge vengono restituite le proprietà dell'articolo pubblicato.

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

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

In questo esempio di replica di tipo merge vengono modificate le impostazioni di rilevamento dei conflitti per un articolo pubblicato.

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

Utilizzo di RMO (Replication Management Objects)

È possibile modificare gli articoli e accedere alle relative proprietà a livello di programmazione utilizzando oggetti RMO (Replication Management Objects). Le classi RMO utilizzate per la visualizzazione o la modifica degli articoli dipendono dal tipo di pubblicazione cui appartiene l'articolo.

Per visualizzare o modificare le proprietà di un articolo che appartiene a una pubblicazione snapshot o transazionale

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .

  2. Creare un'istanza della classe TransArticle.

  3. Impostare le proprietà Name, PublicationNamee DatabaseName .

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext .

  5. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà dell'articolo sono state definite in modo non corretto nel passaggio 3 oppure l'articolo non esiste.

  6. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto TransArticle che è possibile impostare.

  7. (Facoltativo) Se si specifica un valore true per CachePropertyChanges, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server. Se si specifica un valore false per CachePropertyChanges (impostazione predefinita), le modifiche vengono inviate immediatamente al server.

Per visualizzare o modificare le proprietà di un articolo che appartiene a una pubblicazione di tipo merge

  1. Creare una connessione al server di pubblicazione tramite la classe ServerConnection .

  2. Creare un'istanza della classe MergeArticle.

  3. Impostare le proprietà Name, PublicationNamee DatabaseName .

  4. Impostare la connessione del passaggio 1 per la proprietà ConnectionContext .

  5. Chiamare il metodo LoadProperties per recuperare le proprietà dell'oggetto. Se questo metodo restituisce false, le proprietà dell'articolo sono state definite in modo non corretto nel passaggio 3 oppure l'articolo non esiste.

  6. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto MergeArticle che è possibile impostare.

  7. (Facoltativo) Se si specifica un valore true per CachePropertyChanges, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server. Se si specifica un valore false per CachePropertyChanges (impostazione predefinita), le modifiche vengono inviate immediatamente al server.

Esempio (RMO)

In questo esempio viene modificato un articolo di merge per specificare il gestore della logica di business utilizzato dall'articolo.

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

Vedi anche

Implementare un gestore della logica di business per un articolo di merge
Pubblicare dati e oggetti di database
Modificare le proprietà di pubblicazioni e articoli
Replication System Stored Procedures Concepts
Advanced Merge Replication Conflict Detection and Resolution