Partage via


sp_addpublication (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

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

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @publication = ] N’publication'

Nom de la composition à créer. @publication est sysname, sans valeur par défaut. Le nom doit être unique au sein de la base de données.

[ @taskid = ] taskid

Prise en charge uniquement pour la compatibilité descendante ; utilisez sp_addpublication_snapshot (Transact-SQL).

[ @restricted = ] N’restricted'

Prise en charge uniquement pour la compatibilité descendante ; utiliser default_access.

[ @sync_method = ] N’sync_method'

Mode de synchronisation. @sync_method est nvarchar(40) et peut être l’une des valeurs suivantes.

Valeur Description
native 1 Produit une copie par bloc en mode natif de toutes les tables.
character Produit une copie par bloc en mode caractère de toutes les tables. Remarque : Pour un serveur de publication Oracle, character est valide uniquement pour la réplication d’instantanés.
concurrent 1 Produit la sortie du programme de copie en bloc en mode natif de toutes les tables, mais ne verrouille pas les tables pendant l’instantané. Pris en charge uniquement pour les publications transactionnelles.
concurrent_c Produit la sortie du programme de copie en bloc en mode caractère de toutes les tables, mais ne verrouille pas les tables pendant 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. Les instantanés de base de données ne sont pas disponibles dans chaque édition de SQL Server. Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Éditions et fonctionnalités prises en charge de SQL Server 2022.
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. Les instantanés de base de données ne sont pas disponibles dans chaque édition de SQL Server. Pour obtenir la liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Éditions et fonctionnalités prises en charge de SQL Server 2022.
NULL (valeur par défaut) native Valeur par défaut pour les serveurs de publication SQL Server. Pour les serveurs de publication non-SQL Server, la valeur par défaut character de @repl_freq est Snapshot et concurrent_c pour tous les autres cas.

1 Non pris en charge pour les serveurs de publication Oracle.

[ @repl_freq = ] N’repl_freq'

Le type de fréquence de réplication, @repl_freq est nvarchar(10) et peut être l’une des valeurs suivantes.

Valeur Description
continuous (valeur par défaut) L’agent de lecture du journal s’exécute en continu. Pour les serveurs de publication non-SQL Server, cela nécessite que @sync_method être défini sur concurrent_c.
snapshot L’agent de lecture du journal s’exécute selon une planification. Pour les serveurs de publication non-SQL Server, cela nécessite que @sync_method être défini sur character.

[ @description = ] N’description'

Description facultative de la publication. @description est nvarchar(255), avec la valeur par défaut NULL.

[ @status = ] N’status'

Indique si les données de publication sont disponibles. @status est nvarchar(8) et peut être l’une des valeurs suivantes.

Valeur Description
active Les données de publication sont disponibles immédiatement pour les Abonnés.
inactive (valeur par défaut) Les données de publication ne sont pas disponibles pour les Abonnés lorsque la publication est créée pour la première fois (elles peuvent s’abonner, mais les abonnements ne sont pas traités).

Non pris en charge pour les serveurs de publication Oracle.

[ @independent_agent = ] N’independent_agent'

Spécifie s’il existe une Agent de distribution autonome pour cette publication. @independent_agent est nvarchar(5), avec la valeur par défaut false.

  • S’il trueexiste un Agent de distribution autonome pour cette publication.
  • Si false, la publication utilise un Agent de distribution partagé, et chaque paire de base de données de base de données publisher/Abonné a un seul agent partagé.

[ @immediate_sync = ] N’immediate_sync'

Indique si les fichiers de synchronisation de la publication sont créés chaque fois que l'Agent d'instantané est exécuté. @immediate_sync est nvarchar(5), avec la valeur par défaut false.

Si true, les fichiers de synchronisation sont créés ou recréé chaque fois que l’Agent d’instantané s’exécute. 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é. @independent_agent doit être true pour que @immediate_sync soit true. Si false, les fichiers de synchronisation sont créés uniquement s’il existe de nouveaux abonnements. Vous devez appeler sp_addsubscription pour chaque abonnement lorsque vous ajoutez de façon incrémentielle un nouvel article à une publication existante. Les abonnés ne peuvent pas recevoir les fichiers de synchronisation après l’abonnement tant que les agents d’instantanés ne sont pas démarrés et terminés.

