sys.sp_changepublication (Transact-SQL)

Dotyczy:SQL ServerAzure SQL Managed Instance

Zmienia właściwości publikacji. Ta procedura składowana jest wykonywana w programie Publisher w bazie danych publikacji.

Transact-SQL konwencje składni

Syntax

sys.sp_changepublication
    [ [ @publication = ] N'publication' ]
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

Arguments

[ @publication = ] N'publikacja'

Nazwa publikacji. @publication jest nazwą systemu z domyślnym .NULL

[ @property = ] N'property'

Własność publikacji do zmiany. @property to nvarchar(255), z domyślnym .NULL

[ @value = ] N'value'

Nowa wartość właściwości. @value to nvarchar(255), z wartością domyślną NULL.

Ta tabela opisuje właściwości publikacji, które można zmienić, oraz ograniczenia dotyczące wartości tych właściwości.

Property Value Description
allow_anonymous true Anonimowe subskrypcje dla danej publikacji mogą być utworzone i immediate_sync muszą być również .true Nie da się tego zmienić w publikacjach peer-to-peer.
false Nie można tworzyć anonimowych subskrypcji dla danej publikacji. Nie da się tego zmienić w publikacjach peer-to-peer.
allow_initialize_from_backup true Subskrybaci mogą inicjować subskrypcję tej publikacji z kopii zapasowej, a nie z początkowego migawki. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
false Subskrybenci muszą korzystać z początkowego snapshota. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
allow_partition_switch true ALTER TABLE...SWITCH Instrukcje mogą być wykonywane na podstawie opublikowanej bazy danych. Aby uzyskać więcej informacji, zobacz Replikowanie partycjonowanych tabel i indeksów.
false ALTER TABLE...SWITCH Oświadczenia nie mogą być wykonywane na opublikowanej bazie danych.
allow_pull true Dla danego wydawnictwa dozwolone są subskrypcje pull. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
false Subskrypcje pull nie są dozwolone dla danego wydawnictwa. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
allow_push true Subskrypcje push są dozwolone dla danego wydawnictwa.
false Subskrypcje push nie są dozwolone dla danego wydawnictwa.
allow_subscription_copy true Umożliwia kopiowanie baz danych subskrybujących tę publikację. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
false Wyłącza możliwość kopiowania baz danych subskrybujących tę publikację. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
alt_snapshot_folder Lokalizacja alternatywnego folderu dla snapshota.
centralized_conflicts true Akta konfliktów są przechowywane w Publisher. Można to zmienić tylko wtedy, gdy nie ma aktywnych subskrypcji. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
false Zapisy konfliktów są przechowywane zarówno u Publisher, jak i u subskrybenta, który spowodował konflikt. Można to zmienić tylko wtedy, gdy nie ma aktywnych subskrypcji. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
compress_snapshot true Migawka w alternatywnym folderze snapshotów jest kompresowana do formatu .cab. Migawka w domyślnym folderze snapshotów nie może być skompresowana.
false Snapshot nie jest kompresowany, co jest domyślnym zachowaniem replikacji.
conflict_policy pub wins Polityka rozwiązywania konfliktów dotyczących aktualizacji Subskrybentów tam, gdzie Publisher wygrywa konflikt. Ta własność może być zmieniona tylko wtedy, gdy nie ma aktywnych subskrypcji. Nie jest obsługiwane przez Oracle Publishers.
sub reinit Aby aktualizować subskrypcje, jeśli wystąpi konflikt, subskrypcja musi zostać ponownie zainicjalizowana. Ta własność może być zmieniona tylko wtedy, gdy nie ma aktywnych subskrypcji. Nie jest obsługiwane przez Oracle Publishers.
sub wins Polityka rozwiązywania konfliktów dotycząca aktualizacji Subskrybentów tam, gdzie to Abonent wygrywa konflikt. Ta własność może być zmieniona tylko wtedy, gdy nie ma aktywnych subskrypcji. Nie jest obsługiwane przez Oracle Publishers.
conflict_retention Wartość int określająca okres utrzymania konfliktu, w dniach. Domyślne retencje to 14 dni. 0 Oznacza to, że nie jest potrzebne sprzątanie konfliktów. Nie jest obsługiwane przez Oracle Publishers.
description Opcjonalny wpis opisujący publikację.
enabled_for_het_sub true Umożliwia publikacji wsparcie dla subskrybentów spoza SQL Server. enabled_for_het_sub nie można tego zmienić, gdy istnieją subskrypcje publikacji. Może być konieczne wykonanie sp_changepublication , aby spełnić następujące wymagania, zanim ustalisz się enabled_for_het_sub w rzeczywistości:
- allow_queued_tranmusi być .false
- allow_sync_tranmusi być .false
Zmiana enabled_for_het_sub na może true zmienić istniejące ustawienia publikacji. Aby uzyskać więcej informacji, zobacz Subskrybenci programu Non-SQL Server. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
false Publikacja nie obsługuje subskrybentów spoza SQL Server. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
enabled_for_internet true Publikacja jest włączona w Internecie, a protokół przesyłania plików (FTP) może być używany do przesyłania plików migawek do abonenta. Pliki synchronizacyjne publikacji są umieszczane w następującym katalogu: C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address nie może być NULL. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
false Publikacja nie jest dostępna w Internecie. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
enabled_for_p2p true Publikacja wspiera replikację peer-to-peer. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
Aby ustawić enabled_for_p2p na , trueobowiązują następujące ograniczenia:
- allow_anonymous musi być false
- allow_dtsmusi być .false
- allow_initialize_from_backup musi być true
- allow_queued_tranmusi być .false
- allow_sync_tranmusi być .false
- enabled_for_het_submusi być .false
- independent_agentmusi być .true
- repl_freqmusi być .continuous
- replicate_ddlmusi być .1
false Publikacja nie obsługuje replikacji peer-to-peer. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
ftp_address Lokalizacja dostępna przez FTP plików snapshot publikacji. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
ftp_login Nazwa użytkownika używana do połączenia z usługą FTP, a wartość anonymous jest dozwolona. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
ftp_password Hasło do nazwy użytkownika użytej do połączenia z usługą FTP. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
ftp_port Numer portu usługi FTP dla Dystrybutora. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
ftp_subdirectory Określa, gdzie tworzone są pliki migawki, jeśli publikacja obsługuje propagację migawek za pomocą FTP. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
immediate_sync true Pliki synchronizacyjne dla publikacji są tworzone lub odtwarzane za każdym razem, gdy uruchamia się Snapshot Agent. Subskrybaci mogą otrzymać pliki synchronizacyjne natychmiast po subskrypcji, jeśli Snapshot Agent zakończy subskrypcję raz przed subskrypcją. Nowe subskrypcje otrzymują najnowsze pliki synchronizacyjne wygenerowane przez najnowsze wykonanie Snapshot Agent. independent_agentmusi być również .true Więcej informacji można znaleźć w artykule Efekt natychmiastowej synchronizacji.
false Pliki synchronizacyjne są tworzone tylko wtedy, gdy pojawiają się nowe subskrypcje. Subskrybenci nie mogą otrzymać plików synchronizacyjnych po subskrypcji, dopóki Snapshot Agent nie zostanie uruchomiony i nie zostanie ukończony.
independent_agent true Publikacja posiada własnego dedykowanego Distribution Agent.
false Publikacja korzysta ze wspólnego Distribution Agent, a każda para bazy danych publikacja/subskrypcja ma wspólnego agenta.
p2p_continue_onconflict true Distribution Agent nadal przetwarza zmiany, gdy wykryto konflikt.

