sp_addsubscription (języka Transact-SQL)

Dodaje subskrypcja do publikacja i ustawia stan subskrybenta.Ta procedura składowana jest wykonywany Wydawca publikacja bazy danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

sp_addsubscription [ @publication = ] 'publication'
    [ , [ @article = ] 'article']
    [ , [ @subscriber = ] 'subscriber' ]
    [ , [ @destination_db = ] 'destination_db' ]
        [ , [ @sync_type = ] 'sync_type' ]
    [ , [ @status = ] 'status'
        [ , [ @subscription_type = ] 'subscription_type' ]
    [ , [ @update_mode = ] 'update_mode' ]
    [ , [ @loopback_detection = ] 'loopback_detection' ]
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @optional_command_line = ] 'optional_command_line' ]
    [ , [ @reserved = ] 'reserved' ]
    [ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
    [ , [ @offloadagent= ] remote_agent_activation]
    [ , [ @offloadserver= ] 'remote_agent_server_name' ]
    [ , [ @dts_package_name= ] 'dts_package_name' ]
    [ , [ @dts_package_password= ] 'dts_package_password' ]
    [ , [ @dts_package_location= ] 'dts_package_location' ]
    [ , [ @distribution_job_name= ] 'distribution_job_name' ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @backupdevicetype = ] 'backupdevicetype' ]
    [ , [ @backupdevicename = ] 'backupdevicename' ]
    [ , [ @mediapassword = ] 'mediapassword' ]
    [ , [ @password = ] 'password' ]
    [ , [ @fileidhint = ] fileidhint ]
    [ , [ @unload = ] unload ]
    [ , [ @subscriptionlsn = ] subscriptionlsn ]
    [ , [ @subscriptionstreams = ] subscriptionstreams ]
    [ , [ @subscriber_type = ] subscriber_type ]