[ @enabled_for_internet = ] N’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é. @enabled_for_internet est nvarchar(5), avec la valeur par défaut false. Si true, les fichiers de synchronisation de la publication sont placés dans le C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp répertoire. L’utilisateur doit créer le Ftp répertoire.

[ @allow_push = ] N’allow_push'

Indique si des abonnements par envoi de données (push) peuvent être créés pour la publication concernée. @allow_push est nvarchar(5), avec une valeur par défaut true, qui autorise les abonnements push sur la publication.

[ @allow_pull = ] N’allow_pull'

Indique si des abonnements par extraction de données (pull) peuvent être créés pour la publication concernée. @allow_pull est nvarchar(5), avec la valeur par défaut false. Si false, les abonnements par extraction ne sont pas autorisés sur la publication.

[ @allow_anonymous = ] N’allow_anonymous'

Indique si des abonnements anonymes peuvent être créés pour la publication concernée. @allow_anonymous est nvarchar(5), avec la valeur par défaut false. Si true, @immediate_sync doit également être défini sur true. Si falseles abonnements anonymes ne sont pas autorisés sur la publication.

[ @allow_sync_tran = ] N’allow_sync_tran'

Indique si les abonnements de mise à jour immédiate sont autorisés sur la publication. @allow_sync_tran est nvarchar(5), avec la valeur par défaut false. true n’est pas pris en charge pour les serveurs de publication Oracle.

[ @autogen_sync_procs = ] N’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. @autogen_sync_procs est nvarchar(5) et peut être l’une des valeurs suivantes.

Valeur Description
true Défini automatiquement lorsque la mise à jour des abonnements est activée.
false Définissez automatiquement lorsque la mise à jour des abonnements n’est pas activée ou pour les serveurs de publication Oracle.
NULL (valeur par défaut) La valeur par défaut est true activée lors de la mise à jour des abonnements et false lors de la mise à jour des abonnements n’est pas activée.

Remarque

La valeur fournie par l’utilisateur pour @autogen_sync_procsest substituée en fonction des valeurs spécifiées pour @allow_queued_tran et @allow_sync_tran.

[ @retention = ] rétention

Période de rétention en heures pour l’activité de l’abonnement. @retention est int, avec la valeur par défaut 336. Si un abonnement n’est pas actif dans la période de rétention, il expire 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 0les abonnements connus à la publication n’expireront jamais et seront supprimés par l’agent de nettoyage d’abonnement expiré.

[ @allow_queued_tran = ] N’allow_queued_tran'

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. @allow_queued_tran est nvarchar(5), avec la valeur par défaut false.

  • Si false, les modifications apportées à l’Abonné ne sont pas mises en file d’attente.
  • true n’est pas pris en charge pour les serveurs de publication Oracle.

[ @snapshot_in_defaultfolder = ] N’snapshot_in_defaultfolder'

Indique si les fichiers d'instantané sont stockés dans le dossier par défaut. @snapshot_in_defaultfolder est nvarchar(5), avec la valeur par défaut true.

  • Si true, les fichiers d’instantané se trouvent dans le dossier par défaut.
  • Si false, les fichiers d’instantané ont été stockés dans l’autre emplacement spécifié par @alt_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é. Ce paramètre peut être vrai et avoir toujours un emplacement 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 secondaires.

[ @alt_snapshot_folder = ] N’alt_snapshot_folder'

Indique l'emplacement du dossier de remplacement pour l'instantané. @alt_snapshot_folder est nvarchar(255), avec la valeur par défaut NULL.

[ @pre_snapshot_script = ] N’pre_snapshot_script'

Spécifie un pointeur vers un emplacement de fichier .sql . @pre_snapshot_script est nvarchar(255), avec la valeur par défaut NULL. 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 = ] N’post_snapshot_script'

Spécifie un pointeur vers un .sql emplacement de fichier. @post_snapshot_script est nvarchar(255), avec la valeur par défaut NULL. 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 = ] N’compress_snapshot'

