sp_addsubscription (Transact-sql)
Bir yayını bir abonelik ekler ve abone durumunu ayarlar. Bu saklı yordam, yayını veritabanı üzerinde yayımcı adresindeki yürütülür.
Transact-SQL Sözdizim Kuralları
Sözdizimi
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 ]
Bağımsız değişkenler
@ publication ='publication'
Yayını addır. publicationise sysname, hiçbir varsayılan ile.@article='article'
Yayın için abone yazıdır. articleise sysname, tüm varsayılan. Eğer tüm, abonelik Bu yayındaki tüm makaleleri eklenir. Yalnızca değerleri tüm veya null Oracle yayımcılar için desteklenir.@ abone ='subscriber'
Abone addır. subscriberise sysname, null varsayılan.destination_db @ ='destination_db'
Çoğaltılmış veri yerleştirileceği hedef veritabanı adıdır. destination_dbise sysname, null varsayılan. BOŞ zaman, destination_dbyayını veritabanının adı. Oracle yayımcılar, destination_dbbelirtilmesi gerekir. Bir olmayan - SQL Server abone için değeri belirtmeniz (varsayılan hedef) için destination_db.@sync\_type='sync_type'
Abonelik eşitleme türüdür. sync_typeise nvarchar(255), ve aşağıdaki değerlerden biri olabilir:Değer
Açıklama
hiçbiri
Abone şema ve yayımlanmış tablolar için ilk veri zaten.
NotBu seçenek onaylanmaz.Kullanım çoğaltma desteği sadece onun yerine.Otomatik (varsayılan)
Şema ve yayımlanmış tablolar için ilk veri için abone ilk transfer edilir.
yalnızca çoğaltma desteği
Uygunsa, makale özel saklı yordamlarda ve güncelleştirme abonelikleri destekleyen Tetikleyiciler abone otomatik olarak oluşturulmasını sağlar. Abone zaten şema ve yayımlanmış tablolar için ilk veri olduğunu varsayar. Bir eşler arası işlem çoğaltma topolojisi yapılandırırken, tüm düğümler topolojisi veri aynı olduğundan emin olun. Daha fazla bilgi için, bkz. Eşler arası işlem çoğaltma.
Olmayan - SQL Server yayınları abonelikleri için desteklenmiyor.
yedek ile başlatılamıyor
Şema ve yayımlanmış tablolar için ilk veri yayın veritabanını yedekten elde edilir. Abone yayın veritabanı yedeğini erişimi olduğunu varsayar. Yedek ve ortam türü yedekleme konumu olarak belirtilen backupdevicenameve backupdevicetype. Bu seçeneği kullanırken, eşler arası işlem çoğaltma topolojisini yapılandırma sırasında sessiz moda olması gerekir.
Olmayan - SQL Server yayınları abonelikleri için desteklenmiyor.
LSN başlatılamıyor
Bir eşler arası işlem çoğaltma topolojisi düğüm eklerken kullanılan. Kullanılan @ subscriptionlsn yeni düğüm için tüm ilgili hareketler çoğaltılır emin olun. Abone zaten şema ve yayımlanmış tablolar için ilk veri olduğunu varsayar. Daha fazla bilgi için, bkz. Eşler arası işlem çoğaltma.
[!NOT]
Sistem tablolarını ve veri her zaman aktarılır.
@status='status'
Abonelik durumudur. statusise sysname, varsayılan değeri NULL. Bu parametre açık olarak ayarlandığında, çoğaltma otomatik olarak o şu değerlerden birine ayarlar.Değer
Açıklama
etkin
Abonelik başlatıldı ve değişiklikleri kabul etmek hazır. Bu seçenek ne zaman ayarlanır değeri sync_typeolan yok, yedek ile başlatılamıyor, veya çoğaltma desteği sadece.
abone
Abonelik özelliğinin başlatılması gerekiyor. Bu seçenek ne zaman ayarlı değeri sync_typeolan Otomatik.
@ subscription_type ='subscription_type'
Abonelik türü olduğunu. subscription_typeise nvarchar(4), varsayılan itme. Olabilir bas veya Tanıtım. Dağıtım aracıları bas abonelikleri dağıtımcı ve dağıtım aracıları ikamet Çekme abonelikleri Abone tarafında bulunur. subscription_typeolabilir Tanıtım için yayımcı bilinen adlandırılmış çekme abonelik oluşturmak için. Daha fazla bilgi için, bkz. Yayınlara abone.[!NOT]
Anonim abonelikleri bu saklı yordam kullanmanız gerekmez.
@ Update_mode için ='update_mode'
Güncelleştirme türüdür. update_mode olan nvarchar(30), ve bu değerlerden birini olabilir.Değer
Açıklama
salt okunur (varsayılan)
Abonelik salt okunurdur. Değişiklikleri abone için yayımcı gönderilmez.
sync tran
Sağlar için hemen güncelleştirme abonelikleri destekler. Oracle yayımcılar için desteklenmiyor.
Kuyruğa atılmış tran
Aboneliği güncelleştirme sıraya için etkinleştirir. Veri değişiklikleri Abone tarafında yapılan, sıraya depolanan ve yayımcı yayılır. Oracle yayımcılar için desteklenmiyor.
yerine çalışma
Abonelik hemen yerine çalışma kuyruğa alınmış güncelleştirme ile güncelleştirmek için etkinleştirir. Veri değişiklikleri Abone tarafında yapılan ve Publisher'a hemen yayıldı. Publisher ve abone bağlı değil, abone ve Publisher bağlanırlar kadar veri değişiklikleri Abone tarafında yapılan bir kuyrukta saklanır böylece güncelleştirme modunu değiştirebilirsiniz. Oracle yayımcılar için desteklenmiyor.
sıraya alınan yük devretme
Abone olarak kuyruğa alınmış güncelleştirme aboneliği hemen güncelleştirme moduna değiştirme olanağı sağlar. Veri değişiklikleri Abone tarafında yapılan ve abone ve Publisher arasında bir bağlantı kurulana kadar bir kuyrukta saklanır. Sürekli bir bağlantı kurulduğunda güncelleştirme modunu hemen güncelleştirmek için değiştirilebilir. Oracle yayımcılar için desteklenmiyor.
Not değerleri eşitlemetran ve tran sıraya abone yayın dts izin eğer izin verilmez.
@ loopback_detection ='loopback_detection'
Dağıtım aracı geri abone abone adresindeki kaynaklanan hareketler gönderip olmadığını belirtir. loopback_detectionise nvarchar(5), ve bu değerlerden birini olabilir.Değer
Açıklama
TRUE
Dağıtım Aracısı geri abone abone adresindeki kaynaklanan hareketler göndermez. Çift yönlü işlem çoğaltması ile kullanılır. Daha fazla bilgi için, bkz. Çift yönlü işlem çoğaltma.
yanlış
Dağıtım Aracısı geri abone abone adresindeki kaynaklanan hareketleri gönderir.
NULL (varsayılan)
Otomatik olarak ayarlamak gerçek için bir SQL Serverabone ve yanlış için bir olmayan- SQL Server abone.
@ frequency_type =frequency_type
Hangi dağıtım görevi zamanlamak sıklığıdır. frequency_typeise int, ve bu değerlerden biri olabilir.Değer
Açıklama
1
Bir kez
2
İsteğe bağlı
4
Günlük
8
Haftalık
16
Aylık
32
Aylık göreli
64 (varsayılan)
Otomatik başlatma
128
Yinelenen
@ frequency_interval =frequency_interval
Ayarlar sıklığı uygulamak için değeri frequency_type. frequency_intervalise int, null varsayılan.@ frequency_relative_interval =frequency_relative_interval
Dağıtım Aracısı tarihidir. Bu parametre zaman frequency_typeayarı 32 (aylık göreli). frequency_relative_intervalise int, ve bu değerlerden birini olabilir.Değer
Açıklama
1
First
2
İkinci
4
Üçüncü
8
Dördüncü
16
Last
NULL (varsayılan)
@ frequency_recurrence_factor =frequency_recurrence_factor
Tarafından kullanılan yineleme faktörü olduğunu frequency_type. frequency_recurrence_factorise int, null varsayılan.@ frequency_subday =frequency_subday
Dakika olarak tanımlanan dönem içinde yeniden zamanlamak için ne sıklıkta olduğunu. frequency_subdayise int, ve bu değerlerden birini olabilir.Değer
Açıklama
1
Bir kez
2
İkinci
4
Dakika
8
Saat
NULL
@ frequency_subday_interval =frequency_subday_interval
Aralık için frequency_subday. frequency_subday_intervalise int, null varsayılan.@ active_start_time_of_day =active_start_time_of_day
Ne zaman dağıtım aracı ilk günün saati SSDDSS biçimlendirilmiş planlanmıştır. active_start_time_of_dayise int, null varsayılan.@ active_end_time_of_day =active_end_time_of_day
Dağıtım Aracısı durduğunda günün saati zamanlanmış SSDDSS biçimlendirilmiş. active_end_time_of_dayise int, null varsayılan.@ active_start_date =active_start_date
Ne zaman dağıtım aracı ilk tarih YYYYMMDD'nın biçimlendirilmiş planlanmıştır. active_start_dateise int, null varsayılan.@ active_end_date =active_end_date
Dağıtım Aracısı durduğunda tarih zamanlanmış YYYYMMDD'nın biçimlendirilmiş. active_end_dateise int, null varsayılan.@ optional_command_line ='optional_command_line'
İsteğe bağlı komut yürütmek için olduğunu. optional_command_lineise nvarchar(4000), null varsayılan.@reserved='reserved'
Yalnızca bilgi amaçlı olarak belirtilmiştir. Desteklenmez. Gelecekteki uyumluluk garanti edilmez.@ enabled_for_syncmgr ='enabled_for_syncmgr'
Yoksa abonelik üzerinden eşitlenebilir olup MicrosoftWindows Eşitleme Yöneticisi'nin. enabled_for_syncmgr's nvarchar(5), false varsayılan. Eğer yanlış, abonelik Windows Eşitleme Yöneticisi ile kayıtlı değil. Eğer gerçek, abonelik Windows Eşitleme Yöneticisi ile kayıtlı ve başlatmadan eşitlenebilir SQL Server Management Studio. Oracle yayımcılar için desteklenmiyor.@ offloadagent = 'remote_agent_activation'
Aracı uzaktan etkinleştirilebilir belirtir. remote_agent_activationise bitvarsayılan ile 0.[!NOT]
Bu parametre onaylanmaz ve yalnızca komut dosyaları geriye dönük uyumluluk için korunur.
@ offloadserver = 'remote_agent_server_name'
Uzak etkinleştirme için kullanılan sunucu ağ adını belirtir. remote_agent_server_name* *ise sysname, null varsayılan.@ dts_package_name=] 'dts_package_name'
Veri Dönüştürme Hizmetleri (dts) paketinin adını belirtir. dts_package_nameolan bir sysnamenull varsayılan. Örneğin, bir paket DTSPub_Package belirtmek için parametre olacaktır @dts\_package\_name = N'DTSPub_Package'. Bu parametre, itme abonelikleri için kullanılabilir. Çekme abonelik dts paketi bilgileri eklemek için kullanın sp_addpullsubscription_agent.@ dts_package_password=] 'dts_package_password'
Varsa Paket parolasını belirtir. dts_package_passwordise sysnamenull varsayılan.[!NOT]
Eğer bir parola belirtmelisiniz dts_package_namebelirtilen.
@ dts_package_location=] 'dts_package_location'
Paket konumu belirtir. dts_package_locationolan bir nvarchar(12), DAĞITIMCI varsayılan. Paket konumu olabilir Dağıtıcı veya abone.@ distribution_job_name = 'distribution_job_name'
Yalnızca bilgi amaçlı olarak belirtilmiştir. Desteklenmez. Gelecekteki uyumluluk garanti edilmez.@ publisher=] 'publisher'
Olmayan bir belirtir- Microsoft SQL Server Yayınevi. publisherise sysname, null varsayılan.[!NOT]
publisheriçin belirtilmemelidir bir SQL ServerYayınevi.
@ backupdevicetype=] 'backupdevicetype'
Bir abone bir yedek başlatırken kullanılan yedekleme aygıtı türünü belirtir. backupdevicetypeise nvarchar(20), ve bu değerlerden biri olabilir:Değer
Açıklama
mantıksal (varsayılan)
Yedekleme aygıtı, mantıksal aygıttır.
diski
Yedekleme aygıtı disk sürücüsüdür.
Teyp
Yedekleme aygıtı olan bir teyp sürücüsü
backupdevicetypesadece kullanıldığında sync_method ayarı initialize_with_backup.
@ backupdevicename=] 'backupdevicename'
Bir abone bir yedek başlatırken kullanılan aygıt adını belirtir. backupdevicenameise nvarchar(1000), null varsayılan.@ mediapassword=] 'mediapassword'
Medya biçimlendirilirken bir parola ayarlanmışsa ortam kümesi için bir parola belirtir. mediapasswordise sysname, varsayılan değeri NULL.[!NOT]
Bu özellik Microsoft SQL Server'ın ilerideki bir sürümünde kaldırılacaktır. Yeni geliştirme işlerinde bu özelliği kullanmaktan kaçının ve bu özelliği kullanmakta olan uygulamalarda değişiklik yapmayı planlayın.
@password= ] 'password'
Yedek oluşturulurken parola ayarlanmışsa yedekleme parolasını belirtir. passwordise sysname, varsayılan değeri NULL.@ fileidhint=] fileidhint
Geri yüklenecek yedek bir sıra değerini tanımlar. fileidhintise int, varsayılan değeri NULL.@unload= ] unload
Geri başlatma işlemi tamamlandıktan sonra teyp yedekleme aygıtı yüklenmemiş olmadığını belirtir. unloadise bit, varsayılan değeri 1. 1 teybi boş olması gerektiğini belirtir. unloadsadece kullanıldığında backupdevicetypeolan teyp.@ subscriptionlsn=] subscriptionlsn
Bir abonelik için bir düğüm bir eşler arası işlem çoğaltma topolojisi değişiklikleri teslim etme başlamalı günlük sıra numarası (lsn) belirtir. İle kullanılan bir @ sync_type değeri lsn başlatılamıyor yeni bir düğüm için tüm ilgili hareketler çoğaltılır emin olun. Daha fazla bilgi için, bkz. Eşler arası işlem çoğaltma.@ subscriptionstreams=subscriptionstreams
Dağıtım Aracısı için birçok işlem özellikleri tek bir iş parçacığı kullanarak mevcut korunarak değişikliklere paralel olarak abone, toplu işlemleri uygulamak için izin verilen bağlantı sayısıdır. subscriptionstreamsise tinyint, varsayılan değeri NULL. Kısa bir süre önce 1 64 değer aralığı desteklenir. Bu parametre için desteklenmiyor olmayan- SQL Server aboneleri, Oracle yayımcılar veya eşler arası abonelikleri.@ subscriber_type =subscriber_type
Abone türüdür. subscriber_typeise tinyint, ve bu değerlerden birini olabilir.Değer
Açıklama
0 (varsayılan)
SQL ServerAbone
1
odbc veri kaynağı sunucu
2
MicrosoftJet veritabanı
3
ole db sağlayıcısı
Dönüş Kodu Değerleri
0 (başarılı) veya 1 (hata)
Açıklamalar
sp_addsubscription anlık görüntü çoğaltma ve işlem çoğaltma kullanılır.
Ne zaman sp_addsubscription bir üyesi tarafından yürütülen sysadmin sabit sunucu rolü bir itme abonelik oluşturmak için dağıtım aracısını iş örtük olarak oluşturulur ve SQL Server Agent hizmet hesabı altında çalışır. Eğer yürütme öneririz sp_addpushsubscription_agent ve farklı, ajan özel bir Windows hesabı için kimlik bilgilerini belirtin @ job_login ve @ job_password. Daha fazla bilgi için, bkz. Çoğaltma aracısı güvenlik modeli.
sp_addsubscription yayınlar için odbc ve ole db aboneleri erişimi engeller ki:
Yerli ile oluşturulan sync_methodArama sp_addpublication.
İle yayına eklenen Makaleler içeren sp_addarticle saklı yordamı vardı bir pre_creation_cmdparametre değeri 3 (kes).
Ayarlama girişimi update_modeiçin eşitleme tran.
Parametreli deyimleri kullanmak üzere yapılandırılmış bir makale var.
Ayrıca bir yayın varsa, allow_queued_transeçeneği (değişiklikleri abone adresindeki Yayımcı tarafında uygulanana kadar queuing etkinleştirir) true olarak ayarlanmış bir makale zaman damgası sütunu vermeyecekleri dışarı olarak timestamp, ve o sütun değişiklikleri abone gönderilir. Abone oluşturur ve zaman damgası sütun değerini güncelleştirir. odbc veya ole db abone, sp_addsubscription başarısız olursa bir girişimi olan bir yayına abone allow_queued_traniçin gerçek ve o zaman damgası sütunları olan makaleleri.
Bir abonelik dts paketini kullanmıyorsa, ayarlanmış yayınına abone olamaz allow_transformable_subscriptions. Yayını tablosundan bir dts abonelik ve dts abonelik için çoğaltılması gereken iki ayrı yayın oluşturulması gerekir: bir abonelik her tür.
Seçerken sync_typeseçenekleri replication support only, initialize with backup, ya initialize from lsn, günlük Okuma Aracısı yürüttükten sonra çalıştırılmalıdır sp_addsubscription, bu yüzden kurulum komut dosyalarını dağıtım veritabanına yazılmaz. Günlük Okuma Aracısı bir üyesi olan bir hesabı altında çalışmalıdır sysadmin sunucu rolü. Ne zaman sync_typeseçeneğini ayarlamak Automatic, özel günlük Okuyucu Aracısı işlem gereklidir.
İzinler
Yalnızca üyeleri sysadmin sabit sunucu rolü veya db_owner sabit veritabanı rolü yürütebilirsiniz sp_addsubscription. Çekme abonelikleri için oturumu yayın erişim listesindeki kullanıcılar yürütebilirsiniz sp_addsubscription.
Örnek
-- 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'AdventureWorks2012Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2012]
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
Ayrıca bkz.
Başvuru
sp_addpushsubscription_agent (Transact-sql)
sp_changesubstatus (Transact-sql)
sp_dropsubscription (Transact-sql)
sp_helpsubscription (Transact-sql)
Sistem saklı yordamları (Transact-sql)