Argumenty

  • [ @publikacja =] 'publication'
    Jest to nazwa publikacja.publicationjest sysname, z braku domyślne.

  • [ @artykuł=\] 'article'
    Jest artykuł , do którego jest subskrybentem publikacja .articlejest sysname, domyślna wartość all.Jeżeli wszystkie, subskrypcja jest dodawany do wszystkich artykułów w tej publikacja.Tylko wartości wszystkie lub NULL są obsługiwane dla wydawców Oracle.

  • [ @subskrybent =] 'subscriber'
    Jest to nazwa subskrybenta.subscriberjest sysname, domyślna wartość NULL.

  • [ @ destination_db =] 'destination_db'
    Jest to nazwa obiekt docelowy bazy danych, w którym należy umieścić replikowanych danych.destination_dbjest sysname, domyślna wartość NULL.Gdy wartość NULL, destination_db jest zestaw nazwa bazy danych publikacja .Dla wydawców Oracle destination_db musi być określony.Dla nie-subskrybent serweraSQL , podaj wartość (domyślne obiekt docelowy) for destination_db.

  • [ @ sync_type =] 'sync_type'
    Jest to typ synchronizacji subskrypcja .sync_typejest nvarchar(255), i może mieć jedną z następujących wartości:

    Wartość

    Opis

    Brak

    Subskrybent już schematu i początkowych danych opublikowanych tabel.

    UwagaUwaga:
    Ta opcja została zaniechana.Zastosowanie Obsługareplikacja tylko Zamiast tego.

    automatyczne (wartość domyślna)

    Schemat i początkowych danych opublikowanych tabel są przenoszone do subskrybenta najpierw.

    Obsługareplikacja tylko

    Zapewnia automatyczne generowanie subskrybent artykuł niestandardowych procedur przechowywanych i wyzwalaczy, które obsługują subskrypcji aktualizacji, w razie potrzeby.Zakłada się, że abonent ma już schematu i początkowych danych opublikowanych tabel.Podczas konfigurowania topologii replikacja transakcyjnej dla peer-to-peer, upewnij się, że dane na wszystkich węzłach w topologii jest identyczny.Aby uzyskać więcej informacji, zobacz temat Jak Konfigurowanie Peer-to-Peer replikacji transakcyjnej (Programowanie replikacji Transact-SQL).

    Nieobsługiwane subskrypcji, inne niż-publikacji serweraSQL .

    Inicjowanie z kopia zapasowa

    Schemat i początkowych danych opublikowanych tabel są uzyskiwane z kopia zapasowa bazy danych publikacja .Zakłada się, że użytkownik ma dostęp do kopia zapasowa bazy danych publikacja .Lokalizacja kopia zapasowa i nośniki typu kopia zapasowa są określane przez backupdevicename i backupdevicetype.Podczas korzystania z tej opcji topologii replikacja transakcyjnej dla peer-to-peer nie muszą być w stanie spoczynku podczas konfiguracja.

    Nieobsługiwane subskrypcji, inne niż-publikacji serweraSQL .

    Inicjowanie z lsn

    Używane podczas dodawania węzła do topologii replikacja transakcyjnej dla peer-to-peer.Używane z @ subscriptionlsn Aby upewnić się, że wszystkie odpowiednie transakcje są replikowane do nowego węzła.Zakłada się, że abonent ma już schematu i początkowych danych opublikowanych tabel.Aby uzyskać więcej informacji, zobacz temat Jak Konfigurowanie Peer-to-Peer replikacji transakcyjnej (Programowanie replikacji Transact-SQL).

    Ostrzeżenie

    Tabele systemowe i danych zawsze są przenoszone.

  • [ @ Stan =] 'status'
    Jest to stan subskrypcja .statusjest sysname, o wartości domyślnej NULL.Kiedy ten parametr nie jest jawnie zestaw, replikacja automatycznie ustawia go do jednego z tych wartości.

    Wartość

    Opis

    aktywne

    Subskrypcja jest zainicjowana i gotowa do przyjęcia zmian.Ta opcja jest zestaw , gdy wartość sync_type jest Brak, Inicjowanie z kopia zapasowalub Obsługareplikacja tylko.

    subskrybowane

    Subskrypcji musi być zainicjowany.Ta opcja jest zestaw , gdy wartość sync_type jest automatyczne.

  • [ @ subscription_type =] 'subscription_type'
    Jest to typ subskrypcja.subscription_typejest nvarchar(4), z domyślnymi wypychanie.Może być wypychanie lub ściągać.Agenci dystrybucji wypychanie Subskrypcje znajdują się na dystrybutora i agenci dystrybucji ściągać Subskrypcje znajdują się przez subskrybenta.subscription_typemoże być ściągać Aby utworzyć nazwanego ściągać subskrypcja , znany Wydawca.Aby uzyskać więcej informacji, zobacz temat Subskrybowanie publikacje.

    Ostrzeżenie

    Subskrypcje anonimowe nie trzeba używać tej procedura składowana.

  • [ @ update_mode =] 'update_mode'
    Jest to typ aktualizacji.update_modejest nvarchar(30), i może być jedną z tych wartości.

    Wartość

    Opis

    tylko do odczytu (wartość domyślna)

    subskrypcja jest tylko do odczytu.Zmiany subskrybent nie są wysyłane do Wydawca.

    transakcji synchronizacji

    Umożliwia obsługę bezpośredniego subskrypcje aktualizacji.Nie jest obsługiwana dla wydawców Oracle.

    transakcji w kolejce

    Umożliwia subskrypcja dla aktualizacji w kolejce.Modyfikacji danych można dokonane przez subskrybenta, przechowywanych w kolejce i następnie propagowane do Wydawca.Nie jest obsługiwana dla wydawców Oracle.

    Praca awaryjna

    Umożliwia subskrypcja do natychmiastowej aktualizacji z aktualizacją kolejce jako pracy awaryjnej.Modyfikacji danych mogą być dokonywane przez subskrybenta i natychmiast przekazywana do Wydawca .Jeśli Wydawca i subskrybenta nie są połączone, tryb aktualizacji może zostać zmieniona tak, aby zmian danych wprowadzonych przez subskrybenta są przechowywane w kolejce, aż abonenta, a Wydawca ponownie podłączane.Nie jest obsługiwana dla wydawców Oracle.

    w kolejce pracy awaryjnej

    Umożliwia subskrypcja jako kolejkowanej aktualizowania subskrypcja z możliwością zmiany trybu na natychmiastowe aktualizowanie.Modyfikacji danych można dokonane przez subskrybenta i przechowywane w kolejce, aż ustanowić połączenia między subskrybenta lub Wydawca.Po ustanowieniu połączenia stałe do natychmiastowej aktualizacji można zmienić tryb aktualizacji.Nie jest obsługiwana dla wydawców Oracle.

    Należy zauważyć, że wartości synchronizacji transakcji i transakcji w kolejce nie są dozwolone, jeśli publikacja jest subskrybentem umożliwia DTS.

  • [ @ loopback_detection =] 'loopback_detection'
    Określa, jeżeli Agent dystrybucji wysyła transakcje utworzone przez subskrybenta do subskrybenta.loopback_detectionjest nvarchar(5), i może być jedną z tych wartości.

    Wartość

    Opis

    PRAWDA

    Agent dystrybucji nie wysyła transakcji pochodzi subskrybent powrót do subskrybenta.Używane z transakcyjnej dwukierunkowy replikacja.Aby uzyskać więcej informacji, zobacz temat Dwukierunkowy replikacji transakcyjnej.

    FAŁSZ

    Rozkład Agent wysyła transakcje utworzone przez subskrybenta do subskrybenta.

    Wartość NULL (wartość domyślna)

    Automatycznie zestaw PRAWDA dla SQL Server subskrybenta i FAŁSZ dla nie-SQL Server subskrybenta.

  • [ @ frequency_type =] frequency_type
    Jest częstotliwość zaplanować zadanie dystrybucji.frequency_typejest int, i może być jedną z tych wartości.

    Wartość

    Opis

    1

    czas

    2

    Na żądanie

    4

    Dzienny

    8

    Tygodniowy

    16

    Miesięczne

    32

    Miesięczne względna

    64 (wartość domyślna)

    Autostart

    128

    Cykliczne

  • [ @ frequency_interval =] frequency_interval
    Jest wartością, którą stosuje się do częstotliwości zestaw przez frequency_type.frequency_intervaljest int, domyślna wartość NULL.

  • [ @ frequency_relative_interval =] frequency_relative_interval
    Jest to data agenta dystrybucji.Ten parametr jest używany podczas frequency_type jest zestaw na 32 (względne miesięcznych).frequency_relative_intervaljest int, i może być jedną z tych wartości.

    Wartość

    Opis

    1

    First

    2

    Drugie

    4

    Trzecia

    8

    Czwarty

    16

    Last

    Wartość NULL (wartość domyślna)

     

  • [ @ frequency_recurrence_factor =] frequency_recurrence_factor
    Jest używany przez współczynnik cykl frequency_type.frequency_recurrence_factorjest int, domyślna wartość NULL.

  • [ @ frequency_subday =] frequency_subday
    Jak często jest w minutach, aby ponownie zaplanować w definiowanym okresie.frequency_subdayjest int, i może być jedną z tych wartości.

    Wartość

    Opis

    1

    Raz

    2

    Drugie

    4

    Minuta

    8

    Godzina

    NULL

     

  • [ @ frequency_subday_interval =] frequency_subday_interval
    Interwał dla frequency_subday.frequency_subday_intervaljest int, domyślna wartość NULL.

  • [ @ active_start_time_of_day =] active_start_time_of_day
    czas po pierwszym agenta dystrybucji zaplanowano, sformatowane jako HHMMSS.active_start_time_of_dayjest int, domyślna wartość NULL.

  • [ @ active_end_time_of_day =] active_end_time_of_day
    czas momentu zatrzymania agenta dystrybucji jest zaplanowane, sformatowane jako HHMMSS.active_end_time_of_dayjest int, domyślna wartość NULL.

  • [ @ active_start_date =] active_start_date
    Jest data , gdy Agent dystrybucji najpierw jest planowana, w formacie RRRRMMDD.active_start_datejest int, domyślna wartość NULL.

  • [ @ active_end_date =] active_end_date
    Jest data zatrzymania agenta dystrybucji planowany, w formacie RRRRMMDD.active_end_datejest int, domyślna wartość NULL.

  • [ @ optional_command_line =] 'optional_command_line'
    Jest opcjonalne wiersz polecenia do wykonać.optional_command_linejest nvarchar(4000), domyślna wartość NULL.

  • [ @ zarezerwowane =] 'reserved'
    Określone tylko w celach informacyjnych. Nieobsługiwane. Przyszła zgodność nie jest gwarantowana.

  • [ @ enabled_for_syncmgr =] 'enabled_for_syncmgr'
    To, czy subskrypcja mogą być synchronizowane za pośrednictwem Microsoft Menedżera synchronizacji systemu Windows. enabled_for_syncmgr jest nvarchar(5), domyślna wartość FALSE.Jeżeli FAŁSZ, subskrypcja nie jest zarejestrowany przy użyciu Menedżera synchronizacji systemu Windows.Jeżeli PRAWDA, subskrypcja jest zarejestrowany przy użyciu Menedżera synchronizacji systemu Windows i może być synchronizowana bez uruchamiania SQL Server Management Studio.Nie jest obsługiwana dla wydawców Oracle.

  • [ @ offloadagent = ] 'remote_agent_activation'
    Określa, można zdalnie aktywować agenta.remote_agent_activationjest bit Domyślna 0.

    Ostrzeżenie

    Ten parametr zaniechano i utrzymywany tylko dla zgodności z poprzednimi wersjami skryptów.

  • [ @ offloadserver = ] 'remote_agent_server_name'
    Określa nazwy sieciowej serwera ma być używany dla aktywacjazdalnej.remote_agent_server_namejest sysname, domyślna wartość NULL.

  • [ @ dts_package_name= ] 'dts_package_name'
    Określa nazwę pakietusług transformacji danych (DTS).dts_package_namejest sysname Domyślna wartość NULL.Na przykład, aby określić pakiet DTSPub_Package, parametr będzie @dts_package_name = N'DTSPub_Package'.Ten parametr jest dostępny dla subskrypcji wypychanie .Aby dodać informacje o pakiet DTS do ściągać subskrypcja, użyj sp_addpullsubscription_agent.

  • [ @ dts_package_password= ] 'dts_package_password'
    Określa hasło na pakiet, jeżeli istnieje.dts_package_passwordjest sysname Domyślna wartość NULL.

    Ostrzeżenie

    Należy określić hasło, jeśli dts_package_name określono.

  • [ @ dts_package_location= ] 'dts_package_location'
    Określa lokalizację pakiet .dts_package_locationjest nvarchar(12), domyślnie DYSTRYBUTORA.Lokalizacja pakiet może być dystrybutor lub subskrybent.

  • [ @ distribution_job_name = ] 'distribution_job_name'
    Określone tylko w celach informacyjnych. Nieobsługiwane. Przyszła zgodność nie jest gwarantowana.

  • [ program publisher @= ] 'publisher'
    Określa różna-Microsoft SQL Server Wydawca.publisherjest sysname, domyślna wartość NULL.

    Ostrzeżenie

    publishernie może być określone dla SQL Server Wydawca.

  • [ @ backupdevicetype= ] 'backupdevicetype'
    Określa typ urządzenia kopia zapasowa używane podczas inicjowania subskrybenta z kopia zapasowa.backupdevicetypejest nvarchar(20), i może być jedną z następujących wartości:

    Wartość

    Opis

    logiczne (wartość domyślna)

    Urządzenie kopia zapasowa jest urządzenie logiczne.

    dysk

    Urządzenie kopia zapasowa jest dysk.

    taśmy

    Urządzenie kopia zapasowa jest stacja taśm

    backupdevicetype jest używane tylko podczas sync_methodzestaw initialize_with_backup.

  • [ @ backupdevicename= ] 'backupdevicename'
    Określa nazwę urządzenia, używany podczas inicjowania subskrybenta z kopia zapasowa.backupdevicenamejest nvarchar(1000), domyślna wartość NULL.

  • [ @ mediapassword= ] 'mediapassword'
    Określa hasło dla zestaw nośników , jeśli hasło została zestaw podczas nośnik został sformatowany.mediapasswordjest sysname, o wartości domyślnej NULL.

    Ostrzeżenie

    Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

  • [ @ hasło= ] 'password'
    Określa hasło dla kopia zapasowa , jeśli hasło zostało zestaw podczas tworzenia kopia zapasowa .passwordjest sysname, o wartości domyślnej NULL.

  • [ @ fileidhint= ] fileidhint
    Identyfikuje wartości porządkowej kopia zapasowa zestaw do przywrócenia.fileidhintjest int, o wartości domyślnej NULL.

  • [ @ unload= ] unload
    Określa urządzenia taśmowego kopia zapasowa powinna być rozładowywane po zakończeniu inicjalizacji z tyłu.unloadjest bit, o wartości domyślne 1.1 Określa taśmę powinny być rozładowane.unloadjest używane tylko podczas backupdevicetype jest taśmy.

  • [ @ subscriptionlsn= ] subscriptionlsn
    Określa numer sekwencyjny dziennika (LSN) jaką subskrypcja powinno rozpocząć się dostarczanie zmiany do węzła w topologii replikacja transakcyjnej dla peer-to-peer.Używane z @ sync_type wartość Inicjowanie z lsn Aby upewnić się, że wszystkie odpowiednie transakcje są replikowane do nowego węzła.Aby uzyskać więcej informacji, zobacz temat Jak Konfigurowanie Peer-to-Peer replikacji transakcyjnej (Programowanie replikacji Transact-SQL).

  • [ @ subscriptionstreams= ] subscriptionstreams
    Jest liczbą połączeń dozwolonych dla jednego agenta dystrybucji do zastosowania instancje zmiany równolegle do subskrybenta, utrzymując, że wiele cech transakcyjnych przedstawić przy użyciu pojedynczego wątek.subscriptionstreamsjest tinyint, o wartości domyślnej NULL.Obsługiwany jest zakres wartości od 1 do 64.Ten parametr nie jest obsługiwana dla nie-SQL Server abonentów, Oracle wydawcy lub subskrypcje peer-to-peer.

  • [ @ subscriber_type =] subscriber_type
    Jest to typ subskrybenta.subscriber_typejest tinyint, i może być jedną z tych wartości.

    Wartość

    Opis

    0 (wartość domyślna)

    SQL ServerSubskrybent

    1

    Serwer źródło danych ODBC

    2

    MicrosoftBaza danych Jet

    3

    OLE DB dostawca