Spécifie que l’instantané écrit à l’emplacement @alt_snapshot_folder doit être compressé dans le format CAB Microsoft. @compress_snapshot est nvarchar(5), avec la valeur par défaut false.

  • false spécifie que l’instantané n’est pas compressé.
  • true spécifie que l’instantané est compressé.

Les fichiers d’instantanés dont la taille est supérieure à 2 gigaoctets (Go) 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é dans le dossier par défaut ne peut pas être compressé.

[ @ftp_address = ] N’ftp_address'

Adresse réseau du service FTP du serveur de distribution. @ftp_address est sysname, avec la valeur par défaut NULL. 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 une @ftp_address différente. 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 pour le serveur de distribution. @ftp_port est int, avec la valeur par défaut 21. 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 @ftp_port.

[ @ftp_subdirectory = ] N’ftp_subdirectory'

Spécifie l’emplacement où les fichiers d’instantanés sont disponibles pour la Agent de distribution ou le Agent de fusion de l’abonné à récupérer si la publication prend en charge la propagation des instantanés à l’aide de FTP. @ftp_subdirectory est nvarchar(255), avec la valeur par défaut NULL. Étant donné que cette propriété est stockée pour chaque publication, chaque publication peut avoir sa propre @ftp_subdirctory ou choisir d’avoir aucun sous-répertoire, indiqué avec une NULL valeur.

[ @ftp_login = ] N’ftp_login'

Nom d'utilisateur, utilisé pour la connexion au service FTP. @ftp_login est sysname, avec la valeur par défaut anonymous.

[ @ftp_password = ] N’ftp_password'

Mot de passe utilisateur utilisé pour se connecter au service FTP. @ftp_password est sysname, avec la valeur par défaut NULL.

[ @allow_dts = ] N’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. @allow_dts est nvarchar(5), avec une valeur par défaut false, qui n’autorise pas les transformations DTS. Lorsque @allow_dts a la valeur true, @sync_method doit être défini sur l’une ou l’autre character .concurrent_c

true n’est pas pris en charge pour les serveurs de publication Oracle.

[ @allow_subscription_copy = ] N’allow_subscription_copy'

Active ou désactive la possibilité de copier les bases de données d'abonnement qui sont abonnées à la publication. @allow_subscription_copy est nvarchar(5), avec la valeur par défaut false.

[ @conflict_policy = ] N’conflict_policy'

Spécifie la stratégie de résolution de conflits à suivre lorsque l'option d'abonné avec mise à jour en attente est utilisée. @conflict_policy est nvarchar(100) et peut être l’une des valeurs suivantes.

Valeur Description
pub wins Le serveur de publication remporte le conflit.
sub reinit Réinitialisez l'abonnement.
sub wins L'Abonné remporte le conflit.
NULL (valeur par défaut) Si NULL, et la publication est une publication d’instantané, la stratégie par défaut devient sub reinit. Si NULL et la publication n’est pas une publication d’instantané, la valeur par défaut devient pub wins.

Non pris en charge pour les serveurs de publication Oracle.

[ @centralized_conflicts = ] N’centralized_conflicts'

Spécifie si les enregistrements en conflit sont stockés sur le serveur de publication. @centralized_conflicts est nvarchar(5), avec la valeur par défaut NULL.

  • Si true, les enregistrements en conflit sont stockés sur le serveur de publication.
  • Si false, les enregistrements en conflit sont stockés à la fois sur le serveur de publication et sur l’abonné qui a provoqué 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 int, avec la valeur par défaut 14.

Non pris en charge pour les serveurs de publication Oracle.

[ @queue_type = ] N’queue_type'

Spécifie le type de file d'attente utilisé. @queue_type est nvarchar(10) et peut être l’une de ces valeurs.

Valeur Description
sql Utilisez SQL Server pour stocker des transactions.
NULL (valeur par défaut) sqlPar défaut, qui spécifie d’utiliser SQL Server pour stocker des transactions.

Remarque

La prise en charge de l’utilisation de Microsoft Message Queuing est interrompue. La spécification d’une valeur d’avertissement msmq entraîne un avertissement et la réplication définit automatiquement la valeur sqlsur .

Non pris en charge pour les serveurs de publication Oracle.

[ @add_to_active_directory = ] N’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 à Microsoft Active Directory.

