sys.sp_addpublication (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Skapar en ögonblicksbild eller transaktionell publikation. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.

Transact-SQL syntaxkonventioner

Syntax

sys.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'publicering'

Namnet på publikationen att skapa. @publication är sysname, utan standard. Namnet måste vara unikt i databasen.

[ @taskid = ] taskid

Stöds endast för bakåtkompatibilitet; Använd sp_addpublication_snapshot.

[ @restricted = ] Inte begränsad'

Stöds endast för bakåtkompatibilitet; använd default_access.

[ @sync_method = ] N'sync_method'

Synkroniseringsläget. @sync_method är nvarchar(40) och kan vara ett av följande värden.

Value Description
native 1 Producerar masskopierad programutdata i native-mode från alla tabeller.
character Producerar teckenmodskopior av alla tabeller. Notera: För en Oracle Publisher character gäller endast för snapshot-replikering.
concurrent 1 Producerar bulkkopiering av alla tabeller i native-läge men låser inte tabellerna under snapshoten. Endast stödd för transaktionspublikationer.
concurrent_c Producerar masskopiering av alla tabeller i teckningsläge men låser inte tabeller under snapshoten. Endast stödd för transaktionspublikationer.
database snapshot Producerar native-mode bulkkopiering av programutdata från alla tabeller från en databassnapshot. Databassnapshots finns inte tillgängliga i varje utgåva av SQL Server. En lista över funktioner som stöds av utgåvorna av SQL Server finns i Utgåvor och funktioner som stöds i SQL Server 2022.
database snapshot character Producerar masskopiering av programutdata i teckenläge från alla tabeller från en databassnapshot. Databassnapshots finns inte tillgängliga i varje utgåva av SQL Server. En lista över funktioner som stöds av utgåvorna av SQL Server finns i Utgåvor och funktioner som stöds i SQL Server 2022.
NULL (standardinställning) Standardinställning för native SQL Server Publishers. För icke-SQL Server utgivare är character värdet på @repl_freqSnapshot som standard och på concurrent_c för alla andra fall.

1 Stöds inte för Oracle Publishers.

[ @repl_freq = ] N'repl_freq'

Typen av replikationsfrekvens, @repl_freq är nvarchar(10) och kan vara ett av följande värden.

Value Description
continuous (standardinställning) Loggläsaragenten körs kontinuerligt. För icke-SQL Server utgivare kräver detta att @sync_method sätts till concurrent_c.
snapshot Loggläsaragenten körs enligt ett schema. För icke-SQL Server utgivare kräver detta att @sync_method sätts till character.

[ @description = ] Ingen beskrivning'

En valfri beskrivning för publikationen. @description är nvarchar(255), med en standard på NULL.

[ @status = ] Nej status'

Specificerar om publiceringsdata finns tillgängliga. @status är nvarchar(8) och kan vara ett av följande värden.

Value Description
active Publiceringsdata är tillgängliga för prenumeranter omedelbart.
inactive (standardinställning) Publikationsdata är inte tillgängliga för prenumeranter när publikationen först skapas (de kan prenumerera, men prenumerationerna behandlas inte).

Stöds inte för Oracle Publishers.

[ @independent_agent = ] N'independent_agent'

Specificerar om det finns en fristående Distribution Agent för denna publikation. @independent_agent är nvarchar(5), med en standard på false.

  • Om true, finns det en fristående Distribution Agent för denna publikation.
  • Om false, använder publikationen en delad Distribution Agent, och varje Publisher-databas/Subscriber-databaspar har en enda, delad agent.

[ @immediate_sync = ] N'immediate_sync'

Specificerar om synkroniseringsfilerna för publiceringen skapas varje gång Snapshot Agent körs. @immediate_sync är nvarchar(5), med en standard på false.

Om true, skapas eller återskapas synkroniseringsfilerna varje gång Snapshot Agent körs. Prenumeranter kan få synkroniseringsfilerna omedelbart om Snapshot Agent har slutfört innan prenumerationen skapas. Nya prenumerationer får de senaste synkroniseringsfilerna som genereras av den senaste körningen av Snapshot Agent. @independent_agent måste vara det true för att @immediate_sync ska vara truedet. Om false, skapas synkroniseringsfilerna endast om det finns nya prenumerationer. Du måste ringa sp_addsubscription för varje prenumeration när du stegvis lägger till en ny artikel i en befintlig publikation. Prenumeranter kan inte ta emot synkroniseringsfilerna efter prenumerationen förrän Snapshot Agents har startats och slutförts.

[ @enabled_for_internet = ] N'enabled_for_internet'

Specificerar om publiceringen är aktiverad för Internet och avgör om filöverföringsprotokoll (FTP) kan användas för att överföra snapshot-filerna till en prenumerant. @enabled_for_internet är nvarchar(5), med en standard på false. Om true, läggs synkroniseringsfilerna för publiceringen i katalogen C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp . Användaren måste skapa katalogen Ftp .

[ @allow_push = ] N'allow_push'

Specificerar om push-prenumerationer kan skapas för den aktuella publikationen. @allow_push är nvarchar(5), med standardvärdet , truevilket tillåter push-prenumerationer på publikationen.

[ @allow_pull = ] N'allow_pull'

Specificerar om pull-prenumerationer kan skapas för den aktuella publikationen. @allow_pull är nvarchar(5), med en standard på false. Om false, är inte prenumerationer på publikationen tillåtna.

[ @allow_anonymous = ] N'allow_anonymous'

Specificerar om anonyma prenumerationer kan skapas för den aktuella publikationen. @allow_anonymous är nvarchar(5), med en standard på false. Om true, måste @immediate_sync också sättas till true. Om false, är anonyma prenumerationer inte tillåtna på publikationen.

[ @allow_sync_tran = ] N'allow_sync_tran'

Specificerar om omedelbara uppdateringar av prenumerationer är tillåtna på publikationen. @allow_sync_tran är nvarchar(5), med en standard på false. true stöds inte för Oracle Publishers.

[ @autogen_sync_procs = ] N'autogen_sync_procs'

Specificerar om den synkroniserande lagrade proceduren för att uppdatera prenumerationer genereras hos Publisher. @autogen_sync_procs är nvarchar(5) och kan vara ett av följande värden.

Value Description
true Inställningen är aktiverad automatiskt vid uppdatering av prenumerationer.
false Automatiskt inställt när prenumerationer uppdateras är inte aktiverat eller för Oracle Publishers.
NULL (standardinställning) Standardinställningen är aktiverad när true prenumerationsuppdateringar är aktiverade och när false prenumerationsuppdatering inte är aktiverad.

Note

Det användarangivna värdet för @autogen_sync_procskommer att åsidosättas beroende på de värden som anges för @allow_queued_tran och @allow_sync_tran.

[ @retention = ] retention

Behållningstiden i timmar för prenumerationsaktivitet. @retention är int, med standardvärdet .336 Om en prenumeration inte är aktiv inom lagringsperioden löper den ut och tas bort. Värdet kan vara högre än den maximala lagringstiden för distributionsdatabasen som används av Publisher. Om 0, kommer välkända prenumerationer på publikationen aldrig att gå ut och tas bort av Expired Subscription Cleanup Agent.

[ @allow_queued_tran = ] N'allow_queued_tran'

Möjliggör eller inaktiverar kö av ändringar hos prenumeranten tills de kan tillämpas hos Publisher. @allow_queued_tran är nvarchar(5), med en standard på false.

  • Om false, placeras inte ändringar i prenumeranten i kö.
  • true stöds inte för Oracle Publishers.

[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'

Specificerar om snapshot-filer lagras i standardmappen. @snapshot_in_defaultfolder är nvarchar(5), med en standard på true.

  • Om truefinns ögonblicksbildfiler i standardmappen.
  • Om false, har snapshot-filer lagrats på den alternativa plats som anges av @alt_snapshot_folder.

Alternativa platser kan vara på en annan server, på en nätverksenhet eller på flyttbara medier (såsom flyttbara diskar). Du kan också spara snapshot-filerna på en FTP-sida, för att prenumeranten ska hämta dem vid ett senare tillfälle. Denna parameter kan vara sann och ändå ha en plats i @alt_snapshot_folder-parametern . Denna kombination specificerar att snapshot-filerna kommer att lagras både på standard- och alternativplatsen.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Anger platsen för den alternativa mappen för ögonblicksbilden. @alt_snapshot_folder är nvarchar(255), med en standard på NULL.

[ @pre_snapshot_script = ] N'pre_snapshot_script'

Specificerar en pekare till en .sql filplats. @pre_snapshot_script är nvarchar(255), med en standard på NULL. Distribution Agent kör pre-snapshot-skriptet innan något av de replikerade objektskripten körs när en snapshot appliceras på en prenumerant. Skriptet körs i säkerhetskontexten som används av Distribution Agent när de ansluter till prenumerationsdatabasen.

[ @post_snapshot_script = ] N'post_snapshot_script'

Specificerar en pekare till en .sql filplats. @post_snapshot_script är nvarchar(255), med en standard på NULL. Distribution Agent kommer att köra post-snapshot-skriptet efter att alla andra replikerade objektskript och data har applicerats under en initial synkronisering. Skriptet körs i säkerhetskontexten som används av Distribution Agent när de ansluter till prenumerationsdatabasen.

[ @compress_snapshot = ] N'compress_snapshot'

Specificerar att snapshoten som skrivs till @alt_snapshot_folder plats ska komprimeras till Microsoft CAB-formatet. @compress_snapshot är nvarchar(5), med en standard på false.

  • false specificerar att snapshoten inte är komprimerade.
  • true specificerar att snapshoten är komprimerade.

Snapshot-filer som är större än 2 gigabyte (GB) kan inte komprimeras. Komprimerade snapshot-filer okomprimeras på platsen där Distribution Agent körs; pull-prenumerationer används vanligtvis med komprimerade snapshots så att filer okomprimeras hos prenumeranten. Snapshoten i standardmappen kan inte komprimeras.

[ @ftp_address = ] N'ftp_address'

Nätverksadressen för FTP-tjänsten för distributören. @ftp_address är sysname, med standardvärdet .NULL Anger var ögonblicksbildfilerna för publikationen finns för distributionsagenten eller sammanslagningsagenten för en prenumerant som ska hämtas. Eftersom denna egenskap lagras för varje publikation kan varje publikation ha olika @ftp_address. Publikationen måste stödja spridning av snapshots med FTP.

[ @ftp_port = ] ftp_port

Portnumret för FTP-tjänsten för distributören. @ftp_port är int, med standardvärdet .21 Specificerar var publiceringssnapshotfilerna finns för att Distribution Agent eller Merge Agent hos en abonnent ska hämta dem. Eftersom denna egenskap lagras för varje publikation kan varje publikation ha sin egen @ftp_port.

[ @ftp_subdirectory = ] N'ftp_subdirectory'

Anger var ögonblicksbildfilerna är tillgängliga för distributionsagenten eller sammanslagningsagenten för prenumeranter som ska hämtas om publikationen stöder spridning av ögonblicksbilder med FTP. @ftp_subdirectory är nvarchar(255), med en standard på NULL. Eftersom denna egenskap lagras för varje publikation kan varje publikation ha sin egen @ftp_subdirctory eller välja att inte ha någon underkatalog, markerad med ett NULL värde.

[ @ftp_login = ] N'ftp_login'

Användarnamnet som används för att ansluta till FTP-tjänsten. @ftp_login är sysname, med standardvärdet .anonymous

[ @ftp_password = ] N'ftp_password'

Användarlösenordet som används för att ansluta till FTP-tjänsten. @ftp_password är sysname, med standardvärdet .NULL

[ @allow_dts = ] N'allow_dts'

Anger att publikationen tillåter datatransformeringar. Du kan specificera ett DTS-paket när du skapar en prenumeration. @allow_dts är nvarchar(5), med standardvärdet , falsevilket inte tillåter DTS-transformationer. När @allow_dts är sant måste @sync_method sättas till antingen character eller concurrent_c.

true stöds inte för Oracle Publishers.

[ @allow_subscription_copy = ] N'allow_subscription_copy'

Möjliggör eller inaktiverar möjligheten att kopiera prenumerationsdatabaser som prenumererar på denna publikation. @allow_subscription_copy är nvarchar(5), med en standard på false.

[ @conflict_policy = ] N'conflict_policy'

Anger den konfliktlösningsprincip som följs när alternativet uppdatera prenumerant i kö används. @conflict_policy är nvarchar(100) och kan vara ett av följande värden.

Value Description
pub wins Publisher vinner konflikten.
sub reinit Initiera prenumerationen igen.
sub wins Prenumeranten vinner konflikten.
NULL (standardinställning) Om NULL, och publiceringen är en ögonblicksbildspublicering, blir sub reinitstandardpolicyn . Om NULL och publikationen inte är en snapshot-publikation blir pub winsstandarden .

Stöds inte för Oracle Publishers.

[ @centralized_conflicts = ] N'centralized_conflicts'

Specificerar om konfliktposter lagras hos Publisher. @centralized_conflicts är nvarchar(5), med en standard på NULL.

  • Om true, lagras konfliktposter hos Publisher.
  • Om false, lagras konfliktposter både hos utgivaren och hos prenumeranten som orsakade konflikten.

Stöds inte för Oracle Publishers.

[ @conflict_retention = ] conflict_retention

Anger kvarhållningsperioden för konflikter i dagar. Detta är den period då konfliktmetadata lagras för peer-to-peer-transaktionell replikering och köade uppdateringsprenumerationer. @conflict_retention är int, med standardvärdet .14

Stöds inte för Oracle Publishers.

[ @queue_type = ] N'queue_type'

Anger vilken typ av kö som används. @queue_type är nvarchar(10) och kan vara ett av dessa värden.

Value Description
sql Använd SQL Server för att lagra transaktioner.
NULL (standardinställning) Standardinställningen är sql, vilket specificerar att använda SQL Server för att lagra transaktioner.

Note

Stödet för att använda Microsoft Message Queuing upphör. Att ange ett värde på msmq ger en varning, och replikering sätter automatiskt värdet till sql.

Stöds inte för Oracle Publishers.

[ @add_to_active_directory = ] N'add_to_active_directory'

Denna parameter är föråldrad och stöds endast för bakåtkompatibilitet av skript. Du kan inte längre lägga till publiceringsinformation i Microsoft služba Active Directory.

[ @logreader_job_name = ] N'logreader_job_name'

Namnet på ett befintligt agentjobb. @logreader_job_name är sysname, med standardvärdet .NULL Denna parameter specificeras endast när Log Reader Agent använder ett befintligt jobb istället för att ett nytt skapas.

[ @qreader_job_name = ] N'qreader_job_name'

Namnet på ett befintligt agentjobb. @qreader_job_name är sysname, med standardvärdet .NULL Denna parameter specificeras endast när Queue Reader Agent använder ett befintligt jobb istället för att ett nytt skapas.

[ @publisher = ] N'publisher'

Anger en utgivare som inte är SQL Server. @publisher är sysname, med standardvärdet .NULL

@publisher bör inte användas när man lägger till en publikation i en SQL Server Publisher.

[ @allow_initialize_from_backup = ] N'allow_initialize_from_backup'

Anger om prenumeranter kan initiera en prenumeration på den här publikationen från en säkerhetskopia i stället för en första ögonblicksbild. @allow_initialize_from_backup är nvarchar(5) och kan vara ett av dessa värden:

Value Description
true Möjliggör initiering från en backup.
false Inaktiverar initialisering från en backup.
NULL (standardinställning) Standardinställningen gäller true för en publikation i en peer-to-peer-replikationstopologi och false för alla andra publikationer.

Mer information finns i Initiera en transaktionsprenumeration utan en ögonblicksbild.

Varning

För att undvika att missa abonnentdata, använd sp_addpublication@allow_initialize_from_backup = N'true'@immediate_sync = N'true'alltid .

[ @replicate_ddl = ] replicate_ddl

Anger om schemareplikering stöds för publikationen. @replicate_ddl är int, med standardvärdet för 1 SQL Server förlag och 0 för icke-SQL Server förlag.

  • 1 indikerar att data definition language (DDL)-satser som körs hos utgivaren replikeras.
  • 0 indikerar att DDL-satser inte replikeras.

Note

Schemareplikering stöds inte för Oracle Publishers.

Mer information finns i Göra schemaändringar i publikationsdatabaser.

Parametern @replicate_ddl respekteras när en DDL-sats lägger till en kolumn. Parametern @replicate_ddl ignoreras när en DDL-sats ändrar eller tar bort en kolumn av följande skäl.

  • När en kolumn tas bort måste den sysarticlecolumns uppdateras för att förhindra att nya DML-satser inkluderar den borttagna kolumnen, vilket skulle orsaka att distributionsagenten misslyckas. Den @replicate_ddl parametern ignoreras eftersom replikering alltid måste replikera schemaändringen.

  • När en kolumn ändras kan källdatatypen eller nullbarheten ha ändrats, vilket gör att DML-satser innehåller ett värde som kanske inte är kompatibelt med tabellen hos abonnenten. Sådana DML-uttalanden kan få distributionsagenten att fallera. Den @replicate_ddl parametern ignoreras eftersom replikering alltid måste replikera schemaändringen.

  • När ett DDL-uttalande lägger till en ny kolumn, sysarticlecolumns inkluderar inte den nya kolumnen. DML-satser försöker inte replikera data för den nya kolumnen. Parametern respekteras eftersom det är acceptabelt att antingen replikera eller inte replikera DDL.

[ @enabled_for_p2p = ] N'enabled_for_p2p'

Möjliggör användning av publikationen i en peer-to-peer-replikationstopologi. @enabled_for_p2p är nvarchar(5), med en standard på false. true anger att publikationen stöder peer-to-peer-replikering. När man sätter @enabled_for_p2p till truegäller följande begränsningar:

  • @allow_anonymous måste vara false.
  • @allow_dts måste vara false.
  • @allow_initialize_from_backup måste vara true.
  • @allow_queued_tran måste vara false.
  • @allow_sync_tran måste vara false.
  • @conflict_policy måste vara false.
  • @independent_agent måste vara true.
  • @repl_freq måste vara continuous.
  • @replicate_ddl måste vara 1.

För mer information, se Peer-to-Peer - Transaktionell replikering.

[ @publish_local_changes_only = ] N'publish_local_changes_only'

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @enabled_for_het_sub = ] N'enabled_for_het_sub'

Möjliggör för publikationen att stödja icke-SQL Server-prenumeranter. @enabled_for_het_sub är nvarchar(5), med en standard på false. Ett värde av true innebär att publikationen stödjer icke-SQL Server-prenumeranter. När @enabled_for_het_sub är truegäller följande begränsningar:

  • @allow_initialize_from_backup måste vara false.
  • @allow_push måste vara true.
  • @allow_queued_tran måste vara false.
  • @allow_subscription_copy måste vara false.
  • @allow_sync_tran måste vara false.
  • @autogen_sync_procs måste vara false.
  • @conflict_policy måste vara NULL.
  • @enabled_for_internet måste vara false.
  • @enabled_for_p2p måste vara false.
  • @ftp_address måste vara NULL.
  • @ftp_subdirectory måste vara NULL.
  • @ftp_password måste vara NULL.
  • @pre_snapshot_script måste vara NULL.
  • @post_snapshot_script måste vara NULL.
  • @replicate_ddl måste vara 0.
  • @qreader_job_name måste vara NULL.
  • @queue_type måste vara NULL.
  • @sync_method kan inte vara native eller concurrent.

Mer information finns i Icke-SQL Server-prenumeranter.

[ @p2p_conflictdetection = ] N'p2p_conflictdetection'

Gör det möjligt för Distribution Agent att upptäcka konflikter om publiceringen är aktiverad för peer-to-peer-replikering. @p2p_conflictdetection är nvarchar(5), med standardvärdet .false Mer information finns i Peer-to-Peer – Konfliktidentifiering i Peer-to-Peer-replikering.

[ @p2p_originator_id = ] p2p_originator_id

Anger ett ID för en nod i en peer-to-peer-topologi. @p2p_originator_id är int, med standardvärdet .NULL Detta ID används för konfliktdetektering om @p2p_conflictdetection är satt till SANT. Specificera en positiv, icke-noll ID som inte har använts i topologin. För en lista över ID:n som används, kör sp_help_peerconflictdetection.

[ @p2p_continue_onconflict = ] N'p2p_continue_onconflict'

Avgör om Distribution Agent fortsätter att behandla ändringar efter att en konflikt upptäckts. @p2p_continue_onconflict är nvarchar(5), med en standard på false.

Caution

Vi rekommenderar att du använder standardvärdet för false. När det här alternativet är inställt på trueförsöker distributionsagenten konvergera data i topologin genom att tillämpa den konfliktande raden från noden som är det högsta ursprungs-ID:t. Den här metoden garanterar inte konvergens. Du bör se till att topologin är konsekvent när en konflikt har identifierats. Mer information finns i "Hantera konflikter" i Peer-to-Peer – Konfliktidentifiering i Peer-to-Peer-replikering.

[ @allow_partition_switch = ] N'allow_partition_switch'

Anger om ALTER TABLE...SWITCH instruktioner kan köras mot den publicerade databasen. @allow_partition_switch är nvarchar(5), med en standard på false. Mer information finns i Replikera partitionerade tabeller och index.

[ @replicate_partition_switch = ] N'replicate_partition_switch'

Anger om ALTER TABLE...SWITCH instruktioner som körs mot den publicerade databasen ska replikeras till Prenumeranter. @replicate_partition_switch är nvarchar(5), med en standard på NULL. Detta alternativ gäller endast om @allow_partition_switch är satt till SANT.

[ @allow_drop = ] N'allow_drop'

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy'

Gäller för: SQL Server 2019 (15.x) CU 13 och senare versioner.

@p2p_conflictdetection_policy är nvarchar(12) och kan vara ett av dessa värden:

Value Description
originatorid (standardinställning) Distributionsagenten upptäcker konflikten och avgör vinnaren baserat på ursprungsidentifieringen, om p2p_continue_onconflict = N'true'. Annars ger det ett fel.
lastwriter Distributionsagenten upptäcker konflikten och avgör vinnaren baserat på datumet för den senaste författaren om p2p_continue_onconflict = N'true'. Annars ger det ett fel.

Note

När du anger originatoridär konfliktdetektering densamma som i SQL Server 2019 (15.x) CU 12 och tidigare versioner. När du anger lastwriter, tillåter SQL Server att konflikter löses automatiskt baserat på den senaste skrivningen.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_addpublication används vid snapshot-replikering och transaktionell replikation.

Om det finns flera publikationer som publicerar samma databasobjekt, replikerar ALTER TABLEALTER VIEWendast publikationer med ett @replicate_ddl värde , 1 , , ALTER PROCEDUREALTER FUNCTION, och ALTER TRIGGER DDL-satser. Dock replikeras ett ALTER TABLE DROP COLUMN DDL-uttalande av alla publikationer som publicerar kolumnen för borttaget.

Med DDL-replikering aktiverad (@replicate_ddl = 1) för en publikation, måste sp_changepublication först köras för att sätta @replicate_ddl till 0, för att göra icke-replikerande DDL-ändringar i publikationen. Efter att de icke-replikerande DDL-satserna har utfärdats kan sp_changepublication köras igen för att slå på DDL-replikering igen.

Examples

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

Permissions

Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_addpublication. Windows authentication-inloggningar måste ha ett användarkonto i databasen som representerar deras Windows-användarkonto. Ett användarkonto som representerar en Windows-grupp räcker inte.