Wartości kodów powrotnych

0 (sukces) lub 1 (błąd)

Uwagi

sp_addsubscription jest używany w migawka replikacja i replikacjatransakcyjnej.

Kiedy sp_addsubscription wykonane przez element członkowski sysadmin stała rola serwera do utworzenia wypychaniesubskrypcja, Agent dystrybucji zadanie niejawnie tworzonymi i jest uruchamiana na koncie usługa agenta serwera SQL . Zalecane jest wykonać sp_addpushsubscription_agent i określ poświadczenia innego konta systemu Windows w agenta specyficzne dla @ job_login i @ job_password.Aby uzyskać więcej informacji, zobacz temat Model zabezpieczeń Agent replikacji.

sp_addsubscription uniemożliwia dostęp ODBC i OLE DB abonentów do publikacji, która:

  • Zostały utworzone za pomocą macierzystego sync_method w wywołaniu sp_addpublication.

  • Zawierają artykuły, które zostały dodane do publikacja z sp_addarticle procedura składowana była pre_creation_cmd wartość parametru 3 (obciąć).

  • Próba zestaw update_mode do transakcji synchronizacji.

  • artykuł skonfigurowano do używania sparametryzowanych sprawozdania.

Ponadto, jeśli publikacja jest allow_queued_tran opcji zestaw na wartość true (która włącza usługi kolejkowania zmian przez subskrybenta, dopóki nie mogą być stosowane przez Wydawca), sygnatura czasowa kolumna w artykuł jest ładowanie się jako timestamp, oraz zmiany w tej kolumna są wysyłane do subskrybentów.Subskrybent generuje i aktualizuje wartość kolumna sygnatury czasowej.ODBC lub OLE DB subskrybenta sp_addsubscription Jeśli próby subskrybować do publikacja , która ma allow_queued_tranzestaw PRAWDA i artykuły z kolumny sygnatury czasowej w nim.

Jeśli subskrypcja nie DTS pakiet, nie subskrybować do publikacja , która jest zestaw na allow_transformable_subscriptions.Jeśli tabela z publikacja muszą być replikowane do DTS subskrypcja i innych niż DTS subskrypcja, dwa oddzielne publikacje mają ma zostać utworzony: jeden dla każdego typu subskrypcja.

Przykład

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @destination_db = @subscriptionDB, 
  @subscription_type = N'push';

--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

Uprawnienia

Tylko członkowie sysadmin stała rola serwera lub db_owner Stała rola bazy danych można wykonać sp_addsubscription.Dla subskrypcji ściągać użytkowników z logowania do listy dostępu publikacja można wykonać sp_addsubscription.