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 Yönetilen Örneği
Bu konu, SQL Server Management Studio, Transact-SQL veya Replication Management Objects (RMO) kullanılarak SQL Server'da senkronizasyon takvimini nasıl belirletileceğini açıklar. Abonelik oluşturduğunuzda, abonelik için replikasyon ajanının ne zaman çalışacağını kontrol eden bir senkronizasyon takvimi tanımlayabilirsiniz. Eğer zamanlama parametreleri belirtmezseniz, abonelik varsayılan programı kullanır.
Abonelikler Dağıtım Aracısı (anlık görüntü ve işlem çoğaltması için) veya Birleştirme Aracısı (birleştirme çoğaltması için) tarafından eşitlenir. Ajanlar sürekli çalışabilir, isteğe bağlı olarak çalıştırılabilir veya bir zamanlamaya göre çalışabilir.
SQL Server Management Studio'yu kullanma
Yeni Abonelik Büyücüsü'nün Senkronizasyon Takvimi sayfasında senkronizasyon takvimini belirtin. Bu sihirbaza erişim hakkında daha fazla bilgi için Push Aboneliği Oluştur ve Pull Aboneliği Oluştur bölümlerine bakabilirsiniz.
SQL Server Management Studio'daki İşler klasöründen ve Replication Monitor'daki ajan detay pencerelerinden ulaşılabilir olan İş Zamanlama Özellikleri diyalog kutusunda senkronizasyon takvimini değiştirin. Çoğaltma İzleyicisi'ni başlatma hakkında bilgi için bkz. Çoğaltma İzleyicisi'ni başlatma.
Eğer Jobs klasöründen takvim belirtirseniz, ajanın iş adını belirlemek için aşağıdaki tabloyu kullanın.
| Aracı | İş adı |
|---|---|
| Çekme abonelikleri için Birleştirme Aracısı | <Yayımcı-YayınVeritabanı-Yayın-Abone-AbonelikVeritabanı-tam sayı><><><><><> |
| Anında iletme abonelikleri için Birleştirme Aracısı | <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><> |
| Anında iletme abonelikleri için Dağıtım Aracısı | <Publisher-PublicationDatabase-Publication-Subscriber-tamsayı<<><>>><>1 |
| Çekme abonelikleri için Dağıtım Aracısı | <Publisher-PublicationDatabase-Publication-Subscriber-SubscriptionDatabase-GUID<<><><>>><>2 |
| SQL Server olmayan Abonelere gönderme abonelikleri için Dağıtım Aracısı | <Publisher-PublicationDatabase-Publication-Subscriber-integer><><><><> |
1 Oracle yayınlarına yönelik push aboneliklerinde söz konusu olan, <, > değil, onun yerine < yapısıdır.
2 Oracle yayınlarına yönelik pull aboneliklerinde, > kullanılır; >Publisher>-<PublicationDatabase< değil
Senkronizasyon takvimlerini belirtmek için
Yeni Abonelik Büyücüsü'nün SynchronizationSchedule sayfasında, oluşturduğunuz her abonelik için Ajan Programı açılır menü listesinden aşağıdaki değerlerden birini seçin:
Sürekli çalış
Sadece talep üzerine çalıştırın
<Programı tanımlayın...>
>Define Schedule...< öğesini seçerseniz, Görev Zamanlaması Özellikleri iletişim kutusunda bir zamanlama belirtin ve ardından Tamam'a tıklayın.
Sihirbazı tamamlayın.
Replikasyon Monitöründe push aboneliği için senkronizasyon takvimini değiştirmek için
Çoğaltma İzleyicisi'nin sol bölmesinde bir Yayımcı grubunu genişletin, bir Publisher'ı genişletin ve sonra bir yayına tıklayın.
Tüm Abonelikler sekmesine tıklayın.
Bir aboneliğe sağ tıklayın ve ardından Ayrıntıları Görüntüle'ye tıklayın.
Subscription < SubscriptionName> penceresinde Eylem'e ve ardından AracıAdı< İş Özellikleri'ne tıklayın>.
İş Özellikleri - <İş Adı> diyalog kutusunun Schedules sayfasında Düzenle'e tıklayın.
İş Zamanlama Özellikleri iletişim kutusunda, Schedule Tip açılır menü listesinden bir değer seçin:
Ajanın sürekli çalışmasını belirtmek için, SQL Server Agent başladığında otomatik olarak Başlat'ı seçin.
Ajanın bir zamanlamada çalışmasını belirtmek için Tekrarlayan seçeneğini seçin.
Ajanın talep üzerine çalışmasını belirtmek için One Time'ı seçin.
Tekrarlayan seçerseniz, ajan için bir takvim belirtin.
Tamam'ı seçin.
Management Studio'da push aboneliği için senkronizasyon takvimini değiştirmek için
Management Studio'da Dağıtımcı'ya bağlanın ve ardından sunucu düğümünü genişletin.
SQL Server Agent klasörünü genişletin ve ardından İşler klasörünü genişletin.
Abonelikle ilişkili Distribution Agent veya Merge Agent için işin üzerine sağ tıklayın ve ardından Özellikler'e tıklayın.
İş Özellikleri - <İş Adı> diyalog kutusunun Schedules sayfasında Düzenle'e tıklayın.
İş Zamanlama Özellikleri iletişim kutusunda, Schedule Tip açılır menü listesinden bir değer seçin:
Ajanın sürekli çalışmasını belirtmek için, SQL Server Agent başladığında otomatik olarak Başlat'ı seçin.
Ajanın bir zamanlamada çalışmasını belirtmek için Tekrarlayan seçeneğini seçin.
Ajanın talep üzerine çalışmasını belirtmek için One Time'ı seçin.
Tekrarlayan seçerseniz, ajan için bir takvim belirtin.
Tamam'ı seçin.
Management Studio'da pull aboneliği için senkronizasyon zamanlamasını değiştirmek için
Management Studio'da Abone'ye bağlanın ve ardından sunucu düğümünü genişletin.
SQL Server Agent klasörünü genişletin ve ardından İşler klasörünü genişletin.
Abonelikle ilişkili Distribution Agent veya Merge Agent için işin üzerine sağ tıklayın ve ardından Özellikler'e tıklayın.
İş Özellikleri - <İş Adı> diyalog kutusunun Schedules sayfasında Düzenle'e tıklayın.
İş Zamanlama Özellikleri iletişim kutusunda, Schedule Tip açılır menü listesinden bir değer seçin:
Ajanın sürekli çalışmasını belirtmek için, SQL Server Agent başladığında otomatik olarak Başlat'ı seçin.
Ajanın bir zamanlamada çalışmasını belirtmek için Tekrarlayan seçeneğini seçin.
Ajanın talep üzerine çalışmasını belirtmek için One Time'ı seçin.
Tekrarlayan seçerseniz, ajan için bir takvim belirtin.
Tamam'ı seçin.
Transact-SQL Kullanımı
Çoğaltma saklı yordamlarını kullanarak senkronizasyon zamanlamalarını program aracılığıyla tanımlayabilirsiniz. Kullandığınız saklanan prosedürler, çoğaltma türüne ve abonelik türüne (pull veya push) bağlıdır.
Bir takvim, davranışları sp_add_schedule (Transact-SQL)'dan miras alınan aşağıdaki zamanlama parametreleriyle tanımlanır:
@frequency_type - ajanı zamanlarken kullanılan frekans türü.
@frequency_interval - bir ajanın çalıştığı haftanın bir günü.
@frequency_relative_interval - ajanın aylık olarak çalışması planlanan belirli bir ayın haftası.
@frequency_recurrence_factor - senkronizasyonlar arasında gerçekleşen frekans tipi birimlerin sayısı.
@frequency_subday - ajanın günde bir kereden daha sık çalıştığı durumlarda kullanılan frekans birimi.
@frequency_subday_interval - ajanın günde birden fazla çalıştırıldığında çalışma aralarındaki frekans birimleri sayısı.
@active_start_time_of_day - bir günün en erken ajanı çalışması başlayacağı zaman.
@active_end_time_of_day - belirli bir günde bir ajanın çalıştırılmasının başlayacağı en geç saat.
@active_start_date - temsilci programının yürürlüğe gireceği ilk gün.
@active_end_date - temsilci programının yürürlüğe gireceği son gün.
İşlemsel bir yayına pull aboneliği için senkronizasyon takvimini tanımlamak için
İşlemsel bir yayına yeni bir pull abonelik oluşturun. Daha fazla bilgi için bkz. Çekme Aboneliği Oluşturma.
Abone Noktasında sp_addpullsubscription_agent (Transact-SQL) çalıştırın. @publisher, @publisher_db, @publication ve Abone üzerindeki Distribution Agent'nin @job_name ve @password için çalıştığı Microsoft Windows kimlik bilgilerini belirtin. Yukarıda detaylandırılan, aboneliği senkronize eden Distribution Agent işi için zamanlamayı tanımlayan senkronizasyon parametrelerini belirtin.
İşlemsel bir yayına push aboneliği için senkronizasyon takvimini tanımlamak için
İşlemsel bir yayına yeni bir push aboneliği oluşturun. Daha fazla bilgi için Push Aboneliği Oluştur sayfasına bakınız.
Abonede sp_addpushsubscription_agent (Transact-SQL) çalıştırın. @subscriber, @subscriber_db, @publication ve abone üzerindeki Distribution Agent'ın @job_name ve @password için çalıştığı Windows kimlik bilgilerini belirtin. Yukarıda detaylandırılan, aboneliği senkronize eden Distribution Agent işi için zamanlamayı tanımlayan senkronizasyon parametrelerini belirtin.
Bir merge yayınına pull aboneliği için senkronizasyon takvimini tanımlamak için
Birleştirme yayınına yeni bir pull aboneliği oluşturun. Daha fazla bilgi için bkz. Çekme Aboneliği Oluşturma.
Abone Noktasında sp_addmergepullsubscription_agent uygulayın. @publisher, @publisher_db, @publication ve Abone üzerindeki Merge Agent'ın @job_name ve @password için çalıştığı Windows kimlik bilgilerini belirtin. Aboneliği senkronize eden Merge Agent işinin zamanlamasını tanımlayan, ayrıntıları yukarıda verilen senkronizasyon parametrelerini belirtin.
Bir birleştirme yayınına push aboneliği için senkronizasyon takvimini tanımlamak
Birleştirme yayınına yeni bir push aboneliği oluşturun. Daha fazla bilgi için Push Aboneliği Oluştur sayfasına bakınız.
Abone Noktasında sp_addmergepushsubscription_agent uygulayın. @subscriber, @subscriber_db, @publication ve abone üzerindeki Merge Agent'nin @job_name ve @password için çalıştığı Windows kimlik bilgilerini belirtin. Yukarıda ayrıntıları verilen, aboneliği eşitleyen Merge Agent işinin zamanlamasını tanımlayan senkronizasyon parametrelerini belirtin.
Çoğaltma Yönetimi Nesnelerini (RMO) Kullanma
Replikasyon, anlık görüntü oluşturma ve abonelik senkronizasyonu gibi periyodik olarak gerçekleşen faaliyetler için işleri planlamak amacıyla SQL Server Agent'ı kullanır. Replikasyon Yönetim Nesneleri (RMO) ile programlı olarak replikasyon ajanı işleri için zamanlamalar belirleyebilirsiniz.
Uyarı
Bir abonelik oluşturup CreateSyncAgentByDefault için false değeri belirttiğinizde (pull abonelikler için varsayılan davranış), ajan işi oluşturulmuyor ve zamanlama özellikleri göz ardı ediliyor. Bu durumda, senkronizasyon takvimi uygulama tarafından belirlenmelidir. Daha fazla bilgi için bkz. Çekme Aboneliği Oluşturma ve Anında İletme Aboneliği Oluşturma.
İşlemsel bir yayına push aboneliği oluşturduğunuzda replikasyon ajanı takvimi tanımlamak
Oluşturduğunuz abonelik için sınıfın bir örneğini TransSubscription oluşturun. Daha fazla bilgi için Push Aboneliği Oluştur sayfasına bakınız.
Çağırmadan Createönce, özelliğin AgentSchedule aşağıdaki alanlarından birini veya birkaçını ayarlayın:
FrequencyType - ajanı planlamakta kullandığınız sıklık türü (örneğin günlük veya haftalık).
FrequencyInterval - Bir ajanın çalıştığı haftanın bir günü.
FrequencyRelativeInterval - Temsilcinin aylık olarak çalışması planlandığı belirli bir ayın haftası.
FrequencyRecurrenceFactor - senkronizasyonlar arasında gerçekleşen frekans tipi birimlerin sayısı.
FrequencySubDay - ajanın günde birden fazla çalıştırıldığında frekans birimi.
FrequencySubDayInterval - ajan günde birden fazla çalıştığında, çalıştırmalar arasında bulunan frekans birimi sayısı.
ActiveStartTime - bir gün en erken bir ajan çalışması başladığı zaman.
ActiveEndTime - belirli bir günde bir aracı çalıştırmasının başlayabileceği en geç saat.
ActiveStartDate - Temsilci programının yürürlüğe girdiği ilk gün.
ActiveEndDate - Temsilci programının yürürlüğe girdiği son gün.
Uyarı
Bu özelliklerden birini belirtmezseniz, varsayılan bir değer ayarlanır.
Aboneliği oluşturmak için Create yöntemini çağırın.
İşlemsel bir yayına pull aboneliği oluşturduğunuzda bir replikasyon ajanı takvimi tanımlamak için
Oluşturduğunuz abonelik için sınıfın bir örneğini TransPullSubscription oluşturun. Daha fazla bilgi için bkz. Çekme Aboneliği Oluşturma.
Çağırmadan Createönce, özelliğin AgentSchedule aşağıdaki alanlarından birini veya birkaçını ayarlayın:
FrequencyType - ajanı planlamakta kullandığınız sıklık türü (örneğin günlük veya haftalık).
FrequencyInterval - Bir ajanın çalıştığı haftanın bir günü.
FrequencyRelativeInterval - Temsilcinin aylık olarak çalışması planlanan belirli bir ayın haftası.
FrequencyRecurrenceFactor - senkronizasyonlar arasında gerçekleşen frekans tipi birimlerin sayısı.
FrequencySubDay - ajan günde bir kereden fazla çalıştığında kullanılan sıklık birimi.
FrequencySubDayInterval - ajan günde bir kereden daha sık çalıştığında, çalıştırmalar arasında bulunan frekans birimi sayısı.
ActiveStartTime - bir gün en erken bir ajan çalışması başladığı zaman.
ActiveEndTime - bir günde aracı çalıştırmanın başladığı en geç saat.
ActiveStartDate - Temsilci programının yürürlüğe girdiği ilk gün.
ActiveEndDate - Temsilci programının yürürlüğe girdiği son gün.
Uyarı
Bu özelliklerden birini belirtmezseniz, varsayılan bir değer ayarlanır.
Aboneliği oluşturmak için Create yöntemini çağırın.
Bir birleştirme yayınına pull aboneliği oluşturduğunuzda bir replikasyon ajanı zamanlaması tanımlamak için
Oluşturduğunuz abonelik için sınıfın bir örneğini MergePullSubscription oluşturun. Daha fazla bilgi için bkz. Çekme Aboneliği Oluşturma.
Çağırmadan Createönce, özelliğin AgentSchedule aşağıdaki alanlarından birini veya birkaçını ayarlayın:
FrequencyType - ajanı planlamakta kullandığınız sıklık türü (örneğin günlük veya haftalık).
FrequencyInterval - Bir ajanın çalıştığı haftanın bir günü.
FrequencyRelativeInterval - Temsilcinin aylık olarak çalışması planlanan belirli bir ayın haftası.
FrequencyRecurrenceFactor - senkronizasyonlar arasında gerçekleşen frekans tipi birimlerin sayısı.
FrequencySubDay - aracı günde bir kereden daha sık çalıştığında kullanılan sıklık birimi.
FrequencySubDayInterval - ajan günde bir kereden fazla çalıştığında, çalıştırmalar arasındaki frekans birimi sayısı.
ActiveStartTime - bir gün en erken bir ajan çalışması başladığı zaman.
ActiveEndTime - belirli bir günde bir aracı çalıştırmasının başlayabileceği en geç saat.
ActiveStartDate - Temsilci programının yürürlüğe girdiği ilk gün.
ActiveEndDate - Temsilci programının yürürlüğe girdiği son gün.
Uyarı
Bu özelliklerden birini belirtmezseniz, varsayılan bir değer ayarlanır.
Aboneliği oluşturmak için Create yöntemini çağırın.
Bir birleştirme yayınına push aboneliği oluşturduğunuzda bir replikasyon ajanı zamanlaması tanımlamak için
Oluşturduğunuz abonelik için sınıfın bir örneğini MergeSubscription oluşturun. Daha fazla bilgi için Push Aboneliği Oluştur sayfasına bakınız.
Çağırmadan Createönce, özelliğin AgentSchedule aşağıdaki alanlarından birini veya birkaçını ayarlayın:
FrequencyType - ajanı planlamakta kullandığınız sıklık türü (örneğin günlük veya haftalık).
FrequencyInterval - Bir ajanın çalıştığı haftanın bir günü.
FrequencyRelativeInterval - Temsilcinin aylık olarak çalışması planlanan belirli bir ayın haftası.
FrequencyRecurrenceFactor - senkronizasyonlar arasında gerçekleşen frekans tipi birimlerin sayısı.
FrequencySubDay - ajanın günde birden fazla çalıştırıldığında frekans birimi.
FrequencySubDayInterval - ajan günde birden fazla çalıştığında, çalıştırmalar arasında bulunan frekans birimi sayısı.
ActiveStartTime - bir gün en erken bir ajan çalışması başladığı zaman.
ActiveEndTime - belirli bir günde bir aracı çalıştırmasının başlayabileceği en geç saat.
ActiveStartDate - Temsilci programının yürürlüğe girdiği ilk gün.
ActiveEndDate - Temsilci programının yürürlüğe girdiği son gün.
Uyarı
Bu özelliklerden birini belirtmezseniz, varsayılan bir değer ayarlanır.
Aboneliği oluşturmak için Create yöntemini çağırın.
Örnek (RMO)
Bu örnek, bir birleştirme yayınına push aboneliği oluşturur ve aboneliğin senkronize edildiği programı belirtir.
// Define the Publisher, publication, and databases.
string publicationName = "AdvWorksSalesOrdersMerge";
string publisherName = publisherInstance;
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
string publicationDbName = "AdventureWorks2022";
string hostname = @"adventure-works\garrett1";
//Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
// 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 = "AdventureWorks2022Replica"
Dim publicationDbName As String = "AdventureWorks2022"
Dim hostname As String = "adventure-works\garrett1"
'Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
' 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