[ @logreader_job_name = ] N’logreader_job_name'

Nom d’un travail d’agent existant. @logreader_job_name est sysname, avec la valeur par défaut NULL. Ce paramètre n’est spécifié que lorsque l’Agent de lecture du journal utilise un travail existant au lieu d’un nouveau travail en cours de création.

[ @qreader_job_name = ] N’qreader_job_name'

Nom d’un travail d’agent existant. @qreader_job_name est sysname, avec la valeur par défaut NULL. Ce paramètre est spécifié uniquement lorsque l’Agent de lecture de file d’attente utilise un travail existant au lieu d’un nouveau travail en cours de création.

[ @publisher = ] N’publisher'

Spécifie un serveur de publication non-SQL Server. @publisher est sysname, avec la valeur par défaut NULL.

@publisher ne doit pas être utilisé lors de l’ajout d’une publication à un serveur de publication SQL Server.

[ @allow_initialize_from_backup = ] N’allow_initialize_from_backup'

Indique si les Abonnés peuvent initialiser un abonnement à cette publication à partir d'une sauvegarde plutôt qu'à partir de son instantané initial. @allow_initialize_from_backup est nvarchar(5) et peut être l’une des valeurs suivantes :

Valeur Description
true Autorise l'initialisation à partir d'une sauvegarde.
false Interdit l'initialisation à partir d'une sauvegarde.
NULL (valeur par défaut) true Par défaut, pour une publication dans une topologie de réplication d’égal à égal et false pour toutes les autres publications.

Pour plus d’informations, consultez Initialiser un abonnement transactionnel sans instantané.

Avertissement

Pour éviter les données d’abonné manquantes, lors de l’utilisation sp_addpublication avec @allow_initialize_from_backup = N'true', utilisez @immediate_sync = N'true'toujours .

[ @replicate_ddl = ] replicate_ddl

Précise si la réplication de schéma est prise en charge pour la publication. @replicate_ddl est int, avec une valeur par défaut 1 pour les serveurs de publication SQL Server et 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.
  • 0 indique que les instructions DDL 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 Modifier le 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.

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

  • Lorsqu’une colonne est modifiée, le type de données source ou la possibilité de valeur Null peuvent avoir changé, ce qui entraîne la modification d’instructions DML contenant une valeur qui peut ne pas être compatible avec la table sur l’abonné. Ces instructions DML peuvent entraîner l'échec de l'agent de distribution. Le paramètre @replicate_ddl est ignoré, car la réplication doit toujours répliquer la modification du schéma.

  • Lorsqu’une instruction DDL ajoute une nouvelle colonne, sysarticlecolumns n’inclut pas la nouvelle colonne. Les instructions DML n’essaient pas de répliquer des données pour la nouvelle colonne. Le paramètre est respecté parce que la réplication ou la réplication DDL est acceptable.

[ @enabled_for_p2p = ] N’enabled_for_p2p'

Autorise l'utilisation de la publication dans une topologie de réplication d'égal à égal. @enabled_for_p2p est nvarchar(5), avec la valeur par défaut false. true indique que la publication prend en charge la réplication d’égal à égal. Lorsque vous définissez @enabled_for_p2p truesur , les restrictions suivantes s’appliquent :

  • @allow_anonymous doit être false.
  • @allow_dts doit être false.
  • @allow_initialize_from_backup doit être true.
  • @allow_queued_tran doit être false.
  • @allow_sync_tran doit être false.
  • @conflict_policy doit être false.
  • @independent_agent doit être true.
  • @repl_freq doit être continuous.
  • @replicate_ddl doit être 1.

Pour plus d’informations, consultez Peer-to-Peer - Réplication transactionnelle.

[ @publish_local_changes_only = ] N’publish_local_changes_only'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @enabled_for_het_sub = ] N’enabled_for_het_sub'

Permet à la publication de prendre en charge les abonnés non-SQL Server. @enabled_for_het_sub est nvarchar(5), avec la valeur par défaut false. Valeur de true signifie que la publication prend en charge les abonnés non-SQL Server. Lorsque @enabled_for_het_sub est true, les restrictions suivantes 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 pas être native ou concurrent.

Pour plus d’informations, consultez Non-SQL Server Subscribers.