Ostrożność: Zalecamy użycie wartości domyślnej .FALSE Gdy ta opcja jest ustawiona na TRUEwartość , agent dystrybucji próbuje połączyć dane w topologii, stosując wiersz powodujący konflikt z węzła, który jest najwyższym identyfikatorem elementu źródłowego. Ta metoda nie gwarantuje zbieżności. Upewnij się, że topologia jest spójna po wykryciu konfliktu. Aby uzyskać więcej informacji, zobacz "Obsługa konfliktów" w obszarze Wykrywanie konfliktów między elementami równorzędnym w replikacji równorzędnej.
false Distribution Agent przestaje przetwarzać zmiany, gdy wykryto konflikt.
post_snapshot_script Określa lokalizację pliku skryptu Transact-SQL, który Distribution Agent uruchamia po zastosowaniu wszystkich pozostałych replikowanych skryptów obiektowych i danych podczas początkowej synchronizacji.
pre_snapshot_script Określa lokalizację pliku skryptu Transact-SQL, który Distribution Agent uruchamia przed zastosowaniem wszystkich pozostałych replikowanych skryptów i danych obiektów podczas początkowej synchronizacji.
publish_to_ActiveDirectory true Ten parametr jest przestarzały i obsługiwany tylko dla kompatybilności wstecznej skryptów. Nie można już dodawać informacji o publikacji do Microsoft Active Directory.
false Usuwa informacje o publikacji z Active Directory.
queue_type sql Używaj SQL Server do przechowywania transakcji. Ta własność może być zmieniona tylko wtedy, gdy nie ma aktywnych subskrypcji.

