sp_addpublication (Transact-SQL)
Crée une publication d'instantané ou transactionnelle. Cette procédure stockée est exécutée au niveau du serveur de publication sur la base de données de publication.
Conventions de la syntaxe 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. publication est de type sysname et n'a pas de 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. sync_method est de type nvarchar(13) et peut prendre 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. Les instantanés de base de données ne sont pas disponibles dans toutes les éditions de Microsoft SQL Server. Pour obtenir une liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2012.
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 toutes les éditions de Microsoft SQL Server. Pour obtenir une liste des fonctionnalités prises en charge par les éditions de SQL Server, consultez Fonctionnalités prises en charge par les éditions de SQL Server 2012.
NULL (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. description est de type nvarchar(255), avec NULL comme valeur par défaut.[ @status=] 'status'
Indique si les données de publication sont disponibles. 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'
Spécifie s'il existe une version autonome de l'Agent de distribution pour cette publication 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é. 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é. independent_agent doit avoir la valeur true pour que immediate_synchronization ait la valeur 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é. 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 envoi de données (push) peuvent être créés pour la publication concernée. allow_push est de type nvarchar(5), avec TRUE comme valeur par défaut, ce qui autorise les abonnements par envoi de données (push) sur la publication.[ @allow_pull=] 'allow_pull'
Indique si des abonnements par extraction de données (pull) peuvent être créés pour la publication concernée. 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 si des abonnements anonymes peuvent être créés pour la publication concernée. 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 de mise à jour immédiate sont autorisés sur la publication. allow_sync_tran est de type nvarchar(5), avec FALSE comme valeur par défaut. true n'est pas pris 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. 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.
[!REMARQUE]
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. retention est de type int avec 336 heures comme valeur par défaut. 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. allow_queued_updating est de type nvarchar(5), avec FALSE comme valeur par défaut. Si la valeur est false, les modifications effectuées sur 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= ] 'snapshot_in_default_folder'
Indique si les fichiers d'instantané sont stockés dans le dossier par défaut. 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 alternatif de l'instantané. 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. 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. 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'
Spécifie que l'instantané écrit à l'emplacement @alt_snapshot_folder doit être compressé au format CAB Microsoft. compress_snapshot est de type nvarchar(5), avec FALSE comme valeur par défaut. false indique que l'instantané ne sera pas compressé ; true spécifie que l'instantané 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 du serveur de distribution. 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 de fusion d'un abonné peut extraire les fichiers d'instantané si la publication prend en charge la propagation d'instantanés via FTP. 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. ftp_login est de type sysname, avec ANONYMOUS comme valeur par défaut.[ @ftp_password = ] 'ftp_password'
Mot de passe de l'utilisateur utilisé pour la connexion au service FTP. 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. 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.true n'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. allow_subscription_copy est de typenvarchar(5), avec FALSE comme valeur par défaut.[ @conflict_policy = ] '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 de type nvarchar(100), avec NULL comme valeur par défaut, et il peut prendre l'une des valeurs ci-dessous.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'
Spécifie si les enregistrements en conflit sont stockés sur le serveur de publication. 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'
Spécifie le type de file d'attente utilisé. queue_type est de type nvarchar(10), avec NULL comme valeur par défaut et peut prendre l'une de ces valeurs.Valeur
Description
sql
Utilise SQL Server pour stocker les transactions.
NULL (par défaut)
Prend par défaut la valeur sql, qui spécifie l'utilisation de SQL Server pour stocker les transactions.
[!REMARQUE]
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 de l'agent existant. 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 de l'agent existant. 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. publisher est de type sysname, avec NULL comme valeur par défaut.[!REMARQUE]
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'
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 de type nvarchar(5) et peut prendre 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)
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 Initialiser un abonnement transactionnel sans instantané.
Attention Afin d'éviter les données d'abonnés manquantes, lorsque vous utilisez sp_addpublication avec @allow_initialize_from_backup = N'true', utilisez toujours @immediate_sync = N'true'.
[ @replicate_ddl = ] replicate_ddl
Précise si la réplication de schéma est prise en charge pour la publication. replicate_ddl est de type int, avec 1 comme valeur par défaut pour les serveurs de publication SQL Server et 0 pour les serveurs de publication nonSQL 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 Modifier le schéma dans les bases de données de publication.Le paramètre @replicate\_ddl est honoré 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 mis à jour pour empêcher de 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.
Lorsqu'une colonne est modifiée, le type de données source ou la possibilité d'une valeur NULL peuvent avoir changé et les instructions DML peuvent contenir une valeur non 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 de schéma.
Lorsqu'une instruction DDL ajoute une nouvelle 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é parce que la réplication ou la réplication DDL est acceptable.
[ @enabled_for_p2p = ] 'enabled_for_p2p'
Autorise l'utilisation de la publication dans une topologie de réplication d'égal à égal. enabled_for_p2p est de type nvarchar(5), avec FALSE comme valeur par défaut. 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. 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. 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. 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 la 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 lorsqu'un conflit est détecté. p2p_continue_onconflict est de type nvarchar(5) avec FALSE comme valeur par défaut.Attention 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'
Indique 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épliquer des tables et des index partitionnés.[ @replicate_partition_switch= ] 'replicate_partition_switch'
Indique 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 de retour
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'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 du rôle de base de données fixe db_owner peuvent 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.
Voir aussi
Référence
sp_addlogreader_agent (Transact-SQL)
sp_addpublication_snapshot (Transact-SQL)
sp_changepublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
sp_replicationdboption (Transact-SQL)
Procédures stockées de réplication (Transact-SQL)