[ @p2p_conflictdetection = ] N’p2p_conflictdetection'

Autorise l'Agent de distribution à détecter les conflits si la publication est activée pour la réplication d'égal à égal. @p2p_conflictdetection est nvarchar(5), avec la valeur par défaut false. Pour plus d’informations, consultez Peer-to-Peer - Conflict Detection in Peer-to-Peer Replication.

[ @p2p_originator_id = ] p2p_originator_id

Spécifie un ID pour un nœud dans une topologie d'égal à égal. @p2p_originator_id est int, avec la valeur par défaut NULL. Cet ID est utilisé pour la détection de conflit si @p2p_conflictdetection a la valeur TRUE. Spécifiez un ID positif et différent de zéro qui n’a pas été utilisé dans la topologie. Pour obtenir la liste des ID utilisés, exécutez sp_help_peerconflictdetection.

[ @p2p_continue_onconflict = ] N’p2p_continue_onconflict'

Détermine si l'Agent de distribution continue à traiter les modifications lorsqu'un conflit est détecté. @p2p_continue_onconflict est nvarchar(5), avec la valeur par défaut false.

Attention

Nous vous recommandons d’utiliser la valeur par défaut de false. Lorsque cette option est définie truesur , l’Agent de distribution tente de converger les données dans la topologie en appliquant la ligne en conflit à partir du nœud qui est l’ID d’origine 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 Peer-to-Peer - Détection des conflits dans la réplication d’égal à égal.

[ @allow_partition_switch = ] N’allow_partition_switch'

Spécifie si ALTER TABLE...SWITCH les instructions peuvent être exécutées sur la base de données publiée. @allow_partition_switch est nvarchar(5), avec la valeur par défaut false. Pour plus d’informations, consultez Répliquer des tables et des index partitionnés.

[ @replicate_partition_switch = ] N’replicate_partition_switch'

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

[ @allow_drop = ] N’allow_drop'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @p2p_conflictdetection_policy = ] N’p2p_conflictdetection_policy'

S’applique à : SQL Server 2019 (15.x) CU 13 et versions ultérieures.

@p2p_conflictdetection_policy est nvarchar(12) et peut être l’une des valeurs suivantes :

Valeur Description
originatorid (valeur par défaut) L’agent de distribution détecte le conflit et décide du gagnant en fonction de l’ID d’origine, le cas échéant p2p_continue_onconflict = N'true'. Sinon, elle génère une erreur.
lastwriter L’agent de distribution détecte le conflit et décide du gagnant en fonction de la date/heure du dernier enregistreur si p2p_continue_onconflict = N'true'. Sinon, elle génère une erreur.

Remarque

Lorsque vous spécifiez originatorid, la détection de conflit est identique à celle de SQL Server 2019 (15.x) CU 12 et versions antérieures. Lorsque vous spécifiez lastwriter, SQL Server autorise les conflits à résoudre automatiquement en fonction de l’écriture la plus récente.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

sp_addpublication est utilisé dans la réplication d’instantanés et la réplication transactionnelle.

Si plusieurs publications existent qui publient le même objet de base de données, seules les publications avec une valeur @replicate_ddl des 1 répliquéesALTER TABLE, , ALTER VIEW, ALTER PROCEDUREALTER FUNCTIONet ALTER TRIGGER des instructions DDL. Toutefois, une ALTER TABLE DROP COLUMN instruction DDL est répliquée par toutes les publications qui publient la colonne supprimée.

Une fois la réplication DDL activée (@replicate_ddl = 1) pour une publication, afin d’apporter des modifications DDL non répliquées à la publication, sp_changepublication devez d’abord être exécutée pour définir @replicate_ddl sur .0 Une fois les instructions DDL non réexécuter, sp_changepublication pouvez être réexécuter pour réactiver la réplication DDL.

Exemples

-- 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'AdventureWorks'; 
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 db_owner rôle de base de données fixe peuvent s’exécuter sp_addpublication. Les connexions d'authentification Windows doivent disposer d'un compte d'utilisateur dans la base de données, représentant leur compte d'utilisateur Windows. Un compte d’utilisateur représentant un groupe Windows n’est pas suffisant.