Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Bir yayına abonelik ekler ve Abone durumunu ayarlar. Bu saklı yordam yayın veritabanındaki Publisher'da yürütülür.
Transact-SQL söz dizimi kuralları
Sözdizimi
sp_addsubscription
[ @publication = ] N'publication'
[ , [ @article = ] N'article' ]
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @destination_db = ] N'destination_db' ]
[ , [ @sync_type = ] N'sync_type' ]
[ , [ @status = ] N'status' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @update_mode = ] N'update_mode' ]
[ , [ @loopback_detection = ] N'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 = ] N'optional_command_line' ]
[ , [ @reserved = ] N'reserved' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @dts_package_name = ] N'dts_package_name' ]
[ , [ @dts_package_password = ] N'dts_package_password' ]
[ , [ @dts_package_location = ] N'dts_package_location' ]
[ , [ @distribution_job_name = ] N'distribution_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @backupdevicetype = ] N'backupdevicetype' ]
[ , [ @backupdevicename = ] N'backupdevicename' ]
[ , [ @mediapassword = ] N'mediapassword' ]
[ , [ @password = ] N'password' ]
[ , [ @fileidhint = ] fileidhint ]
[ , [ @unload = ] unload ]
[ , [ @subscriptionlsn = ] subscriptionlsn ]
[ , [ @subscriptionstreams = ] subscriptionstreams ]
[ , [ @subscriber_type = ] subscriber_type ]
[ , [ @memory_optimized = ] memory_optimized ]
[ ; ]
Arguments
[ @publication = ] Yayın yok'
Yayının adı. @publicationsysname'dir, varsayılan yoktur.
[ @article = ] N'article'
Yayının abone olduğu makale.
@articlesysname'dir, varsayılan olarak .all Eğer all, o yayındaki tüm makalelere bir abonelik eklenir. Yalnızca Oracle all Publishers için veya NULL değerleri desteklenir.
[ @subscriber = ] Abone değilim'
Abonenin adı.
@subscribersysname'dir ve varsayılan olarak .NULL
Uyarı
Sunucu adı, varsayılan örnek veya <Hostname>,<PortNumber> adlandırılmış örnek için olarak <Hostname>\<InstanceName>,<PortNumber> belirtilebilir. SQL Server özel bir bağlantı noktasıyla Linux veya Windows'a dağıtıldığında ve tarayıcı hizmeti devre dışı bırakıldığında bağlantınızın bağlantı noktası numarasını belirtin. Uzak dağıtımcı için özel bağlantı noktası numaralarının kullanımı SQL Server 2019 (15.x) ve sonraki sürümler için geçerlidir.
[ @destination_db = ] N'destination_db'
Çoğaltılan verilerin yerleştirileceği hedef veritabanının adı.
@destination_dbsysname'dir, varsayılan olarak .NULL Ne zaman NULL, @destination_db yayın veritabanının adı olarak ayarlanır. Oracle Publishers için @destination_db belirtilmelidir. SQL Server olmayan bir abone için, @destination_db için (varsayılan hedef) değerini belirtin.
[ @sync_type = ] N'sync_type'
Abonelik senkronizasyon türü. @sync_typenvarchar(255)'dir ve aşağıdaki değerlerden biri olabilir:
| Değer | Description |
|---|---|
none
1 |
Abone, yayımlanan tablolar için şema ve ilk verilere zaten sahip. |
automatic (varsayılan) |
Yayınlanan tablolar için şema ve ilk veriler önce Aboneye aktarılır. |
replication support only
2 |
Abone Üyesinde makalenin otomatik olarak özel olarak saklanan prosedürleri ve abonelikleri güncellemeyi destekleyen tetikleyicileri sağlar, uygunsa. Abonenin zaten yayımlanmış tablolar için şema ve ilk verilere sahip olduğunu varsayar. Eşler arası işlem replikasyon topolojisi yapılandırılırken, topolojideki tüm düğümlerdeki verilerin aynı olduğundan emin olun. Daha fazla bilgi için Peer-to-Peer - İşlemsel Çoğaltma sayfasına bakınız. |
initialize with backup
2 |
Yayımlanan tablolar için şema ve ilk veriler, yayın veritabanının yedeklerinden elde edilir. Abonenin yayın veritabanının yedeklerine erişimi olduğunu varsayar. Yedeklerin konumu ve yedekleme için medya türü @backupdevicename ve @backupdevicetype tarafından belirtilir. Bu seçenek kullanılırken, eşler arası işlem replikasyon topolojisi yapılandırma sırasında susturulması gerekmez. |
initialize from lsn |
Bir düğümü eşler arası işlem replikasyonu topolojisine eklerken kullanılır. Tüm ilgili işlemlerin yeni düğüme çoğaltıldığından emin olmak için kullanılır @subscriptionlsn . Abonenin zaten yayımlanmış tablolar için şema ve ilk verilere sahip olduğunu varsayar. Daha fazla bilgi için Peer-to-Peer - İşlemsel Çoğaltma sayfasına bakınız. |
1 Bu seçenek kullanımdan kaldırılmıştır. Bunun yerine sadece replikasyon desteği kullanın.
2 SQL Server dışı yayınlara abonelikler için desteklenmemektedir.
Uyarı
Sistem tabloları ve veriler her zaman aktarılır.
[ @status = ] N'status'
Abonelik durumu.
@statussysname'dir ve varsayılan olarak .NULL Bu parametre açıkça ayarlanmadığında, replikasyon otomatik olarak bu değerlerden birine ayarlıyor.
| Değer | Description |
|---|---|
active |
Abonelik başlatılmış ve değişiklikleri kabul etmeye hazırdır. Bu seçenek, @sync_type değeri sıfır olduğunda, yedekleme ile başlatıldığında veya sadece çoğaltma desteği olduğunda ayarlanır. |
subscribed |
Abonelik başlatılmalıdır. Bu seçenek, @sync_type değeri otomatik olduğunda ayarlanır. |
[ @subscription_type = ] N'subscription_type'
Abonelik türü.
@subscription_typenvarchar(4)'dür ve varsayılan olarak .push
push veya pull olabilir. Push aboneliklerin Dağıtım Ajanları Dağıtıcıda, pull aboneliklerin Dağıtım Ajanları ise Abonede yer alır.
@subscription_typepull, Yayıncıya bilinen isimli bir pull abonelik oluşturmak olabilir. Daha fazla bilgi için Yayınlara Abone Ol.
Uyarı
Anonim abonelikler bu saklanan prosedürü kullanmak zorunda değildir.
[ @update_mode = ] N'update_mode'
Güncelleştirme türü. @update_modenvarchar(30)'dur ve bu değerlerden biri olabilir.
| Değer | Description |
|---|---|
read only (varsayılan) |
Abonelik sadece okunabilir. Abone Sayfasındaki değişiklikler Yayıncıya gönderilmez. |
sync tran |
Aboneliklerin anında güncellenmesini destekler. Oracle Publishers için desteklenmiyor. |
queued tran |
Aboneliği sırada güncelleme için etkinleştiriyor. Veri değişiklikleri Abone tarafından yapılabilir, bir kuyruk halinde saklanabilir ve ardından Yayıncıya iletilebilir. Oracle Publishers için desteklenmiyor. |
failover |
Aboneliği, sırada güncelleme ile hemen güncelleme için etkinleştiriyor. Veri değişiklikleri Abone tarafından yapılabilir ve hemen Yayıncıya iletilebilir. Yayıncı ve Abone bağlı değilse, güncelleme modu değiştirilebilir ve abone tarafından yapılan veri değişiklikleri Abone ile Yayıncı yeniden bağlanana kadar bir kuyruk halinde saklanabilir. Oracle Publishers için desteklenmiyor. |
queued failover |
Aboneliği kuyruklu güncelleme aboneliği olarak etkinleştirir ve anında güncelleme moduna geçebilir. Veri değişiklikleri Abone tarafından yapılabilir ve Abone ile Yayıncı arasında bağlantı kurulana kadar bir kuyruk halinde saklanabilir. Sürekli bağlantı kurulduğunda, güncelleme modu anında güncellemeye dönüştürülebilir. Oracle Publishers için desteklenmiyor. |
Abone olan yayın DTS'ye izin verirse ve queued tran değerleri sync tran izin verilmez.
[ @loopback_detection = ] N'loopback_detection'
Dağıtım Ajanı'nın Aboneden gelen işlemleri aboneye geri gönderip göndermediğini belirtir. @loopback_detectionnvarchar(5)'dir ve bu değerlerden biri olabilir.
| Değer | Description |
|---|---|
true |
Dağıtım Ajanı, Aboneden gelen işlemleri Aboneye geri göndermez. İki yönlü işlem replikasyonunda kullanılır. Daha fazla bilgi için bkz. Çift Yönlü İşlem Çoğaltma. |
false |
Dağıtım Ajanı, Aboneden gelen işlemleri Aboneye geri gönderir. |
NULL (varsayılan) |
SQL Server Abonesi için otomatik olarak doğru, SQL Server olmayan bir abone için false olarak ayarlanır. |
[ @frequency_type = ] frequency_type
Dağıtım görevinin planlanma sıklığı. @frequency_typeint'tir ve bu değerlerden biri olabilir.
| Değer | Description |
|---|---|
1 |
Bir kerelik |
2 |
İsteğe bağlı |
4 |
Günlük |
8 |
Weekly |
16 |
Monthly |
32 |
Aylık akraba |
64 (varsayılan) |
Otomatik başlatma |
128 |
Yinelenen |
[ @frequency_interval = ] frequency_interval
Frekansa uygulanacak değer @frequency_type.
@frequency_intervalint, varsayılan olarak .NULL
[ @frequency_relative_interval = ] frequency_relative_interval
Dağıtım Temsilcisinin tarihi. Bu parametre @frequency_type (aylık göreli) olarak ayarlandığında 32 kullanılır.
@frequency_relative_intervalint'dir ve bu değerlerden biri olabilir.
| Değer | Description |
|---|---|
1 |
First |
2 |
Second |
4 |
Third |
8 |
Fourth |
16 |
Son |
NULL (varsayılan) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
@frequency_type tarafından kullanılan tekrarlama faktörü.
@frequency_recurrence_factorint, varsayılan olarak .NULL
[ @frequency_subday = ] frequency_subday
Belirlenmiş süre içinde dakikalar içinde ne sıklıkla yeniden planlama yapılacağı. @frequency_subdayint'tir ve bu değerlerden biri olabilir.
| Değer | Description |
|---|---|
1 |
Bir kez |
2 |
Second |
4 |
Minute |
8 |
Saat |
NULL |
[ @frequency_subday_interval = ] frequency_subday_interval
@frequency_subday aralığı.
@frequency_subday_intervalint, varsayılan olarak .NULL
[ @active_start_time_of_day = ] active_start_time_of_day
Dağıtım Ajanının ilk kez planlandığı günün saati, biçimlendirilmiştir.HHmmss
@active_start_time_of_dayint, varsayılan olarak .NULL
[ @active_end_time_of_day = ] active_end_time_of_day
Dağıtım Ajanının planlanmayı durdurduğu saat, biçimlendirilir.HHmmss
@active_end_time_of_dayint, varsayılan olarak .NULL
[ @active_start_date = ] active_start_date
Dağıtım Temsilcisinin ilk planlandığı tarih, biçimlendirilmiştir.yyyyMMdd
@active_start_dateint, varsayılan olarak .NULL
[ @active_end_date = ] active_end_date
Dağıtım Ajanının planlanmayı durdurduğu tarih, biçimlendirilmiştir.yyyyMMdd
@active_end_dateint, varsayılan olarak .NULL
[ @optional_command_line = ] N'optional_command_line'
Çalıştırmak için isteğe bağlı komut dizisi.
@optional_command_linenvarchar(4000)'dir ve varsayılan olarak .NULL
[ @reserved = ] Kayıtsız'
Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Aboneliğin Windows Senkronizasyon Yöneticisi üzerinden senkronize edilip emeyeceği.
@enabled_for_syncmgr, varsayılan olarak nvarchar(5NULL)'dir ve bu da ile falseaynıdır. Eğer false, abonelik Windows Senkronizasyon Yöneticisi'ne kayıtlı değil. Eğer true, abonelik Windows Senkronizasyon Yöneticisi'ne kayıtlıdır ve SQL Server Management Studio'yu başlatmadan senkronize edilebilir. Oracle Publishers için desteklenmiyor.
[ @offloadagent = ] boşaltma maddesi
Ajanın uzaktan etkinleştirilebilmesini belirtir.
@offloadagentbittir ve varsayılan olarak .0
Uyarı
Bu parametre kullanımdan kaldırılmıştır ve yalnızca scriptlerin geriye dönük uyumluluğu için korunmaktadır.
[ @offloadserver = ] N'offloadserver'
Uzaktan etkinleştirme için kullanılacak sunucunun ağ adını belirtir.
@offloadserversysname'dir, varsayılan NULLolarak .
[ @dts_package_name = ] N'dts_package_name'
Veri Dönüşüm Hizmetleri (DTS) paketinin adını belirtir.
@dts_package_namesysname'dir, varsayılan olarak .NULL Örneğin, bir paket belirtmek DTSPub_Packageiçin parametre şu olur @dts_package_name = N'DTSPub_Package'. Bu parametre push abonelikleri için kullanılabilir. DTS paket bilgisini pull aboneliğine eklemek için sp_addpullsubscription_agent.
[ @dts_package_password = ] N'dts_package_password'
Paketteki şifreyi belirtiyor, eğer varsa.
@dts_package_passwordsysname'dir ve varsayılan olarak .NULL
Uyarı
Eğer @dts_package_name belirtiliyorsa, şifre belirtmeniz gerekir.
[ @dts_package_location = ] N'dts_package_location'
Paket konumunu belirtir.
@dts_package_locationnvarchar(12)'dir ve varsayılan NULLolarak , bu da ile distributoraynıdır. Paketin konumu veya distributorolabilirsubscriber.
[ @distribution_job_name = ] N'distribution_job_name'
Yalnızca bilgilendirme amacıyla tanımlanır. Desteklenmiyor. Gelecekteki uyumluluk garanti edilmemektedir.
[ @publisher = ] N'publisher'
SQL Server olmayan bir Yayıncı belirtir.
@publishersysname'dir ve varsayılan olarak .NULL
Uyarı
@publisher bir SQL Server Publisher için belirtilmemeli.
[ @backupdevicetype = ] N'backupdevicetype'
Bir Abone yedekten başlatılırken kullanılan yedek cihaz türünü belirtir. @backupdevicetypenvarchar(20)'dir ve şu değerlerden biri olabilir:
| Değer | Description |
|---|---|
logical (varsayılan) |
Yedek cihaz mantıksal bir cihazdır |
disk |
Yedek cihaz disk sürücüdür |
tape |
Yedek cihaz bir bant sürücüdür |
url |
Yedek cihaz bir URL'dir |
@backupdevicetype sadece @sync_method initialize_with_backup olarak ayarlandığında kullanılır.
[ @backupdevicename = ] N'backupdevicename'
Yedekten bir abone başlatılırken kullanılan cihazın adını belirtir.
@backupdevicenamenvarchar(1000)'dir ve varsayılan olarak .NULL
[ @mediapassword = ] N'mediapassword'
Medya biçimlendirildiğinde şifre ayarlanmışsa, medya seti için bir şifre belirtir.
@mediapasswordsysname'dir ve varsayılan olarak .NULL
Uyarı
Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın.
[ @password = ] N'password'
Yedek oluşturulduğunda şifre ayarlanmışsa, yedekleme için bir şifre belirtir.
@passwordsysname değeridir ve varsayılan değeri .NULL
[ @fileidhint = ] Fileidhint
Geri yüklenecek yedek kümesinin bir sıralı değerini belirler.
@fileidhintint, varsayılan olarak NULL.
[ @unload = ] boşaltma
Bir bant yedekleme cihazının arkadan başlatma işlemi tamamlandıktan sonra boşaltılıp boşalmayacağını belirtir.
@unloadbittir ve varsayılan 1olarak , bu da bandın boşalması gerektiğini belirtir.
@unload sadece @backupdevicetype olduğunda tapekullanılır.
[ @subscriptionlsn = ] subscriptionlsn
Aboneliğin, eşler arası işlem replikasyon topolojisindeki bir düğüme değişiklikler göndermeye başlaması gereken log dizisi numarasını (LSN) belirtir.
@subscriptionlsnikilidir(10) ve varsayılan olarak .NULL Tüm ilgili işlemlerin yeni bir düğüme çoğaltıldığından emin olmak için @sync_type değeriyle initialize from lsn kullanılır. Daha fazla bilgi için Peer-to-Peer - İşlemsel Çoğaltma sayfasına bakınız.
[ @subscriptionstreams = ] abonelik akışları
Tek bir iş parçacığı kullanılırken mevcut işlem özelliklerinin birçoğu korunurken Dağıtım Aracısı başına bir aboneye paralel olarak toplu değişiklikler uygulamasına izin verilen bağlantı sayısı.
@subscriptionstreamstinyint'tir, varsayılan olarak .NULL Bir değer 64 aralığı desteklenir1. Bu parametre, SQL Server olmayan aboneler, Oracle Publisher'lar veya eşler arası abonelikler için desteklenmez.
@subscriptionstreams kullanıldığında, tabloya msreplication_subscriptions ek satırlar eklenir (her akış başına bir satır) ve bir agent_id ayar olarak ayarlanırNULL.
Uyarı
Transact-SQL teslim etmek üzere yapılandırılmış makalelerde abonelik akışları çalışmaz. Abonelik akışlarını kullanmak için, makaleleri bunun yerine saklı yordam çağrılarını teslim edecek şekilde yapılandırın.
[ @subscriber_type = ] subscriber_type
Abone türü. @subscriber_typeminyinttir ve bu değerlerden biri olabilir.
| Değer | Description |
|---|---|
0 (varsayılan) |
SQL Server Subscriber |
1 |
ODBC veri kaynak sunucusu |
2 |
Microsoft Jet veritabanı |
3 |
OLE DB sağlayıcısı |
[ @memory_optimized = ] memory_optimized
Aboneliğin bellek optimize edilmiş tabloları desteklediğini gösterir.
@memory_optimizedbit'tir, varsayılan 0 olarak (yanlış) olur.
1 (doğru), aboneliğin bellek optimize edilmiş tabloları desteklediği anlamına gelir.
Dönüş kodu değerleri
0 (başarı) veya 1 (başarısızlık).
Açıklamalar
sp_addsubscription anlık görüntü çoğaltma ve işlemsel çoğaltmada kullanılır.
sp_addsubscription
Sysadmin sabit sunucu rolünün bir üyesi tarafından push aboneliği oluşturmak için çalıştırıldığında, Dağıtım Ajanı işi örtük olarak SQL Server Agent hizmet hesabı altında oluşturulur ve çalıştırılır.
sp_addpushsubscription_agent çalıştırmanızı ve farklı bir ajana özgü Windows hesabının kimlik bilgilerini belirtmenizi öneririz@job_login.@job_password Daha fazla bilgi için bkz . Çoğaltma Aracısı Güvenlik Modeli.
sp_addsubscription ODBC ve OLE DB abonelerinin şu yayınlara erişimini engelliyor:
Yerel @sync_method ile sp_addpublication çağrısında oluşturuldu.
Yayına sp_addarticle saklanan prosedürle eklenen ve @pre_creation_cmd parametre değeri 3 (kısalt) olan makaleleri içerir.
@update_mode
sync tranayarlamaya çalışın.Bir makaleyi parametrizlenmiş ifadeler kullanacak şekilde yapılandırın.
Ayrıca, bir yayında @allow_queued_tran seçeneği true olarak ayarlanmışsa (bu da değişikliklerin Yayıncıda uygulanana kadar Abone tarafından sıraya alınmasını sağlar), makaledeki zaman damgası sütunu zaman damgası olarak yazılır ve o sütundaki değişiklikler Aboneye gönderilir. Abone, zaman damgası sütun değerini oluşturur ve günceller. Bir ODBC veya OLE DB Abonesi için, sp_addsubscription@allow_queued_tran doğru'ya ayarlanmış ve içinde zaman damgası sütunları olan makalelere abone olma girişimi yapılırsa başarısız olur.
Bir abonelik DTS paketi kullanmıyorsa, @allow_transformable_subscriptions olarak ayarlanmış bir yayına abone olamaz. Yayından alınan tablo hem DTS aboneliğine hem de DTS olmayan aboneliğe çoğaltılması gerekiyorsa, her abonelik türü için bir tane olmak üzere iki ayrı yayın oluşturulmalıdır.
sync_type seçeneği replication support only, initialize with backup, veya initialize from lsn, seçilirken, log okuyucu ajanı çalıştırıldıktan sp_addsubscriptionsonra çalışmalıdır, böylece kurulum betikleri dağıtım veritabanına yazılır. Günlük okuyucu aracısı sysadmin sabit sunucu rolünün üyesi olan bir hesap altında çalışıyor olmalıdır.
@sync_type seçeneği ayarlandığındaAutomatic, özel log okuyucu ajanı eylemleri gerekmez.
Permissions
Yalnızca sistem yöneticisi sabit sunucu rolünün veya sabit db_owner veritabanı rolünün sp_addsubscriptionüyeleri çalıştırabilir. Pull aboneliklerinde, yayın erişim listesinde giriş girişleri olan kullanıcılar .sp_addsubscription
Örnekler
-- 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'AdventureWorks2022Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2022]
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