Uwaga: Wsparcie dla korzystania z Microsoft Message Queuing zostało zakończone. Określenie wartości dla msmq@value skutkuje błędem.
redirected_publisher Nazwa odbiornika grupy dostępności. Stosowane w replikacji peer-to-peer, gdy peer znajduje się w grupie dostępności. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server. Wprowadzony w SQL Server 2019 (15.x) CU 13. Więcej informacji można znaleźć w artykule Konfiguruj jednego partnera jako część grupy dostępności lub Konfiguruj oba partnery w grupach dostępności.
repl_freq continuous Publikuje wyniki wszystkich transakcji opartych na logach.
snapshot Publikuje tylko zaplanowane zdarzenia synchronizacyjne.
replicate_ddl 1 Instrukcje języka definicji danych (DDL) wykonywane w wydawcy są replikowane. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server.
0 Instrukcje DDL nie są replikowane. Ta właściwość nie może być zmieniona dla publikacji spoza SQL Server. Replikacja zmian schematu nie może być wyłączona podczas używania replikacji peer-to-peer.
replicate_partition_switch true ALTER TABLE...SWITCH oświadczenia wykonywane na opublikowanej bazie danych powinny być replikowane do subskrybentów. Ta opcja jest prawidłowa tylko wtedy, gdy allow_partition_switch jest ustawiona wartość true. Aby uzyskać więcej informacji, zobacz Replikowanie partycjonowanych tabel i indeksów.
false ALTER TABLE...SWITCH oświadczenia nie powinny być replikowane do Subskrybentów.
retention int oznacza okres retencji w godzinach dla aktywności subskrypcyjnej. Jeśli subskrypcja nie jest aktywna w okresie retencyjnym, zostaje usunięta.
snapshot_in_defaultfolder true Pliki snapshotów są przechowywane w domyślnym folderze snapshotów. Jeśli alt_snapshot_folder również jest to określone, pliki snapshotów są przechowywane zarówno w domyślnych, jak i alternatywnych lokalizacjach.
false Pliki migawkowe są przechowywane w alternatywnym miejscu określonym przez alt_snapshot_folder.
status active Dane publikacji są dostępne dla Subskrybentów natychmiast po utworzeniu publikacji. Nie jest obsługiwane przez Oracle Publishers.
inactive Dane o publikacji nie są dostępne dla Subskrybentów w momencie tworzenia publikacji. Nie jest obsługiwane przez Oracle Publishers.
sync_method native Używa natywnego trybu kopiowania zbiorowego ze wszystkich tabel podczas synchronizacji subskrypcji.
character Używa trybu znakowego kopiowania zbiorczego wyjścia wszystkich tabel podczas synchronizacji subskrypcji.
concurrent Wykorzystuje natywne kopiowanie programów w trybie natywnym, kopiowanie wszystkich tabel, ale nie blokuje tabel podczas generowania snapshotów. Nie dotyczy replikacji snapshotów.
concurrent_c Używa kodowania programów w trybie znakowym do kopiowania wszystkich tabel, ale nie blokuje tabel podczas generowania snapshotów. Nie dotyczy replikacji snapshotów.
taskid Ta własność jest przestarzała i nie jest już wspierana.
allow_drop true Umożliwia DROP TABLE wsparcie DLL dla artykułów będących częścią replikacji transakcyjnej. Minimalna obsługiwana wersja: SQL Server 2014 (12.x) Service Pack 2 lub nowszy oraz SQL Server 2016 (13.x) Service Pack 1 lub nowszy. Więcej informacji można znaleźć w KB 3170123
false (ustawienie domyślne) Wyłącza DROP TABLE wsparcie DLL dla artykułów będących częścią replikacji transakcyjnej.
NULL (ustawienie domyślne) Zwraca listę wspieranych wartości dla @property.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Uznaje, że działanie podjęte przez tę procedurę przechowywaną może unieważnić istniejący migawkę. @force_invalidate_snapshot jest bitowa z wartością domyślną 0.

  • 0 określa, że zmiany w artykule nie powodują, że migawka jest nieprawidłowa. Jeśli procedura przechowywana wykryje, że zmiana wymaga nowego snapshota, wystąpi błąd i nie zostaną wprowadzone żadne zmiany.
  • 1 Określa, że zmiany w artykule mogą sprawić, że migawka będzie nieważna. Jeśli istnieją istniejące subskrypcje wymagające nowego snapshota, ta wartość daje pozwolenie na oznaczenie istniejącego snapshota jako przestarzałego i wygenerowanie nowego.

