Partager via


sp_addpullsubscription (Transact-SQL)

Ajoute un abonnement par extraction de données à une publication transactionnelle ou de capture instantanée. Cette procédure stockée est exécutée sur la base de données de l'Abonné dans laquelle l'abonnement extrait doit être créé.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

sp_addpullsubscription [ @publisher= ] 'publisher'
    [ , [ @publisher_db= ] 'publisher_db' ]
        , [ @publication= ] 'publication'
    [ , [ @independent_agent= ] 'independent_agent' ]
    [ , [ @subscription_type= ] 'subscription_type' ]
    [ , [ @description= ] 'description' ]
    [ , [ @update_mode= ] 'update_mode' ]
    [ , [ @immediate_sync = ] immediate_sync ]

Arguments

  • [ @publisher=] 'publisher'
    Nom du serveur de publication. publisher est de type sysname, sans valeur par défaut.

  • [ @publisher_db=] 'publisher_db'
    Nom de la base de données du serveur de publication. publisher_db est de type sysname, avec NULL comme valeur par défaut. Les serveurs de publications Oracle ignorent publisher_db.

  • [ @publication=] 'publication'
    Nom de la publication. publication est de type sysname, sans valeur par défaut.

  • [ @independent_agent=] 'independent_agent'
    Indique s'il existe un Agent de distribution autonome pour cette publication. independent_agent est de type nvarchar(5), avec TRUE comme valeur par défaut. La valeur true indique qu'il existe un Agent de distribution indépendant pour cette publication. Si la valeur est false, un Agent de distribution est présent pour chaque paire base de données du serveur de publication/base de données de l'Abonné. L'argument independent_agent est une propriété de la publication et doit avoir la même valeur ici que sur le serveur de publication.

  • [ @subscription_type=] 'subscription_type'
    Type d'abonnement. subscription_type est de type nvarchar(9), avec anonymous comme valeur par défaut. Vous devez spécifier une valeur pull pour subscription_type, sauf si vous voulez créer un abonnement sans l'enregistrer sur le serveur de publication. Dans ce cas, vous devez indiquer une valeur anonymous. Cela s'avère nécessaire lorsque vous ne pouvez pas établir de connexion SQL Server avec le serveur de publication pendant la configuration de l'abonnement.

  • [ @description=] 'description'
    Description de la publication. description est de type nvarchar(100), avec une valeur par défaut NULL.

  • [ @update_mode=] 'update_mode'
    Type de la mise à jour. update_mode est de type nvarchar(30) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    read only (valeur par défaut)

    L'abonnement est en lecture seule. Aucune modification effectuée sur l'Abonné ne sera retournée au serveur de publication. Cette valeur doit être utilisée si aucune mise à jour ne doit être effectuée sur le serveur de publication.

    synctran

    Active la prise en charge des abonnements de mise à jour immédiate.

    queued tran

    Active l'abonnement pour la mise à jour en attente. Les modifications de données peuvent être effectuées chez l'Abonné, stockées dans une file d'attente, puis propagées vers le serveur de publication.

    failover

    Active l'abonnement pour la mise à jour immédiate avec mise à jour en attente sous forme de basculement. Les modifications de données peuvent être effectuées chez l'Abonné, puis propagées immédiatement vers le serveur de publication. Si le serveur de publication et l'Abonné ne sont pas connectés, les modifications de données effectuées chez l'Abonné peuvent être stockées dans une file d'attente jusqu'à ce que l'Abonné et le serveur de publication soient reconnectés.

    queued failover

    Active l'abonnement sous forme d'abonnement de mise à jour en attente avec la possibilité de basculer en mode de mise à jour immédiate. Les modifications de données peuvent être effectuées sur l'Abonné et stockées dans une file d'attente jusqu'à ce qu'une connexion soit établie entre l'Abonné et le serveur de publication. Lorsqu'une connexion continue est établie, il est possible de basculer du mode de mise à jour au mode de mise à jour immédiate. Cette valeur n'est pas prise en charge pour les serveurs de publication Oracle.

  • [ @immediate_sync =] immediate_sync
    Indique si les fichiers de synchronisation sont créés ou recréés à chaque exécution de l'Agent de capture instantanée. immediate_sync est de type bit avec 1 comme valeur par défaut, et doit avoir la même valeur que immediate_sync dans sp_addpublication.immediate_sync est une propriété de la publication est doit avoir la même valeur ici que sur le serveur de publication.

Valeurs des codes retournés

0 (succès) ou 1 (échec)

Notes

La procédure sp_addpullsubscription est utilisée lors des réplications de capture instantanée et transactionnelle.

Remarque relative à la sécuritéRemarque relative à la sécurité

Pour les abonnements mis à jour en attente, utilisez l'authentification SQL Server pour les connexions aux abonnés et spécifiez un compte différent pour la connexion à chaque abonné. Lors de la création d'un abonnement par extraction de données prenant en charge la mise à jour en attente, la réplication configure toujours la connexion de manière à ce qu'elle utilise l'authentification Windows (pour les abonnements par extraction de données, la réplication ne peut pas accéder aux métadonnées de l'Abonné qui sont requises pour utiliser l'authentification SQL Server). Dans ce cas, vous devez exécuter sp_changesubscription pour modifier la connexion afin d'utiliser l'authentification SQL Server une fois l'abonnement configuré.

Si la table MSreplication_subscriptions (Transact-SQL) n'existe pas sur l'Abonné, sp_addpullsubscription la crée. Elle ajoute également une ligne à la table MSreplication_subscriptions (Transact-SQL). Dans le cas des abonnements par extraction de données, la procédure stockée sp_addsubscription (Transact-SQL) doit d'abord être appelée sur le serveur de publication.

Exemple

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorksReplica]
EXEC sp_addpullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Autorisations

Seuls les membres du rôle de serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter sp_addpullsubscription.