Partager via


Afficher et modifier les propriétés d'un article

S’applique à : SQL Server Azure SQL Managed Instance

Cette rubrique décrit comment afficher et modifier les propriétés d’un article dans SQL Server à l’aide de SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO).

Dans cette rubrique

Avant de commencer

Limitations et restrictions

  • Certaines propriétés ne sont pas modifiables après la création d'une publication et d'autres s'il existe des abonnements à la publication. Les propriétés non modifiables sont affichées en lecture seule.

Recommandations

Utilisation de SQL Server Management Studio

Affichez et modifiez les propriétés de l’article dans la boîte de dialogue Propriétés de la publication - <Publication>, disponible dans Microsoft SQL Server Management Studio et dans le moniteur de réplication. Pour plus d’informations sur le démarrage du Moniteur de réplication, consultez Démarrer le Moniteur de réplication.

  • La page Général contient le nom et la description de la publication, le nom de la base de données, le type de publication et les paramètres d'expiration des abonnements.

  • La page Articles correspond à la page Articles de l'Assistant Nouvelle publication. Utilisez-la pour ajouter et supprimer des articles, ainsi que pour modifier des propriétés et le filtrage des colonnes pour des articles.

  • La page Filtrer les lignes correspond à la page Filtrer les lignes de la table de l'Assistant Nouvelle publication. Utilisez-la pour ajouter, modifier et supprimer des filtres de lignes statiques pour tous les types de publications, ainsi que pour ajouter, modifier et supprimer des filtres de lignes paramétrés et des filtres de jointure pour des publications de fusion.

  • La page Instantané permet de spécifier le format et l'emplacement de l'instantané, la compression éventuelle de l'instantané, ainsi que des scripts à exécuter avant et après l'application de l'instantané.

  • La page Instantané FTP (pour les publications d'instantané et transactionnelles, et les publications de fusion pour les serveurs de publication exécutant des versions antérieures à SQL Server 2005) permet de spécifier si des Abonnés peuvent télécharger des fichiers d'instantanés via le protocole FTP.

  • La page Instantané FTP et Internet (pour les publications de fusion provenant des serveurs de publication exécutant SQL Server 2005 ou version ultérieure) permet de spécifier si des Abonnés peuvent télécharger des fichiers d'instantanés via FTP et si des Abonnés peuvent synchroniser des abonnements via HTTPS.

  • La page Options d'abonnement permet de définir diverses options qui s'appliquent à tous les abonnements. Les options diffèrent en fonction du type de publication.

  • La page Liste d'accès à la publication permet de spécifier les connexions et les groupes qui peuvent accéder à une publication.

  • La page Sécurité de l'agent permet d'accéder aux paramètres des comptes sous lesquels les agents ci-après s'exécutent et se connectent aux ordinateurs d'une topologie de réplication : l'Agent d'instantané pour toutes les publications, l'Agent de lecture du journal pour toutes les publications transactionnelles et l'Agent de lecture de la file d'attente pour les publications transactionnelles qui autorisent les abonnements mis à jour en attente.

  • La page Partitions de données (pour les publications de fusion provenant des serveurs de publication exécutant SQL Server 2005 ou version ultérieure) permet de spécifier si des Abonnés à des publications avec des filtres paramétrés peuvent demander un instantané si aucun n'est disponible. Elle permet de générer des instantanés pour une ou plusieurs partitions, soit au coup par coup, soit à intervalles récurrents.

Pour afficher et modifier les propriétés d'un article

  1. Dans la page Article de la boîte de dialogue Propriétés de la Publication - <Publication>, sélectionnez un article, puis cliquez sur Propriétés de l’article.

  2. Sélectionnez les articles auxquels les modifications des propriétés doivent s'appliquer :

    • Cliquez sur Définir les propriétés de l’article de <type_objet> en surbrillance pour ouvrir la boîte de dialogue Propriétés de l’article - <nom_objet>. Les modifications de propriétés apportées dans cette boîte de dialogue sont appliquées uniquement à l’objet en surbrillance dans le volet Objet de la page Articles.

    • Cliquez sur Définir les propriétés de tous les articles <type_objet> pour ouvrir la boîte de dialogue Propriétés pour tous les articles <type_objet>. Les modifications de propriétés apportées dans cette boîte de dialogue sont appliquées à tous les objets de ce type dans le volet Objet de la page Articles, notamment ceux qui ne sont pas encore sélectionnés pour la publication.

      Remarque

      Les modifications de propriétés apportées dans la boîte de dialogue Propriétés pour tous les articles <type_objet> remplacent celles apportées dans la boîte de dialogue Propriétés de l’article - <nom_objet>. Ainsi, si vous voulez définir un certain nombre de valeurs par défaut applicables à tous les articles d'un type d'objet mais souhaitez également définir des propriétés pour des objets spécifiques, vous devez d'abord définir les valeurs par défaut pour tous les articles. Définissez ensuite les propriétés des objets individuels.

  3. Modifiez les propriétés si nécessaire, puis cliquez sur OK.

  4. Cliquez sur OK dans la boîte de dialogue Propriétés de la publication - <Publication>.

Utilisation de Transact-SQL

Les articles peuvent être modifiés et leurs propriétés retournées, par programme, à l'aide des procédures stockées de réplication. Les procédures stockées utilisées dépendent du type de publication auquel l'article appartient.

Pour afficher les propriétés d'un article appartenant à une publication transactionnelle ou d'instantané

  1. Exécutez sp_helparticle, en spécifiant le nom de la publication pour le paramètre @publication et le nom de l’article pour le paramètre @article. Si vous ne spécifiez pas @article, des informations sont retournées pour tous les articles de la publication.

  2. Exécutez sp_helparticlecolumns pour les articles de table pour répertorier toutes les colonnes disponibles dans la table de base.

Pour modifier les propriétés d'un article appartenant à une publication transactionnelle ou d'instantané

  1. Exécutez sp_changearticle, en spécifiant la propriété d’article à modifier dans le paramètre @property et la nouvelle valeur de cette propriété dans le paramètre @value.

    Remarque

    Si la modification nécessite la génération d’un nouvel instantané, vous devez également spécifier la valeur 1 pour @force_invalidate_snapshot, et si la modification nécessite la réinitialisation des Abonnés, vous devez également spécifier la valeur 1 pour @force_reinit_subscription. Pour plus d’informations sur les propriétés qui, une fois modifiées, nécessitent un nouvel instantané ou une réinitialisation, consultez Modifier les propriétés des publications et des articles.

Pour afficher les propriétés d'un article appartenant à une publication de fusion

  1. Exécutez sp_helpmergearticle, en spécifiant le nom de la publication pour le paramètre @publication et le nom de l’article pour le paramètre @article. Si vous ne spécifiez pas ces paramètres, des informations sont retournées pour tous les articles d'une publication ou sur l'Abonné.

  2. Exécutez sp_helpmergearticlecolumn pour les articles de table pour répertorier toutes les colonnes disponibles dans la table de base.

Pour modifier les propriétés d'un article appartenant à une publication de fusion

  1. Exécutez sp_changemergearticle, en spécifiant la propriété d’article à modifier dans le paramètre @property et la nouvelle valeur de cette propriété dans le paramètre @value.

    Remarque

    Si la modification nécessite la génération d’un nouvel instantané, vous devez également spécifier la valeur 1 pour @force_invalidate_snapshot, et si la modification nécessite la réinitialisation des Abonnés, vous devez également spécifier la valeur 1 pour @force_reinit_subscription. Pour plus d’informations sur les propriétés qui, une fois modifiées, nécessitent un nouvel instantané ou une réinitialisation, consultez Modifier les propriétés des publications et des articles.

Exemple (Transact-SQL)

Cet exemple de réplication transactionnelle retourne les propriétés de l'article publié.

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

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

Cet exemple de réplication transactionnelle modifie les options de schéma pour l'article publié.

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

Cet exemple de réplication de fusion retourne les propriétés de l'article publié.

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

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

Cet exemple de réplication de fusion modifie les paramètres de détection de conflit pour un article publié.

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

Utilisation d'objets RMO (Replication Management Objects)

Vous pouvez modifier des articles et accéder à leurs propriétés, par programme, en utilisant les objets RMO (Replication Management Objects). Les classes RMO à utiliser pour afficher ou modifier les propriétés d'un article dépendent du type de publication auquel l'article appartient.

Pour afficher ou modifier les propriétés d'un article qui appartient à une publication transactionnelle ou d'instantané

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .

  2. Créez une instance de la classe TransArticle.

  3. Définissez les propriétés Name, PublicationNameet DatabaseName .

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext .

  5. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. (Facultatif) Pour modifier des propriétés, modifiez la valeur d'une des propriétés TransArticle qui peuvent être définies.

  7. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Pour afficher ou modifier les propriétés d'un article qui appartient à une publication de fusion

  1. Créez une connexion au serveur de publication en utilisant la classe ServerConnection .

  2. Créez une instance de la classe MergeArticle.

  3. Définissez les propriétés Name, PublicationNameet DatabaseName .

  4. Définissez la connexion créée à l'étape 1 pour la propriété ConnectionContext .

  5. Appelez la méthode LoadProperties pour obtenir les propriétés de l'objet. Si cette méthode retourne false, soit les propriétés de l'article ont été définies de manière incorrecte à l'étape 3, soit l'article n'existe pas.

  6. (Facultatif) Pour modifier des propriétés, modifiez la valeur d'une des propriétés MergeArticle qui peuvent être définies.

  7. (Facultatif) Si vous avez spécifié la valeur true pour CachePropertyChanges, appelez la méthode CommitPropertyChanges pour valider les modifications sur le serveur. Si vous avez spécifié la valeur false pour CachePropertyChanges (valeur par défaut), les modifications sont envoyées immédiatement au serveur.

Exemple (RMO)

Cet exemple modifie un article de fusion pour spécifier le gestionnaire de logique métier utilisé par l'article.

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