sys.sp_addmergepublication (Transact-SQL)

Dotyczy:SQL ServerAzure SQL Managed Instance

Tworzy nową publikację scalaną. Ta procedura jest wykonywana w Publisher w bazie danych, która jest publikowana.

Transact-SQL konwencje składni

Syntax

sys.sp_addmergepublication
    [ @publication = ] N'publication'
    [ , [ @description = ] N'description' ]
    [ , [ @retention = ] retention ]
    [ , [ @sync_mode = ] N'sync_mode' ]
    [ , [ @allow_push = ] N'allow_push' ]
    [ , [ @allow_pull = ] N'allow_pull' ]
    [ , [ @allow_anonymous = ] N'allow_anonymous' ]
    [ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
    [ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
    [ , [ @dynamic_filters = ] N'dynamic_filters' ]
    [ , [ @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' ]
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @keep_partition_changes = ] N'keep_partition_changes' ]
    [ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
    [ , [ @allow_synctoalternate = ] N'allow_synctoalternate' ]
    [ , [ @validate_subscriber_info = ] N'validate_subscriber_info' ]
    [ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
    [ , [ @max_concurrent_merge = ] max_concurrent_merge ]
    [ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
    [ , [ @use_partition_groups = ] N'use_partition_groups' ]
    [ , [ @publication_compatibility_level = ] N'publication_compatibility_level' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @allow_subscriber_initiated_snapshot = ] N'allow_subscriber_initiated_snapshot' ]
    [ , [ @allow_web_synchronization = ] N'allow_web_synchronization' ]
    [ , [ @web_synchronization_url = ] N'web_synchronization_url' ]
    [ , [ @allow_partition_realignment = ] N'allow_partition_realignment' ]
    [ , [ @retention_period_unit = ] N'retention_period_unit' ]
    [ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
    [ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
    [ , [ @conflict_logging = ] N'conflict_logging' ]
[ ; ]

Arguments

[ @publication = ] N'publikacja'

Nazwa publikacji merge do tworzenia. @publication to nazwa sysname, bez domyślnego i nie może być słowem ALLkluczowym . Nazwa publikacji musi być unikalna w bazie danych.

[ @description = ] N'opis"

Opis publikacji. @description to nvarchar(255)z wartością domyślną NULL.

[ @retention = ] retencja

Okres retencji w jednostkach okresu retencyjnego, dla którego można zapisywać zmiany dla danego @publication. @retention jest int, z domyślnym .14 Jednostki okresu retencji definiuje się @retention_period_unit. Jeśli subskrypcja nie zostanie zsynchronizowana w okresie retencyjnym, a oczekujące zmiany, które by otrzymała, zostaną usunięte przez operację sprzątania u dystrybutora, subskrypcja wygasa i musi zostać ponownie zainicjalizowana. Maksymalny dopuszczalny okres przechowywania to liczba dni między 31 grudnia 9999 a aktualną datą.

Note

Okres przechowywania dla publikacji scalania ma 24-godzinny okres łaski, aby umożliwić subskrybentom dostosowanie się do różnych stref czasowych. Jeśli na przykład ustawisz okres przechowywania jednego dnia, rzeczywisty okres przechowywania wynosi 48 godzin.

[ @sync_mode = ] N'sync_mode'

Tryb początkowej synchronizacji subskrybentów z publikacją. @sync_mode to nvarchar(10) i może być jedną z następujących wartości.

Value Opis
native (ustawienie domyślne) Generuje natywne kopiowanie wyników programu w trybie natywnym ze wszystkich tabel.
character Generuje masowe kopiowanie wyników wszystkich tabel w trybie znaków. Wymagane do obsługi SQL Server Compact oraz subskrybentów niebędących SQL Server.

[ @allow_push = ] N'allow_push'

Określa, czy można utworzyć subskrypcje push dla danej publikacji. @allow_push to nvarchar(5), z domyślnym , trueco pozwala na subskrypcje push na publikację.

[ @allow_pull = ] N'allow_pull'

Określa, czy można utworzyć subskrypcje pull dla danego wydawnictwa. @allow_pull to nvarchar(5), z domyślnym , trueco pozwala na subskrypcje pobierające publikację. Musisz określić true, aby wspierać subskrypcje SQL Server Compact.

[ @allow_anonymous = ] N'allow_anonymous'

Określa, czy można utworzyć anonimowe subskrypcje dla danej publikacji. @allow_anonymous to nvarchar(5), z domyślnym , trueco pozwala na anonimowe subskrypcje publikacji. Aby obsługiwać subskrybentów SQL Server Compact, musisz określić true.

[ @enabled_for_internet = ] N'enabled_for_internet'

Określa, czy publikacja jest włączona w Internecie oraz czy można użyć protokołu transferu plików (FTP) do przeniesienia plików snapshot do abonenta. @enabled_for_internet to nvarchar(5), z domyślnym .false Jeśli true, pliki synchronizacyjne publikacji są umieszczane w katalogu C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp . Użytkownik musi utworzyć katalog Ftp. Jeśli false, publikacja nie jest włączona do Internetu.

[ @centralized_conflicts = ] N'centralized_conflicts'

Ten parametr jest przestarzały i jest utrzymywany w celu zapewnienia zgodności z poprzednimi wersjami skryptów. Użyj @conflict_logging , aby określić miejsce, gdzie przechowywane są rekordy konfliktów.

[ @dynamic_filters = ] N'dynamic_filters'

Umożliwia publikacji merge użycie parametryzowanych filtrów wierszowych. @dynamic_filters to nvarchar(5), z domyślnym .false

Note

Nie powinieneś określać tego parametru, lecz pozwolić SQL Server automatycznie określić, czy stosuje się parametryzowane filtry wierszowe. Jeśli określisz wartość dla true@dynamic_filters, musisz zdefiniować parametryzowany filtr wierszowy dla artykułu. Więcej informacji można znaleźć w artykule Define and Modify a Parameter Row Filter for a Merge Article.

[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'

Określa, czy pliki snapshotów są przechowywane w domyślnym folderze. @snapshot_in_defaultfolder to nvarchar(5), z domyślnym obciążeniem true. Jeśli trueplik migawki można znaleźć w folderze domyślnym. Jeśli , falsepliki migawki są przechowywane w alternatywnym miejscu określonym przez @alternate_snapshot_folder. Alternatywne lokalizacje mogą znajdować się na innym serwerze, na dysku sieciowym lub na nośniku wymiennym (takim jak dyski wymienne). Możesz także zapisać pliki migawki na stronie FTP, aby abonent mógł je pobrać później. Ten parametr może być prawdziwy i nadal mieć lokalizację określoną przez @alt_snapshot_folder. To połączenie określa, że pliki migawki są przechowywane zarówno w domyślnych, jak i alternatywnych lokalizacjach.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Określa lokalizację alternatywnego folderu migawki. @alt_snapshot_folder to nvarchar(255), z domyślnym obciążeniem NULL.

[ @pre_snapshot_script = ] N'pre_snapshot_script'

Określa wskaźnik do lokalizacji pliku .sql . @pre_snapshot_script to nvarchar(255), z domyślnym .NULL Merge Agent uruchamia skrypt pre-snapshot przed dowolnym z replikowanych skryptów obiektowych podczas aplikacji snapshotu do subskrybenta. Skrypt jest wykonywany w kontekście bezpieczeństwa używanym przez Merge Agent podczas łączenia się z bazą danych subskrypcji. Skrypty pre-snapshot nie są uruchamiane na SQL Server Compact Subscribers.

[ @post_snapshot_script = ] N'post_snapshot_script'

Określa wskaźnik do lokalizacji pliku .sql . @post_snapshot_script to nvarchar(255), z domyślnym obciążeniem NULL. Merge Agent uruchomi skrypt post-snapshot po zastosowaniu wszystkich pozostałych replikowanych skryptów obiektowych i danych podczas początkowej synchronizacji. Skrypt jest wykonywany w kontekście bezpieczeństwa używanym przez Merge Agent podczas łączenia się z bazą danych subskrypcji. Skrypty post-snapshot nie są uruchamiane na SQL Server Compact Subscribers.

[ @compress_snapshot = ] N'compress_snapshot'

Określa, że migawka zapisana w lokalizacji @alt_snapshot_folder zostanie skompresowana do formatu Microsoft CAB. @compress_snapshot to nvarchar(5), z domyślnym .false

  • false Precyzuje, że migawka nie ma być kompresowana.

  • true określa, że migawka zostanie skompresowana.

Pliki snapshotów większe niż 2 GB nie mogą być kompresowane. Skompresowane pliki snapshotów są niekompresowane w miejscu, gdzie działa Merge Agent; subskrypcje pull są zazwyczaj używane z skompresowanymi snapshotami, aby pliki były niekompresowane u Subscriber. Migawki w domyślnym folderze nie da się skompresować. Aby obsługiwać subskrybentów SQL Server Compact, musisz określić false.

[ @ftp_address = ] N'ftp_address'

Adres sieciowy usługi FTP dla dystrybutora. @ftp_address to nazwa systemu, z domyślnym .NULL Określa, gdzie znajdują się pliki zrzutów publikacji, które Merge Agent subskrybenta może odebrać. Ponieważ ta własność jest przechowywana dla każdej publikacji, każda publikacja może mieć inny @ftp_address. Publikacja musi wspierać propagację migawek za pomocą FTP.

[ @ftp_port = ] ftp_port

Numer portu usługi FTP dla dystrybutora. @ftp_port jest int, z domyślnym .21 Określa, gdzie znajdują się pliki snapshotów publikacji, które Merge Agent subskrybenta może odebrać. Ponieważ ta własność jest przechowywana dla każdej publikacji, każda publikacja może mieć własny @ftp_port.

[ @ftp_subdirectory = ] N'ftp_subdirectory'

Określa, gdzie pliki snapshotów są dostępne dla Merge Agent subskrybenta, jeśli publikacja obsługuje propagację snapshotów za pomocą FTP. @ftp_subdirectory to nvarchar(255), z domyślnym .ftp Ponieważ ta własność jest przechowywana dla każdej publikacji, każda publikacja może mieć własny @ftp_subdirctory lub wybrać brak podkatalogu, oznaczonego wartością NULL .

Podczas wstępnego generowania migawek dla publikacji z filtrami parametryzowanymi, migawka danych dla każdej partycji Subskrybenta musi znajdować się w osobnym folderze. Struktura katalogów dla pregenerowanych migawek z użyciem FTP musi przestrzegać następującej struktury:

<alternate_snapshot_folder>\ftp\<publisher_publicationDB_publication>\<partitionID>.

Note

Wartości w poprzednim przykładzie (w nawiasach kątnych) zależą od szczegółów publikacji i podziału Subskrybenta.

[ @ftp_login = ] N'ftp_login'

Nazwa użytkownika używana do nawiązywania połączenia z usługą FTP. @ftp_login jest nazwą systemu z domyślnym .anonymous

[ @ftp_password = ] N'ftp_password'

Hasło użytkownika używane do nawiązywania połączenia z usługą FTP. @ftp_password to nazwa systemu, z domyślnym .NULL

Important

Nie używaj pustego hasła. Użyj silnego hasła.

[ @conflict_retention = ] conflict_retention

Określa okres przechowywania w dniach, na który konflikty są zatrzymywane (conflicts). @conflict_retention jest int, z domyślną liczbą 14 dni przed usunięciem wiersza konfliktu z tabeli konfliktów.

[ @keep_partition_changes = ] N'keep_partition_changes'

Określa, czy należy włączyć optymalizacje zmiany partycji, gdy nie można użyć wstępnie obliczonych partycji. @keep_partition_changes jest nvarchar(5), z domyślnym .true

  • false oznacza to, że zmiany partycji nie są zoptymalizowane, a gdy nie są używane wstępnie obliczone partycje, partycje wysyłane do wszystkich subskrybentów są weryfikowane przy zmianie danych na partycji.

  • true oznacza to, że zmiany partycji są zoptymalizowane, a dotknięci są tylko subskrybenci mającymi wiersze w zmienionych partycjach.

Przy użyciu prekalkulowanych partycji ustaw @use_partition_groups na , true a @keep_partition_changes na .false Więcej informacji można znaleźć w artykule Filtry parametryzowane – Optymalizacja dla partycji precompolitorowanych.

Note

Jeśli określisz wartość dla true@keep_partition_changes, określ wartość dla 1 parametru -MaxNetworkOptimizationSnapshot Agent . Więcej informacji na temat tego parametru można znaleźć w Replication Snapshot Agent. Aby uzyskać informacje o tym, jak określić parametry agenta, zobacz Administrację Agentów Replikacji.

W przypadku subskrybentów SQL Server Compact @keep_partition_changes musi być ustawione taktrue, aby zapewnić prawidłową propagację usunięcia. Po ustawieniu na false, subskrybent może mieć więcej wierszy niż się spodziewa.

[ @allow_subscription_copy = ] N'allow_subscription_copy'

Umożliwia lub wyłącza możliwość kopiowania subskrypcyjnych baz danych subskrybujących tę publikację. @allow_subscription_copy to nvarchar(5), z domyślnym .false Rozmiar kopiowanej bazy danych subskrypcji musi być mniejszy niż 2 GB.

[ @allow_synctoalternate = ] N'allow_synctoalternate'

Zidentyfikowane tylko do celów informacyjnych. Niewspierane. Zgodność w przyszłości nie jest gwarantowana.

[ @validate_subscriber_info = ] N'validate_subscriber_info'

Lista funkcji używanych do definiowania partycji Subscriber opublikowanych danych przy użyciu parametryzowanych filtrów wierszowych. @validate_subscriber_info to nvarchar(500), z domyślnym obciążeniem NULL. Te informacje są wykorzystywane przez Merge Agent do weryfikacji partycji subskrybenta. Na przykład, jeśli SUSER_SNAME jest używane w parametryzowanym filtrze wierszowym, parametr powinien być .@validate_subscriber_info=N'SUSER_SNAME()

Note

Nie powinieneś określać tego parametru, lecz pozwolić SQL Server automatycznie określać kryterium filtrowania.

[ @add_to_active_directory = ] N'add_to_active_directory'

Ten parametr jest przestarzały i jest utrzymywany w celu zapewnienia zgodności z poprzednimi wersjami skryptów. Nie można już dodawać informacji o publikacji do Microsoft Active Directory.

[ @max_concurrent_merge = ] max_concurrent_merge

Maksymalna liczba równoczesnych procesów scalania. @max_concurrent_merge jest int, z domyślnym obciążeniem 0. Wartość for 0 oznacza, że nie ma ograniczenia liczby równocześnie uruchamianych procesów scalania w danym momencie.

Ta właściwość wyznacza limit liczby równoczesnych procesów scalania, które mogą być uruchamiane na publikacji merge jednocześnie. Jeśli jednocześnie zaplanowanych jest więcej procesów scalania niż dozwolona jest wartość, nadmiar zadań trafia do kolejki i czeka na zakończenie bieżąco działającego procesu scalania.

[ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots

Maksymalna liczba sesji Snapshot Agent, które można uruchomić równocześnie, aby generować przefiltrowane migawki danych dla partycji Subscriber. @max_concurrent_dynamic_snapshots jest int, z domyślnym .0 Jeśli , 0nie ma ograniczenia liczby sesji snapshot. Jeśli jednocześnie zaplanowano więcej procesów snapshotów niż dozwolona jest wartość, nadmiar zadań trafia do kolejki i czeka na zakończenie bieżąco działającego procesu snapshot.

[ @use_partition_groups = ] N'use_partition_groups'

Określa, że do optymalizacji procesu synchronizacji należy używać partycji z precompultów. @use_partition_groups to nvarchar(5) i może być jedną z tych wartości:

Value Opis
true Publikacja wykorzystuje precompultowane partycje.
false Publikacja nie korzysta z precompulowanych partycji.
NULL (ustawienie domyślne) System decyduje o strategii partycjonowania.

Domyślnie używa się partycji wstępnie obliczonych. Aby uniknąć użycia prekalkulowanych partycji, @use_partition_groups musi być ustawione na false. Gdy NULL, system decyduje, czy można użyć wstępnie obliczonych partycji. Jeśli nie można użyć wstępnie obliczonych partycji, ta wartość faktycznie staje się bez false generowania błędów. W takich przypadkach można ustawić @keep_partition_changes tak, true aby zapewnić pewną optymalizację. Więcej informacji można znaleźć w artykule Filtry parametryzowane – Filtry wierszowe parametryzowane i filtry parametryzowane – Optymalizacja pod względem precompulowanych partycji.

[ @publication_compatibility_level = ] N'publication_compatibility_level'

Wskazuje na kompatybilność wsteczną publikacji. @publication_compatibility_level to nvarchar(6) i może być jedną z tych wartości:

Value wersja
90RTM SQL Server 2005 (9.x)
100RTM SQL Server 2008 (10.0.x)

[ @replicate_ddl = ] replicate_ddl

Wskazuje, czy replikacja schematu jest obsługiwana dla publikacji. @replicate_ddl jest int, z domyślnym obciążeniem NULL. 1 wskazuje, że instrukcje języka definicji danych (DDL) wykonywane w wydawcy są replikowane i 0 wskazuje, że instrukcje DDL nie są replikowane. Aby uzyskać więcej informacji, zobacz Wprowadzanie zmian schematu w bazach danych publikacji.

Parametr @replicate_ddl jest respektowany, gdy instrukcja DDL dodaje kolumnę. Parametr @replicate_ddl jest ignorowany, gdy instrukcja DDL zmienia lub usuwa kolumnę z następujących powodów.

  • Gdy kolumna zostaje usunięta, musi zostać zaktualizowana, sysarticlecolumns aby zapobiec włączaniu kolejki w nowych instrukcjach DML, które mogłyby spowodować awarię agenta dystrybucyjnego. Parametr @replicate_ddl jest pomijany, ponieważ replikacja musi zawsze replikować zmianę schematu.

  • Gdy kolumna zostaje zmieniona, typ danych źródłowych lub możliwość unieważnienia mogą się zmienić, powodując, że instrukcje DML zawierają wartość, która może nie być zgodna z tabelą u abonenta. Takie wypowiedzi DML mogą powodować awarię agenta dystrybucyjnego. Parametr @replicate_ddl jest pomijany, ponieważ replikacja musi zawsze replikować zmianę schematu.

  • Gdy instrukcja DDL dodaje nową kolumnę, sysarticlecolumns nie zawiera nowej kolumny. Oświadczenia DML nie próbują replikować danych dla nowej kolumny. Parametr ten jest respektowany, ponieważ dopuszczalne jest zarówno replikowanie, jak i brak replikacji DDL.

[ @allow_subscriber_initiated_snapshot = ] N'allow_subscriber_initiated_snapshot'

Wskazuje, czy subskrybenci tej publikacji mogą rozpocząć proces snapshota, aby wygenerować filtrowany snapshot dla swojej partycji danych. @allow_subscriber_initiated_snapshot jest nvarchar(5), z domyślnym obciążeniem false. true oznacza, że subskrybenci mogą rozpocząć proces snapshot.

[ @allow_web_synchronization = ] N'allow_web_synchronization'

Określa, czy publikacja jest włączona do synchronizacji sieci. @allow_web_synchronization to nvarchar(5), z domyślnym .false true określa, że subskrypcje tej publikacji mogą być synchronizowane przez HTTPS. Aby uzyskać więcej informacji, zobacz Synchronizacja sieci Web na potrzeby replikacji scalania. Aby obsługiwać subskrybentów SQL Server Compact, musisz określić true.

[ @web_synchronization_url = ] N'web_synchronization_url'

Określa domyślną wartość adresu URL Internetu używanego do synchronizacji sieci. @web_synchronization_url to nvarchar(500), z domyślnym obciążeniem NULL. Definiuje domyślny adres URL Internetu, jeśli nie jest on wyraźnie ustawiony podczas wykonywania sp_addmergepullsubscription_agent .

[ @allow_partition_realignment = ] N'allow_partition_realignment'

Określa, czy usunięte pliki zostaną wysłane do subskrybenta, gdy modyfikacja wiersza w wydawcy powoduje zmianę partycji. @allow_partition_realignment to nvarchar(5), z domyślnym obciążeniem true.

  • true wysyła usuwane dane do Subskrybenta, aby odzwierciedlić wyniki zmiany partycji poprzez usunięcie danych, które nie są już częścią partycji Subskrybenta.

  • falsepozostawia dane ze starej partycji na Subskrybentze, gdzie zmiany dokonane w tych danych na Publisher nie replikują się do tego Abonenta, ale zmiany dokonane na Subskrybentze replikują się do Publisher.

Ustawienie @allow_partition_realignment na false służy do przechowywania danych w subskrypcji ze starej partycji, gdy dane muszą być dostępne do celów historycznych.

Note

Dane, które pozostają w Subscriber w wyniku ustawienia @allow_partition_realignment na, false powinny być traktowane jak tylko do odczytu; jednak system replikacji tego nie egzekwuje.

[ @retention_period_unit = ] N'retention_period_unit'

Określa jednostki okresu retencji ustalonego przez @retention. @retention_period_unit to nvarchar(10) i może być jedną z następujących wartości.

Value wersja
day (ustawienie domyślne) Okres retencji określany jest w dniach.
week Okres retencji określany jest w tygodniach.
month Okres retencji określany jest w miesiącach.
year Okres retencji określany jest w latach.

[ @generation_leveling_threshold = ] generation_leveling_threshold

Określa liczbę zmian zawartych w pokoleniu. Pokolenie to zbiór zmian, które są przekazywane Publisher lub Subskrybentowi. @generation_leveling_threshold jest int, z domyślnym .1000

[ @automatic_reinitialization_policy = ] automatic_reinitialization_policy

Określa, czy zmiany są przesyłane przez Subskrybenta przed automatyczną reinicjalizacją wymaganą przez zmianę publikacji, gdzie dla 1 określono wartość . @automatic_reinitialization_policy jest bit, z domyślnym .0

1 oznacza to, że zmiany są przesyłane przez abonenta przed automatyczną reinicjalizacją.

Important

Jeśli dodasz, usuniesz lub zmienisz filtr parametryzowany, oczekujące zmiany na stronie Subskrybera nie mogą zostać przesłane do Publisher podczas ponownej inicjalizacji. Jeśli chcesz przesłać oczekujące zmiany, zsynchronizuj wszystkie subskrypcje przed zmianą filtra.

[ @conflict_logging = ] N'conflict_logging'

Określa, gdzie przechowywane są rekordy konfliktów. @conflict_logging to nvarchar(15) i może mieć jedną z następujących wartości:

Value Opis
publisher Akta konfliktów są przechowywane w Publisher.
subscriber Zapisy konfliktów są przechowywane u abonenta, który spowodował konflikt. Nie jest obsługiwane dla subskrybentów SQL Server Compact.
both Zapisy konfliktów są przechowywane zarówno u Publisher, jak i Subscriber.
NULL (ustawienie domyślne) Replikacja automatycznie ustawia @conflict_logging do , both gdy wartość @publication_compatibility_level jest i 90RTM do w publisher pozostałych przypadkach.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Remarks

sp_addmergepublication jest stosowany w replikacji scalania.

Aby wypisać obiekty publikacji do Active Directory z użyciem parametru @add_to_active_directory, obiekt SQL Server musi być już utworzony w Active Directory.

Jeśli istnieje wiele publikacji publikujących ten sam obiekt bazy danych, tylko publikacje o wartości 1 replikują ALTER TABLEALTER VIEWinstrukcje , , ALTER PROCEDURE, ALTER FUNCTION, oraz ALTER TRIGGER DDL. Jednak oświadczenie ALTER TABLE DROP COLUMN DDL będzie replikowane przez wszystkie publikacje publikujące usuniętą kolumnę.

Dla SQL Server subskrybentów kompaktowych wartość @alternate_snapshot_folder jest używana tylko wtedy, gdy wartość @snapshot_in_default_folder wynosi .false

Przy włączonej replikacji DDL (@replicate_ddl = 1) dla publikacji, aby wprowadzić niereplikujące się zmiany DDL w publikacji, najpierw sp_changemergepublication musi zostać wykonane, aby ustawić @replicate_ddl na .0 Po wydaniu niereplikujących się instrukcji DDL można sp_changemergepublication je ponownie uruchomić, aby ponownie włączyć replikację DDL.

Examples

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
  @dbname=@publicationDB, 
  @optname=N'merge publish',
  @value = N'true' 

-- Create a new merge publication, explicitly setting the defaults. 
USE [AdventureWorks2022]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2022.',
  @publication_compatibility_level  = N'120RTM';

-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = @login, 
  @job_password = @password;
GO

Permissions

Tylko członkowie roli stałego serwera systemowego lub stałej db_owner stałej bazy danych mogą wykonywać sp_addmergepublication.