Itme abonelik oluşturma
Itme abonelik oluşturma açıklanmıştır SQL Server 2012kullanarak SQL Server Management Studio, Transact-SQL, ya da Çoğaltma Yönetimi Nesneleri'ni (rmo). Bir sigara için itme aboneliği oluşturma hakkında bilgi için- SQL Server abone görmek Bir olmayan-SQL Server abone için bir abonelik oluştur.
Bu Konuda
Bir itme abonelik oluşturmak için kullanma:
SQL Server Management Studio
Transact-SQL
Çoğaltma Yönetimi Nesneleri'ni (rmo)
SQL Server Management Studio Kullanarak
Itme abonelik yayımcı veya abone Yeni Abonelik Sihirbazı'nı kullanarak oluşturun. İçin sihirbazın sayfalarını izleyin:
Basım ve Yayınevi belirtin.
Çoğaltma aracıları çalıştırılacağı seçin. Bir itme abonelik için seçin Bütün aracıları at dağıtımcı (itme abonelikleri) çalıştırmak üzerine Dağıtım Aracısı konumu sayfa veya Birleştirme Aracısı konumu sayfasında, yayının türüne bağlı.
Abone ve abonelik veritabanları belirtin.
Oturum ve parolalar çoğaltma aracıları tarafından yapılan bağlantılar için kullanılan belirtin:
Anlık görüntü ve işlem yayınları abonelikleri için kimlik bilgilerini belirtin Dağıtım Aracısı güvenlik sayfa.
Yayınlar birleştirme abonelikleri için kimlik bilgilerini belirtin Birleştirme Aracısı güvenlik sayfa.
Her Aracısı tarafından gerekli izinler hakkında daha fazla bilgi için bkz: Çoğaltma aracısı güvenlik modeli.
Eşitleme zamanlaması ve ne zaman abone başlatılması belirtin.
Birleştirme yayımları için ek seçenekleri belirleyin: abonelik türü; ve parametreli filtre uygulamak için değer.
Abonelikleri güncelleştirmek izin işlem yayınlar için ek seçenekleri belirleyin: aboneleri veya tamamlama değişiklikleri yayımcı hemen sıraya; yazın Abone için yayımcı bağlanmak için kullanılan kimlik bilgileri.
Abonelik isteğe bağlı olarak komut dosyası.
Yayımcı itme abonelik oluşturmak için
Yayımcı bağlanmak Microsoft SQL Server Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma klasörünü ve ardından Yerel yayınları klasörü.
Bir veya daha fazla abonelikleri oluşturma ve tıklatın istediğiniz yayını sağ tıklatın Yeni abonelikleri.
Yeni Abonelik Sihirbazı sayfalarında tamamlayın.
Abonenin itme abonelik oluşturmak için
Abone bağlanmak SQL Server Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma ağıl.
Sağ Yerel Abonelikleri klasörünü ve sonra Yeni abonelikleri.
Tarih yayın Yeni Abonelik Sihirbazı seçin sayfasında <SQL Server yayımcı bulmak > veya <Oracle yayımcı bulmak > dan Publisher açılan liste.
Yayımcı bağlanma sunucuya Bağlan iletişim kutusu.
Yayını seçin yayın sayfa.
Yeni Abonelik Sihirbazı sayfalarında tamamlayın.
[Top]
Transact-SQL'i Kullanma
Itme abonelikleri çoğaltma depolanmış yordamları kullanarak programsal oluşturulabilir. Kullanılan saklı yordamlar abonelik ait olduğu yayın türüne bağlıdır.
Güvenlik Notu |
---|
Mümkün olduğunda, komut istemi kullanıcıların güvenlik kimlik bilgileriyle çalıştırma. Bir komut dosyasında kimlik bilgileri saklamanız gerekir, yetkisiz erişimi önlemek için dosyayı güvenli gerekir. |
Anlık görüntü veya işlem yayın için itme abonelik oluşturmak için
Yayını veritabanı üzerinde yayımcı yayını yürüterek itme abonelikleri desteklediğini doğrulayın doğrulayınsp_helppublication.
Eğer değeri allow_push olan 1, itme abonelikleri desteklenir.
Eğer değeri allow_push olan 0, yürütme vesp_changepublication, belirten allow_push için @ özelliği ve gerçek için @ değeri.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_addsubscription. Belirtmek @ yayın, @ abone ve @ destination_db. Değeri belirtmeniz bas için @ subscription_type. Abonelikleri güncelleştirme hakkında daha fazla bilgi için bkz: İşlem yayınına güncelleştirilebilir bir abonelik oluştur.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_addpushsubscription_agent. Aşağıdakileri belirtin:
@ Abone, @ subscriber_db, ve @ yayın parametreleri.
MicrosoftAltında için at dağıtımcı dağıtım aracı çalıştığı Windows kimlik bilgileri @ job_login ve @ job_password.
[!NOT]
Her zaman Windows tümleşik kimlik doğrulaması kullanılarak yapılan bağlantılar tarafından belirtilen Windows kimlik bilgilerini kullanmak @ job_login ve @ job_password. Dağıtım aracı her zaman Windows tümleşik kimlik doğrulaması Dağıtımcı olarak yerel bağlantı yapar. Varsayılan olarak, Windows tümleşik kimlik doğrulaması için abone aracı bağlanır.
(İsteğe bağlı) Değeri 0 için @ subscriber_security_mode ve Microsoft SQL Servergiriş bilgilerini @ subscriber_login ve @ subscriber_password. SQL Server kimlik doğrulaması için abone bağlanırken kullanmanız gerekiyorsa, bu parametreleri belirtin.
Bu abonelik için dağıtım aracısını iş için zamanlama. Daha fazla bilgi için, bkz. Eşitleme çizelgelerini belirleme.
Güvenlik Notu Uzak bir dağıtımcı, sağlanan tüm parametreler için değerler ile bir yayımcı itme abonelik oluştururken dahil job_loginve job_password, dağıtımcı düz metin olarak gönderilir. Bu saklı yordam yürütme önce Publisher ve kendi uzak dağıtımcı arasında bağlantı şifrelemek. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Bir birleştirme yayını itme abonelik oluşturmak için
Yayını veritabanı üzerinde yayımcı yayını yürüterek itme abonelikleri desteklediğini doğrulayın eşdeğerdirsp_helpmergepublication.
Eğer değeri allow_push olan 1, yayını itme abonelikleri destekler.
Eğer değeri allow_push değil 1, yürütme sp_changemergepublication, belirten allow_push için @ özellik ve gerçek için @ değeri.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_addmergesubscription, aşağıdaki parametreleri belirtme:
@ Yayın. Yayın adı budur.
@ subscriber_type. Bir istemci abonelik için belirtmek Yerel ve sunucu abonelik için Genel.
@ subscription_priority. Bir sunucu abonelik için abonelik için bir öncelik belirlemek (0.00 için 99.99).
Daha fazla bilgi için, bkz. Gelişmiş birleştirme çoğaltma çakışma algılaması ve Çözümlemesi.
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_addmergepushsubscription_agent. Aşağıdakileri belirtin:
@ Abone, @ subscriber_db, ve @ yayın parametreleri.
Birleştirme Aracısı dağıtımcı çalıştığı için Windows kimlik bilgileri @ job_login ve @ job_password.
[!NOT]
Her zaman Windows tümleşik kimlik doğrulaması kullanılarak yapılan bağlantılar tarafından belirtilen Windows kimlik bilgilerini kullanmak @ job_login ve @ job_password. Birleştirme aracı her zaman Windows tümleşik kimlik doğrulaması Dağıtımcı olarak yerel bağlantı yapar. Varsayılan olarak, Windows tümleşik kimlik doğrulaması için abone aracı bağlanır.
(İsteğe bağlı) Değeri 0 için @ subscriber_security_mode ve SQL Serveriçin oturum açma bilgilerini @ subscriber_login ve @ subscriber_password. SQL Server kimlik doğrulaması için abone bağlanırken kullanmanız gerekiyorsa, bu parametreleri belirtin.
(İsteğe bağlı) Değeri 0 için @ publisher_security_mode ve SQL Serveriçin oturum açma bilgilerini @ publisher_login ve publisher_password @. SQL Server kimlik doğrulaması için yayımcı bağlanırken kullanmanız gerekiyorsa, bu değerleri belirtin.
Bu abonelik için Birleştirme Aracısı iş için zamanlama. Daha fazla bilgi için, bkz. Eşitleme çizelgelerini belirleme.
Güvenlik Notu Uzak bir dağıtımcı, sağlanan tüm parametreler için değerler ile bir yayımcı itme abonelik oluştururken dahil job_loginve job_password, dağıtımcı düz metin olarak gönderilir. Bu saklı yordam yürütme önce Publisher ve kendi uzak dağıtımcı arasında bağlantı şifrelemek. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Örnekler (Transact-SQL)
Aşağıdaki örnek, bir itme abonelik işlem yayınına oluşturur. Oturum açma ve parola değerleri kullanarak çalışma anında sağlanacak olan sqlcmdkomut dosyası değişkenleri.
-- 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
Aşağıdaki örnek, bir itme abonelik birleştirme yayınına oluşturur. Oturum açma ve parola değerleri kullanarak çalışma anında sağlanacak olan sqlcmdkomut dosyası değişkenleri.
-- 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;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2012];
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
[Top]
Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak
Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak program aracılığıyla itme abonelikleri oluşturabilirsiniz. İtme abonelik oluşturmak için kullandığınız rmo sınıfları abonelik oluşturulduğu yayın türüne bağlıdır.
Güvenlik Notu |
---|
Mümkün olduğunda, zamanında güvenlik kimlik bilgilerini girmesini ister. Kimlik bilgileri saklamanız gerekir kullanın Şifreleme Hizmetleri tarafından sağlanan MicrosoftWindows.net Framework. |
Anlık görüntü veya işlem yayın için itme abonelik oluşturmak için
Kullanarak bir yayımcının bağlantısı oluşturmak ServerConnectionsınıf
Örneğini TransPublicationsınıfı kullanarak Publisher bağlantı adım 1. Specify Name, DatabaseName, and ConnectionContext.
Arama LoadPropertiesyöntemi. Bu yöntem ise false, adım 2'de belirtilen özellikleri yanlış veya Yayını sunucuda yok.
Bit düzeyinde mantıksal ve gerçekleştirme ( & Visual C# ve AndVisual Basic) arasında Attributesözelliği ve AllowPush. Sonuç ise NoneSystem, Attributesiçin bit düzeyinde mantıksal or sonucu ( |Visual C# ve OrVisual Basic) arasında Attributesve AllowPush. Sonra arama CommitPropertyChangesitme abonelikleri etkinleştirmek için.
Abonelik veritabanı yoksa, bunu kullanarak oluşturmak Databasesınıf Daha fazla bilgi için, bkz. Oluşturma, değiştirme ve veritabanları kaldırma.
Örneğini TransSubscriptionsınıf
Aşağıdaki abonelik özelliklerini ayarlayın:
ServerConnectionİçin adım 1'de oluşturulan yayımcı ConnectionContext.
Abonelik veritabanı adı SubscriptionDBName.
Abone adı SubscriberName.
Yayını veritabanı için adı DatabaseName.
Yayın adı PublicationName.
LoginVe Passwordya SecurePasswordalanlar SynchronizationAgentProcessSecurityiçin kimlik bilgileri sağlamak için MicrosoftWindows hesabı altında dağıtım aracı dağıtımcı çalıştırır. Bu hesap, yerel bağlantılar için dağıtımcı olun ve Windows kimlik doğrulaması kullanarak uzak bağlantıları sağlamak için kullanılır.
[!NOT]
Ayar SynchronizationAgentProcessSecuritybir üyesi tarafından abonelik oluşturulduğunda gerekli değildir sysadminsabit sunucu rolü, ancak önerilir. Bu durumda, aracı SQL Server Agent hesabı taklit. Daha fazla bilgi için, bkz. Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) Değeri true(varsayılan) için CreateSyncAgentByDefaultAbonelik eşitlemek için kullanılan bir Aracısı işi oluşturmak için. If you specify false, abonelik yalnızca program aracılığıyla eşitlenebilir.
(İsteğe bağlı) Set SqlStandardLoginve SqlStandardPasswordya SecureSqlStandardPasswordalanlar SubscriberSecurityiçin abone bağlanmak için SQL Server kimlik doğrulaması kullanırken.
Arama Createyöntemi.
Güvenlik Notu Uzak bir dağıtımcı, sağlanan tüm özellikler, değerler ile bir yayımcı itme abonelik oluştururken dahil SynchronizationAgentProcessSecurity, dağıtımcı düz metin olarak gönderilir. Yayımcı ve uzak dağıtımcı önce arama arasındaki bağlantıyı şifrelemek Createyöntemi. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Bir birleştirme yayını itme abonelik oluşturmak için
Kullanarak bir yayımcının bağlantısı oluşturmak ServerConnectionsınıf
Örneğini MergePublicationsınıfı kullanarak Publisher bağlantı adım 1. Specify Name, DatabaseName, and ConnectionContext.
Arama LoadPropertiesyöntemi. Bu yöntem ise false, adım 2'de belirtilen özellikleri yanlış veya Yayını sunucuda yok.
Bit düzeyinde mantıksal ve gerçekleştirme ( & Visual C# ve AndVisual Basic) arasında Attributesözelliği ve AllowPush. Sonuç ise NoneSystem, Attributesiçin bit düzeyinde mantıksal or sonucu ( |Visual C# ve OrVisual Basic) arasında Attributesve AllowPush. Sonra arama CommitPropertyChangesitme abonelikleri etkinleştirmek için.
Abonelik veritabanı yoksa, bunu kullanarak oluşturmak Databasesınıf Daha fazla bilgi için, bkz. Oluşturma, değiştirme ve veritabanları kaldırma.
Örneğini MergeSubscriptionsınıf
Aşağıdaki abonelik özelliklerini ayarlayın:
ServerConnectionİçin adım 1'de oluşturulan yayımcı ConnectionContext.
Abonelik veritabanı adı SubscriptionDBName.
Abone adı SubscriberName.
Yayını veritabanı için adı DatabaseName.
Yayın adı PublicationName.
LoginVe Passwordya SecurePasswordalanlar SynchronizationAgentProcessSecurityiçin kimlik bilgileri sağlamak için Microsoftaltında Birleştirme Aracısı dağıtımcı çalıştığı Windows hesabı. Bu hesap, yerel bağlantılar için dağıtımcı olun ve Windows kimlik doğrulaması kullanarak uzak bağlantıları sağlamak için kullanılır.
[!NOT]
Ayar SynchronizationAgentProcessSecuritybir üyesi tarafından abonelik oluşturulduğunda gerekli değildir sysadminsabit sunucu rolü, ancak önerilir. Bu durumda, aracı SQL Server Agent hesabı taklit. Daha fazla bilgi için, bkz. Çoğaltma aracısı güvenlik modeli.
(İsteğe bağlı) Değeri true(varsayılan) için CreateSyncAgentByDefaultAbonelik eşitlemek için kullanılan bir Aracısı işi oluşturmak için. If you specify false, abonelik yalnızca program aracılığıyla eşitlenebilir.
(İsteğe bağlı) Set SqlStandardLoginve SqlStandardPasswordya SecureSqlStandardPasswordalanlar SubscriberSecurityiçin abone bağlanmak için SQL Server kimlik doğrulaması kullanırken.
(İsteğe bağlı) Set SqlStandardLoginve SqlStandardPasswordya SecureSqlStandardPasswordalanlar PublisherSecurityiçin yayımcı bağlanmak için SQL Server kimlik doğrulaması kullanırken.
Arama Createyöntemi.
Güvenlik Notu Uzak bir dağıtımcı, sağlanan tüm özellikler, değerler ile bir yayımcı itme abonelik oluştururken dahil SynchronizationAgentProcessSecurity, dağıtımcı düz metin olarak gönderilir. Yayımcı ve uzak dağıtımcı önce arama arasındaki bağlantıyı şifrelemek Createyöntemi. Daha fazla bilgi için, bkz. Veritabanı altyapısı (SQL Server Configuration Manager) şifreli bağlantıları etkinleştir.
Örnekler (rmo)
Bu örnek, yeni bir itme abonelik işlem yayınına oluşturur. Windows Dağıtım Aracısını iş süresinde geçti çalıştırmak için kullandığınız kimlik bilgileri hesap.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksProductTran";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(subscriberName);
// Create the objects that we need.
TransPublication publication;
TransSubscription subscription;
try
{
// Connect to the Publisher.
conn.Connect();
// Ensure that the publication exists and that
// it supports push subscriptions.
publication = new TransPublication();
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
publication.ConnectionContext = conn;
if (publication.IsExistingObject)
{
if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPush;
}
// Define the push subscription.
subscription = new TransSubscription();
subscription.ConnectionContext = conn;
subscription.SubscriberName = subscriberName;
subscription.PublicationName = publicationName;
subscription.DatabaseName = publicationDbName;
subscription.SubscriptionDBName = subscriptionDbName;
// Specify the Windows login credentials for the Distribution Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
subscription.SynchronizationAgentProcessSecurity.Password = winPassword;
// By default, subscriptions to transactional publications are synchronized
// continuously, but in this case we only want to synchronize on demand.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand;
// Create the push subscription.
subscription.Create();
}
else
{
// Do something here if the publication does not exist.
throw new ApplicationException(String.Format(
"The publication '{0}' does not exist on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Implement the appropriate error handling here.
throw new ApplicationException(String.Format(
"The subscription to {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksProductTran"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
' Create the objects that we need.
Dim publication As TransPublication
Dim subscription As TransSubscription
Try
' Connect to the Publisher.
conn.Connect()
' Ensure that the publication exists and that
' it supports push subscriptions.
publication = New TransPublication()
publication.Name = publicationName
publication.DatabaseName = publicationDbName
publication.ConnectionContext = conn
If publication.IsExistingObject Then
If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
publication.Attributes = publication.Attributes _
Or PublicationAttributes.AllowPush
End If
' Define the push subscription.
subscription = New TransSubscription()
subscription.ConnectionContext = conn
subscription.SubscriberName = subscriberName
subscription.PublicationName = publicationName
subscription.DatabaseName = publicationDbName
subscription.SubscriptionDBName = subscriptionDbName
' Specify the Windows login credentials for the Distribution Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin
subscription.SynchronizationAgentProcessSecurity.Password = winPassword
' By default, subscriptions to transactional publications are synchronized
' continuously, but in this case we only want to synchronize on demand.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand
' Create the push subscription.
subscription.Create()
Else
' Do something here if the publication does not exist.
Throw New ApplicationException(String.Format( _
"The publication '{0}' does not exist on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Implement the appropriate error handling here.
Throw New ApplicationException(String.Format( _
"The subscription to {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try
Bu örnek, yeni bir itme abonelik birleştirme yayınına oluşturur. Birleştirme Aracısı iş süresinde geçti çalıştırmak için kullandığınız kimlik bilgilerini Windows hesabı.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2012Replica";
string publicationDbName = "AdventureWorks2012";
string hostname = @"adventure-works\garrett1";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(subscriberName);
// Create the objects that we need.
MergePublication publication;
MergeSubscription subscription;
try
{
// Connect to the Publisher.
conn.Connect();
// Ensure that the publication exists and that
// it supports push subscriptions.
publication = new MergePublication();
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
publication.ConnectionContext = conn;
if (publication.IsExistingObject)
{
if ((publication.Attributes & PublicationAttributes.AllowPush) == 0)
{
publication.Attributes |= PublicationAttributes.AllowPush;
}
// Define the push subscription.
subscription = new MergeSubscription();
subscription.ConnectionContext = conn;
subscription.SubscriberName = subscriberName;
subscription.PublicationName = publicationName;
subscription.DatabaseName = publicationDbName;
subscription.SubscriptionDBName = subscriptionDbName;
subscription.HostName = hostname;
// Set a schedule to synchronize the subscription every 2 hours
// during weekdays from 6am to 10pm.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly;
subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32(0x003E);
subscription.AgentSchedule.FrequencyRecurrenceFactor = 1;
subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour;
subscription.AgentSchedule.FrequencySubDayInterval = 2;
subscription.AgentSchedule.ActiveStartDate = 20051108;
subscription.AgentSchedule.ActiveEndDate = 20071231;
subscription.AgentSchedule.ActiveStartTime = 060000;
subscription.AgentSchedule.ActiveEndTime = 100000;
// Specify the Windows login credentials for the Merge Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
subscription.SynchronizationAgentProcessSecurity.Password = winPassword;
// Create the push subscription.
subscription.Create();
}
else
{
// Do something here if the publication does not exist.
throw new ApplicationException(String.Format(
"The publication '{0}' does not exist on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Implement the appropriate error handling here.
throw new ApplicationException(String.Format(
"The subscription to {0} could not be created.", publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher, publication, and databases.
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publisherName As String = publisherInstance
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"
Dim hostname As String = "adventure-works\garrett1"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
' Create the objects that we need.
Dim publication As MergePublication
Dim subscription As MergeSubscription
Try
' Connect to the Publisher.
conn.Connect()
' Ensure that the publication exists and that
' it supports push subscriptions.
publication = New MergePublication()
publication.Name = publicationName
publication.DatabaseName = publicationDbName
publication.ConnectionContext = conn
If publication.IsExistingObject Then
If (publication.Attributes And PublicationAttributes.AllowPush) = 0 Then
publication.Attributes = publication.Attributes _
Or PublicationAttributes.AllowPush
End If
' Define the push subscription.
subscription = New MergeSubscription()
subscription.ConnectionContext = conn
subscription.SubscriberName = subscriberName
subscription.PublicationName = publicationName
subscription.DatabaseName = publicationDbName
subscription.SubscriptionDBName = subscriptionDbName
subscription.HostName = hostname
' Set a schedule to synchronize the subscription every 2 hours
' during weekdays from 6am to 10pm.
subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.Weekly
subscription.AgentSchedule.FrequencyInterval = Convert.ToInt32("0x003E", 16)
subscription.AgentSchedule.FrequencyRecurrenceFactor = 1
subscription.AgentSchedule.FrequencySubDay = ScheduleFrequencySubDay.Hour
subscription.AgentSchedule.FrequencySubDayInterval = 2
subscription.AgentSchedule.ActiveStartDate = 20051108
subscription.AgentSchedule.ActiveEndDate = 20071231
subscription.AgentSchedule.ActiveStartTime = 60000
subscription.AgentSchedule.ActiveEndTime = 100000
' Specify the Windows login credentials for the Merge Agent job.
subscription.SynchronizationAgentProcessSecurity.Login = winLogin
subscription.SynchronizationAgentProcessSecurity.Password = winPassword
' Create the push subscription.
subscription.Create()
Else
' Do something here if the publication does not exist.
Throw New ApplicationException(String.Format( _
"The publication '{0}' does not exist on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Implement the appropriate error handling here.
Throw New ApplicationException(String.Format( _
"The subscription to {0} could not be created.", publicationName), ex)
Finally
conn.Disconnect()
End Try
[Top]
Ayrıca bkz.
Kavramlar
Itme abonelik özelliklerini görüntüleme ve değiştirme
ModeliveÇoğaltma güvenlik en iyi uygulamalar