sp_addpublication (Transact-SQL)

Crée une publication d'instantané ou transactionnelle. Cette procédure stockée est exécutée sur la base de données de publication du serveur de publication.

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

Syntaxe

sp_addpublication [ @publication = ] 'publication'
    [ , [ @taskid = ] tasked ]
    [ , [ @restricted = ] 'restricted' ]
    [ , [ @sync_method = ] 'sync_method' ]
    [ , [ @repl_freq = ] 'repl_freq' ]
    [ , [ @description = ] 'description' ]
    [ , [ @status = ] 'status' ]
    [ , [ @independent_agent = ] 'independent_agent' ]
    [ , [ @immediate_sync = ] 'immediate_sync' ]
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
    [ , [ @allow_push = ] 'allow_push'
    [ , [ @allow_pull = ] 'allow_pull' ]
    [ , [ @allow_anonymous = ] 'allow_anonymous' ]
    [ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
    [ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
    [ , [ @retention = ] retention ]
    [ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
    [ , [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder' ]
    [ , [ @alt_snapshot_folder= ] 'alternate_snapshot_folder' ]
    [ , [ @pre_snapshot_script= ] 'pre_snapshot_script' ]
    [ , [ @post_snapshot_script= ] 'post_snapshot_script' ]
    [ , [ @compress_snapshot= ] 'compress_snapshot' ]
    [ , [ @ftp_address = ] 'ftp_address' ]
    [ , [ @ftp_port= ] ftp_port ]
    [ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
    [ , [ @ftp_login = ] 'ftp_login' ]
    [ , [ @ftp_password = ] 'ftp_password' ]
    [ , [ @allow_dts = ] 'allow_dts' ]
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
    [ , [ @conflict_policy = ] 'conflict_policy' ]
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @queue_type = ] 'queue_type' ]
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
    [ , [ @logreader_job_name = ] 'logreader_agent_name' ]
    [ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
    [ , [ @publisher = ] 'publisher' ] 
    [ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]
    [ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]
    [ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]
    [ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]
    [ , [ @p2p_originator_id = ] p2p_originator_id
    [ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'
    [ , [ @allow_partition_switch = ] 'allow_partition_switch'
    [ , [ @replicate_partition_switch = ]'replicate_partition_switch'

Arguments

  • [ @publication=] 'publication'
    Nom de la publication à créer. L'argument publication est de type sysname, sans valeur par défaut. Le nom doit être unique dans la base de données.

  • [ @taskid=] taskid
    Pris en charge uniquement pour la compatibilité descendante ; utilisez sp_addpublication_snapshot (Transact-SQL).

  • [ @restricted=] 'restricted'
    Pris en charge uniquement pour la compatibilité descendante ; utilisez default_access.

  • [ @sync_method=] 'sync_method**'**
    Mode de synchronisation. L'argument sync_method est de type nvarchar(13) et peut avoir l'une des valeurs suivantes.

    Valeur

    Description

    native

    Produit une copie en bloc en mode natif de toutes les tables. Non pris en charge pour les serveurs de publication Oracle.

    character

    Produit une copie en bloc en mode caractère de toutes les tables. Pour un serveur de publication Oracle, character n'est valide que pour la réplication d'instantané.

    concurrent

    Produit une copie en bloc en mode natif de toutes les tables, mais ne verrouille pas les tables au cours de l'instantané. Pris en charge uniquement pour les publications transactionnelles. Non pris en charge pour les serveurs de publication Oracle.

    concurrent_c

    Produit une copie en bloc en mode caractère de toutes les tables, mais ne verrouille pas les tables au cours de l'instantané. Pris en charge uniquement pour les publications transactionnelles.

    database snapshot

    Produit une copie en bloc en mode natif de toutes les tables à partir d'un instantané de base de données. Cette option nécessite SQL Server Enterprise.

    database snapshot character

    Produit une copie en bloc en mode caractère de toutes les tables à partir d'un instantané de base de données. Cette option nécessite SQL Server Enterprise.

    NULL (valeur par défaut)

    Prend la valeur par défaut de native pour les serveurs de publication Microsoft SQL Server. Pour les serveurs de publication non-SQL Server, prend la valeur par défaut character lorsque la valeur de repl_freq est définie sur Snapshot ; pour tous les autres cas, prend la valeur par défaut concurrent_c.

  • [ @repl_freq=] 'repl_freq'
    Type de la fréquence de réplication. L'argument repl_freq est de type nvarchar(10) et peut avoir une des valeurs suivantes.

    Valeur

    Description

    continuous (par défaut)

    Le serveur de publication fournit la sortie de toutes les transactions enregistrées dans le journal. Pour les serveurs de publication non-SQL Server, ceci nécessite que la valeur de sync_method soit définie sur concurrent_c.

    snapshot

    Le serveur de publication fournit uniquement les événements de synchronisation planifiés. Pour les serveurs de publication non-SQL Server, ceci nécessite que sync_method soit défini à character.

  • [ @description=] 'description'
    Description facultative de la publication. L'argument description est de type nvarchar(255), avec NULL comme valeur par défaut.

  • [ @status=] 'status'
    Indique si les données de publication sont disponibles. L'argument status est de type nvarchar(8) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    active

    Les données de publication sont disponibles immédiatement pour les Abonnés.

    inactive (par défaut)

    Les données de la publication ne sont pas disponibles pour les Abonnés lors de la première création de la publication (ils peuvent s'abonner, mais les abonnements ne sont pas traités).

    Non pris en charge pour les serveurs de publication Oracle.

  • [ @independent_agent=] 'independent_agent'
    Indique s'il existe un Agent de distribution autonome pour cette publication. L'argument independent_agent est de type nvarchar(5), avec FALSE comme valeur par défaut. Une valeur true indique qu'il existe un Agent de distribution autonome pour cette publication. Si la valeur est false, la publication utilise un Agent de distribution partagé, et il y a un seul Agent partagé pour chaque paire de base de données de publication/de base de données abonné.

  • [ @immediate_sync=] 'immediate_synchronization'
    Indique si les fichiers de synchronisation de la publication sont créés chaque fois que l'Agent d'instantané est exécuté. L'argument immediate_synchronization est de type nvarchar(5), avec FALSE comme valeur par défaut. Une valeur true indique que les fichiers de synchronisation sont créés ou recréés à chaque exécution de l'Agent d'instantané. Les Abonnés peuvent obtenir les fichiers de synchronisation immédiatement si l'Agent d'instantané a fini de s'exécuter avant la création de l'abonnement. Les nouveaux abonnements obtiennent les fichiers de synchronisation les plus récents, générés lors de la dernière exécution de l'Agent d'instantané. L'argument independent_agent doit avoir la valeur true pour que immediate_synchronization soit défini sur true. Une valeur false indique que les fichiers de synchronisation sont créés seulement s'il y a de nouveaux abonnements. Vous devez appeler la procédure sp_addsubscription pour chaque abonnement lorsque vous ajoutez un nouvel article dans une publication existante de manière incrémentielle. Les abonnés ne peuvent recevoir les fichiers de synchronisation après s'être abonnés qu'après le lancement et l'exécution des Agents d'instantané.

  • [ @enabled_for_internet=] 'enabled_for_internet'
    Indique si la publication est activée pour Internet et détermine si le protocole de transfert de fichiers (FTP) peut être utilisé pour le transfert des fichiers d'instantané à un Abonné. L'argument enabled_for_internet est de type nvarchar(5), avec FALSE comme valeur par défaut. Si l'argument a pour valeur true, les fichiers de synchronisation de la publication sont placés dans le répertoire C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp. L'utilisateur doit créer le répertoire FTP.

  • [ @allow_push=] 'allow_push'
    Indique si des abonnements par émission de données peuvent être créés pour une publication donnée. L'argument allow_push est de type nvarchar(5), avec TRUE comme valeur par défaut. Cette valeur autorise des abonnements par émission de données pour cette publication.

  • [ @allow_pull=] 'allow_pull'
    Indique s'il est possible de créer des abonnements par extraction pour la publication donnée. L'argument allow_pull est de type nvarchar(5), avec FALSE comme valeur par défaut. Une valeur false indique que des abonnements par extraction de données (pull) ne sont pas autorisés pour la publication.

  • [ @allow_anonymous=] 'allow_anonymous'
    Indique s'il est possible de créer des abonnements anonymes pour la publication donnée. L'argument allow_anonymous est de type nvarchar(5), avec FALSE comme valeur par défaut. Si la valeur est true, la valeur de immediate_synchronization doit être également définie sur true. Une valeur false indique que des abonnements anonymes ne sont pas autorisés pour la publication.

  • [ @allow_sync_tran=] 'allow_sync_tran'
    Indique si les abonnements à mise à jour immédiate sont autorisés pour la publication. L'argument allow_sync_tran est de type nvarchar(5), avec FALSE comme valeur par défaut. La valeur truen'est pas prise en charge pour les serveurs de publication Oracle.

  • [ @autogen_sync_procs=] 'autogen_sync_procs'
    Indique si la procédure stockée de synchronisation pour la mise à jour des abonnements est générée par le serveur de publication. L'argument autogen_sync_procs est de type nvarchar(5) et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    true

    Défini automatiquement lorsque la mise à jour des abonnements est activée.

    false

    Défini automatiquement lorsque la mise à jour des abonnements n'est pas activée, ou pour les serveurs de publication Oracle.

    NULL (valeur par défaut)

    Prend la valeur par défaut true lorsque la mise à jour des abonnements est activée, et la valeur false lorsqu'elle n'est pas activée.

    Notes

    La valeur fournie par l'utilisateur pour autogen_sync_procssera remplacée en fonction des valeurs spécifiées pour allow_queued_tran et allow_sync_tran.

  • [ @retention=] retention
    Période de rétention, exprimée en heures, pour l'activité d'abonnement. L'argument retention est de type int, avec une valeur par défaut de 336 heures. Si un abonnement reste inactif durant la période de rétention, il arrive à expiration et est supprimé. La valeur peut être supérieure à la période de rétention maximale de la base de données de distribution utilisée par le serveur de publication. Si la valeur est égale à 0, les abonnements connus à la publication n'expirent jamais et ne sont jamais supprimés par l'Agent de nettoyage des abonnements expirés.

  • [ @allow_queued_tran= ] 'allow_queued_updating'
    Active ou désactive la file d'attente des modifications sur l'Abonné jusqu'à ce que celles-ci soient appliquées au niveau du serveur de publication. L'argument allow_queued_updating est de type nvarchar(5), avec FALSE comme valeur par défaut. Si la valeur est false, les modifications sur l'Abonné ne sont pas mises en file d'attente. truen'est pas acceptée pour les serveurs de publication Oracle.

  • [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder'
    Indique si les fichiers d'instantané sont stockés dans le dossier par défaut. L'argument snapshot_in_default_folder est de type nvarchar(5), avec TRUE comme valeur par défaut. Si la valeur est true, les fichiers d'instantané se trouvent dans le dossier par défaut. Si la valeur est false, les fichiers d'instantané sont stockés dans le dossier de remplacement spécifié par alternate_snapshot_folder. Les emplacements de remplacement peuvent se trouver sur un autre serveur, un lecteur réseau ou un support amovible (tel qu'un CD-ROM ou des disques amovibles). Vous pouvez également enregistrer les fichiers d'instantané sur un site FTP, pour qu'ils soient récupérés ultérieurement par l'Abonné. Notez que ce paramètre peut avoir la valeur « true » et conservé un emplacement défini dans le paramètre @alt_snapshot_folder. Cette combinaison indique que les fichiers d'instantané sont stockés dans les emplacements par défaut et de remplacement.

  • [ @alt_snapshot_folder= ] 'alternate_snapshot_folder'
    Spécifie l'emplacement du dossier secondaire de l'instantané. L'argument alternate_snapshot_folder est de type nvarchar(255), avec NULL comme valeur par défaut.

  • [ @pre_snapshot_script= ] 'pre_snapshot_script'
    Spécifie un pointeur vers l'emplacement d'un fichier .sql. L'argument pre_snapshot_script est de type nvarchar(255), avec NULL comme valeur par défaut. L'Agent de distribution exécute le script de pré-instantané avant l'exécution des scripts d'objet répliqué, lors de l'application d'un instantané sur un Abonné. Le script est exécuté dans le contexte de sécurité utilisé par l'Agent de distribution lors de sa connexion à la base de données d'abonnement.

  • [ @post_snapshot_script= ] 'post_snapshot_script'
    Spécifie un pointeur vers l'emplacement d'un fichier .sql. L'argument post_snapshot_script est de type nvarchar(255), avec NULL comme valeur par défaut. L'Agent de distribution exécute le script de post-instantané après que tous les autres scripts et données d'objet répliqué ont été appliqués lors d'une synchronisation initiale. Le script est exécuté dans le contexte de sécurité utilisé par l'Agent de distribution lors de sa connexion à la base de données d'abonnement.

  • [ @compress_snapshot= ] 'compress_snapshot'
    Indique que l'instantané écrit à l'emplacement @alt_snapshot_folder doit être compressé au format Microsoft CAB. L'argument compress_snapshot est de type nvarchar(5), avec FALSE comme valeur par défaut. La valeur false indique que l'instantané ne sera pas compressé et la valeur true qu'il sera compressé. Les fichiers d'instantané de plus de 2 Go (gigaoctets) ne peuvent pas être compressés. Les fichiers d'instantané compressés sont décompressés là où s'exécute l'Agent de distribution ; les abonnements par extraction de données (pull) sont en général utilisés avec des instantanés compressés et les fichiers sont décompressés sur l'Abonné. L'instantané qui se trouve dans le dossier par défaut ne peut pas être compressé.

  • [ @ftp_address = ] 'ftp_address'
    Adresse réseau du service FTP pour le serveur de distribution. L'argument ftp_address est de type sysname, avec NULL comme valeur par défaut. Indique l'emplacement à partir duquel l'Agent de distribution ou l'Agent de fusion d'un abonné peut extraire les fichiers d'instantané de la publication. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir sa propre valeur pour ftp_address. La publication doit prendre en charge la propagation des instantanés à l'aide du protocole FTP.

  • [ @ftp_port= ] ftp_port
    Numéro de port du service FTP du serveur de distribution. ftp_port est de type int, avec 21 comme valeur par défaut. Spécifie l'emplacement à partir duquel l'Agent de distribution ou l'Agent de fusion d'un Abonné peut extraire les fichiers d'instantané de la publication. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir sa propre valeur pour ftp_port.

  • [ @ftp_subdirectory = ] 'ftp_subdirectory'
    Indique l'emplacement à partir duquel l'Agent de distribution ou l'Agent de fusion de l'Abonné peut extraire les fichiers d'instantané si la publication prend en charge la propagation d'instantanés par FTP. L'argument ftp_subdirectory est de type nvarchar(255), avec NULL comme valeur par défaut. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir sa propre valeur pour ftp_subdirctory ou, si une valeur NULL est spécifiée, elle peut n'être associée à aucun sous-répertoire.

  • [ @ftp_login = ] 'ftp_login'
    Nom d'utilisateur utilisé pour la connexion au service FTP. L'argument ftp_login est de type sysname, avec ANONYMOUS comme valeur par défaut.

  • [ @ftp_password = ] 'ftp_password'
    Mot de passe d'utilisateur utilisé pour la connexion au service FTP. L'argument ftp_password est de type sysname, avec NULL comme valeur par défaut.

  • [ @allow_dts = ] 'allow_dts'
    Indique que la publication autorise les transformations de données. Vous pouvez spécifier un package DTS lors de la création d'un abonnement. L'argument allow_transformable_subscriptions est de type nvarchar(5), avec la valeur FALSE par défaut qui n'autorise pas les transformations DTS. Si allow_dts a pour valeur true, la valeur de sync_method doit être character ou concurrent_c.

    truen'est pas pris en charge pour les serveurs de publication Oracle.

  • [ @allow_subscription_copy = ] 'allow_subscription_copy'
    Active ou désactive la possibilité de copier les bases de données d'abonnement qui sont abonnées à la publication. L'argument allow_subscription_copy est de typenvarchar(5), avec FALSE comme valeur par défaut.

  • [ @conflict_policy = ] 'conflict_policy'
    Indique la stratégie de résolution des conflits à suivre lorsque l'option d'abonné avec mise à jour en attente est utilisée. L'argument conflict_policy est de type nvarchar(100), avec NULL comme valeur par défaut, et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    pub wins

    Le serveur de publication remporte le conflit.

    sub reinit

    Réinitialise l'abonnement.

    sub wins

    L'Abonné remporte le conflit.

    NULL (valeur par défaut)

    Si la valeur est NULL et qu'il s'agit d'une publication d'instantané, la stratégie par défaut devient sub reinit. Si la valeur est NULL et qu'il ne s'agit pas d'une publication d'instantané, la stratégie par défaut devient pub wins.

    Non pris en charge pour les serveurs de publication Oracle.

  • [ @centralized_conflicts = ] 'centralized_conflicts'
    Indique si les enregistrements en conflit sont stockés sur le serveur de publication. L'argument centralized_conflicts est de type nvarchar(5), avec TRUE comme valeur par défaut. Si la valeur affectée à l'argument est true, les enregistrements en conflit sont stockés sur le serveur de publication. Si l'argument a pour valeur false, l'enregistrement d'un conflit est stocké à la fois sur le serveur de publication et sur l'abonné ayant généré le conflit. Non pris en charge pour les serveurs de publication Oracle.

  • [ @conflict_retention = ] conflict_retention
    Spécifie la durée de rétention des conflits en jours. Il s'agit de la période pendant laquelle les métadonnées en conflit sont stockées pour la réplication transactionnelle d'égal à égal et les abonnements mis à jour en attente. conflict_retention est de type int, avec 14 comme valeur par défaut. Non pris en charge pour les serveurs de publication Oracle.

  • [ @queue_type = ] 'queue_type'
    Indique le type de file d'attente utilisée. L'argument queue_type est de type nvarchar(10), avec NULL comme valeur par défaut, et peut prendre l'une des valeurs suivantes.

    Valeur

    Description

    sql

    Utilise SQL Server pour stocker les transactions.

    NULL (valeur par défaut)

    Prend par défaut la valeur sql, qui spécifie l'utilisation de SQL Server pour stocker les transactions.

    Notes

    La prise en charge de l'utilisation de Microsoft Message Queuing a été arrêtée. Si vous spécifiez la valeur msmq, vous recevrez un avertissement et la réplication définira automatiquement cette valeur à sql.

    Non pris en charge pour les serveurs de publication Oracle.

  • [ @add_to_active_directory = ] 'add_to_active_directory'
    Ce paramètre est déconseillé et n'est pris en charge que pour la compatibilité descendante des scripts. Vous ne pouvez plus ajouter d'informations de publication dans Microsoft Active Directory.

  • [ @logreader_job_name = ] 'logreader_agent_name'
    Nom d'un travail d'agent existant. L'argument logreader_agent_name est de type sysname, avec NULL comme valeur par défaut. Ce paramètre n'est spécifié que lorsque l'Agent de lecture du journal doit utiliser un travail existant et non pas un travail nouvellement créé.

  • [ @qreader_job_name = ] 'queue_reader_agent_name'
    Nom d'un travail d'agent existant. L'argument queue_reader_agent_name est de type sysname, avec NULL comme valeur par défaut. Ce paramètre n'est spécifié que lorsque l'Agent de lecture de file d'attente doit utiliser un travail existant et non pas un travail nouvellement créé.

  • [ @publisher = ] 'publisher'
    Spécifie un serveur de publication non-SQL Server. L'argument publisher est de type sysname, avec NULL comme valeur par défaut.

    Notes

    publisher ne doit pas être utilisé pour ajouter une publication sur un serveur de publication SQL Server.

  • [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup'
    Spécifie si les abonnés peuvent initialiser un abonnement pour cette publication à partir d'une sauvegarde plutôt que d'un instantané initial. L'argument allow_initialize_from_backup est de type nvarchar(5) et peut prendre l'une de ces valeurs :

    Valeur

    Description

    true

    Autorise l'initialisation à partir d'une sauvegarde.

    false

    Interdit l'initialisation à partir d'une sauvegarde.

    NULL (valeur par défaut)

    La valeur par défaut est true pour une publication dans une topologie de réplication d'égal à égal, et false pour toutes les autres publications.

    Pour plus d'informations, consultez Initialisation d'un abonnement transactionnel sans capture instantanée.

  • [ @replicate_ddl = ] replicate_ddl
    Indique si la réplication de schéma est prise en charge pour la publication. L'argument replicate_ddl est de type int, avec une valeur par défaut de 1 pour les serveurs de publication SQL Server, et de 0 pour les serveurs de publication non-SQL Server. 1 indique que les instructions DDL (Data Definition Language) exécutées sur le serveur de publication sont répliquées, et 0 qu'elles ne sont pas répliquées. La réplication de schéma n'est pas prise en charge pour les serveurs de publication Oracle. Pour plus d'informations, consultez Modification du schéma dans les bases de données de publication.

    Le paramètre @replicate_ddl est respecté lorsqu'une instruction DDL ajoute une colonne. Le paramètre @replicate_ddl est ignoré lorsqu'une instruction DDL modifie ou supprime une colonne pour les raisons suivantes.

    • Si une colonne est supprimée, sysarticlecolumns doit être mis à jour pour empêcher les nouvelles instructions DML d'inclure la colonne supprimée, ce qui provoquerait l'échec de l'agent de distribution. Le paramètre @replicate_ddl est ignoré, car la réplication doit toujours répliquer la modification de schéma.

    • Si une colonne est modifiée, le type de données source ou le paramètre d'acceptation des valeurs Null peut avoir changé, provoquant des instructions DML contenant une valeur qui n'est peut-être pas compatible avec la table sur l'Abonné. Ces instructions DML peuvent provoquer l'échec de l'agent de distribution. Le paramètre @replicate_ddl est ignoré, car la réplication doit toujours répliquer la modification de schéma.

    • Si une instruction DDL ajoute une colonne, sysarticlecolumns n'inclut pas la nouvelle colonne. Les instructions DML n'essayeront pas de répliquer les données pour la nouvelle colonne. Le paramètre est respecté, car la réplication ou la non réplication de l'instruction DDL est acceptable.

  • [ @enabled_for_p2p = ] 'enabled_for_p2p'
    Autorise l'utilisation de la publication dans une topologie de réplication d'égal à égal. L'argument enabled_for_p2p est de type nvarchar(5), avec FALSE comme valeur par défaut. La valeur true indique que la publication prend en charge la réplication d'égal à égal. Lors de la définition de la valeur de enabled_for_p2p sur true, certaines restrictions s'appliquent :

    • La valeur de allow_anonymous doit être false.

    • La valeur de allow_dts doit être false.

    • La valeur de allow_initialize_from_backup doit être true.

    • La valeur de allow_queued_tran doit être false.

    • La valeur de allow_sync_tran doit être false.

    • La valeur de conflict_policy doit être false.

    • La valeur de independent_agent doit être true.

    • La valeur de repl_freq doit être continuous.

    • La valeur de replicate_ddl doit être 1.

    Pour plus d'informations, consultez Réplication transactionnelle d'égal à égal.

  • [ @publish_local_changes_only = ] 'publish_local_changes_only'
    Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

  • [ @enabled_for_het_sub= ] 'enabled_for_het_sub'
    Permet à la publication de prendre en charge des Abonnés non-SQL Server. L'argument enabled_for_het_sub est de type nvarchar(5), avec FALSE comme valeur par défaut. Une valeur true indique que la publication prend en charge les Abonnés non-SQL Server. Lorsque la valeur de enabled_for_het_sub est définie sur true, certaines restrictions s'appliquent :

    • allow_initialize_from_backup doit être false.

    • allow_push doit être true.

    • allow_queued_tran doit être false.

    • allow_subscription_copy doit être false.

    • allow_sync_tran doit être false.

    • autogen_sync_procs doit être false.

    • conflict_policy doit être NULL.

    • enabled_for_internet doit être false.

    • enabled_for_p2p doit être false.

    • ftp_address doit être NULL.

    • ftp_subdirectory doit être NULL.

    • ftp_password doit être NULL.

    • pre_snapshot_script doit être NULL.

    • post_snapshot_script doit être NULL.

    • replicate_ddl doit être 0.

    • qreader_job_name doit être NULL.

    • queue_type doit être NULL.

    • sync_method ne peut être ni du type native ni du type concurrent.

    Pour plus d'informations, consultez Abonnés non-SQL Server.

  • [ @p2p_conflictdetection= ] 'p2p_conflictdetection'
    Autorise l'Agent de distribution à détecter les conflits si la publication est activée pour la réplication d'égal à égal. L'argument p2p_conflictdetection est de type nvarchar(5), avec TRUE comme valeur par défaut. Pour plus d'informations, consultez Détection de conflit dans la réplication d'égal à égal.

  • [ @p2p_originator_id= ] p2p_originator_id
    Spécifie un ID pour un nœud dans une topologie d'égal à égal. L'argument p2p_originator_id est de type int, avec NULL comme valeur par défaut. Cet ID est utilisé pour la détection de conflit si p2p_conflictdetection a la valeur TRUE. Spécifiez un ID positif différent de zéro qui n'a jamais été utilisé dans la topologie. Pour obtenir une liste des ID qui ont déjà été utilisés, exécutez sp_help_peerconflictdetection.

  • [ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
    Détermine si l'Agent de distribution continue à traiter les modifications une fois qu'un conflit a été détecté. L'argument p2p_continue_onconflict est de type nvarchar(5) avec FALSE comme valeur par défaut.

    AttentionAttention

    Nous vous recommandons de conserver la valeur par défaut FALSE. Lorsque cette option a la valeur TRUE, l'Agent de distribution tente de converger les données dans la topologie en appliquant la ligne en conflit du nœud doté de l'ID d'appelant le plus élevé. Cette méthode ne garantit pas la convergence. Vous devez vous assurer que la topologie est cohérente après la détection d'un conflit. Pour plus d'informations, consultez « Gestion des conflits » dans Détection de conflit dans la réplication d'égal à égal.

  • [ @allow_partition_switch= ] 'allow_partition_switch'
    Spécifie si les instructions ALTER TABLE…SWITCH peuvent être exécutées sur la base de données publiée. allow_partition_switch est de type nvarchar(5), avec FALSE comme valeur par défaut. Pour plus d'informations, consultez Réplication de tables et d'index partitionnés.

  • [ @replicate_partition_switch= ] 'replicate_partition_switch'
    Spécifie si les instructions ALTER TABLE…SWITCH exécutées sur la base de données publiée doivent être répliquées sur les Abonnés. replicate_partition_switch est de type nvarchar(5), avec FALSE comme valeur par défaut. Cette option est valide uniquement si allow_partition_switch a la valeur TRUE.

Valeurs des codes renvoyés

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

Notes

sp_addpublication est utilisée lors des réplications d'instantané et transactionnelle.

S'il existe plusieurs publications à proclamer le même objet de base de données, seules les publications pour lesquelles replicate_ddl a la valeur 1 répliqueront les instructions ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION et ALTER TRIGGER DDL. Cependant, une instruction ALTER TABLE DROP COLUMN DDL sera répliquée par toutes les publications qui publient la colonne supprimée.

Si la réplication DDL est activée (replicate_ddl = 1) pour une publication alors que vous voulez apporter des modifications DDL non répliquées à cette publication, exécutez d'abord sp_changepublication pour attribuer à replicate_ddl la valeur 0. Après l'émission des instructions DDL non répliquées, sp_changepublication peut être exécuté de nouveau pour réactiver la réplication DDL.

Exemple

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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".

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

Autorisations

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