Zobacz sekcję Uwagi dotyczące właściwości, które po zmianie wymagają wygenerowania nowego snapshota.

[ @force_reinit_subscription = ] force_reinit_subscription

Potwierdza, że działanie podjęte przez tę procedurę przechowywaną może wymagać ponownej inicjalizacji istniejących subskrypcji. @force_reinit_subscription jest bitowa z wartością domyślną 0.

  • 0 określa, że zmiany w artykule nie powodują ponownego zainicjowania subskrypcji. Jeśli procedura przechowywana wykryje, że zmiana wymagałaby ponownej inicjalizacji istniejących subskrypcji, pojawia się błąd i nie wprowadza się żadnych zmian.
  • 1 Określa, że zmiany w artykule powodują ponowną inicjalizację istniejącej subskrypcji oraz dają zgodę na ponowną inicjałację subskrypcji.

[ @publisher = ] N'publisher'

Określa wydawcę niebędącego SQL Serverem. @publisher to nazwa systemu, z domyślnym .NULL

@publisher nie powinno być używane przy zmianie właściwości artykułu na SQL Server Publisher.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Remarks

sp_changepublication jest wykorzystywany w replikacji snapshotów oraz replikacji transakcyjnej.

Po zmianie dowolnej z poniższych właściwości musisz wygenerować nowy migawkę i określić wartość 1 parametru @force_invalidate_snapshot .

  • alt_snapshot_folder
  • compress_snapshot
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode

Aby wypisać obiekty publikacji w Active Directory za pomocą parametrupublish_to_active_directory, obiekt SQL Server musi być już utworzony w Active Directory.

Efekt natychmiastowej synchronizacji

Gdy synchronizacja natychmiastowa jest włączona, wszystkie zmiany w logu są śledzone natychmiast po wygenerowaniu początkowego snapshota, nawet jeśli nie ma subskrypcji. Zarejestrowane zmiany są używane, gdy klient korzysta z kopii zapasowej do dodania nowego węzła partnerskiego. Po przywróceniu kopii zapasowej peer jest synchronizowany z innymi zmianami zachodzącymi po wykonaniu kopii zapasowej. Ponieważ polecenia są śledzone w bazie dystrybucji, logika synchronizacji może spojrzeć na ostatni zgromadzony LSN i wykorzystać go jako punkt wyjścia, wiedząc, że polecenie jest dostępne, jeśli kopia zapasowa została wykonana w ramach maksymalnego okresu retencji. (Domyślna wartość minimalnego okresu retencji to 0 godzin, a maksymalny 24 godziny.)

Gdy natychmiastowa synchronizacja jest wyłączona, zmiany są przechowywane co najmniej przez minimalny okres retencji i natychmiast czyszczone dla wszystkich już powielonych transakcji. Jeśli synchronizacja natychmiastowa jest wyłączona i skonfigurowana z domyślnym okresem retencyjnym, prawdopodobnie wymagane zmiany po wykonaniu kopii zapasowej zostały usunięte i nowy węzeł partnerski nie zostanie poprawnie zainicjalizowany. Jedyną opcją jest zawieszenie topologii. Ustawienie natychmiastowej synchronizacji na włączone zapewnia większą elastyczność i jest zalecanym wyborem do replikacji P2P.

Examples

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Permissions

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