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ı
Bu konuda SQL Server Management Studio, Transact-SQL veya Çoğaltma Yönetim Nesneleri (RMO) kullanarak SQL Server'da aboneliğin nasıl yeniden başlatıldığı açıklanmaktadır. Bireysel abonelikler, bir sonraki senkronizasyonda yeni bir anlık görüntünün uygulanabilmesi için sıfırlama amacıyla işaretlenebilir.
Uyarı
Azure SQL Yönetilen Örnek, anlık görüntü ve işlem çoğaltması için yayımcı, dağıtıcı ve abone olarak kullanılabilir. Azure SQL Veritabanı'ndaki veritabanları yalnızca anlık görüntü ve işlem çoğaltması için gönderim aboneleri olabilir. Daha fazla bilgi için bkz. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği ile işlem çoğaltması.
SQL Server Management Studio'yu kullanma
Aboneliği yeniden başlatma işlemi iki bölümden oluşur:
Bir yayının tek bir aboneliği veya tüm abonelikleri yeniden başlatmaya yönelik olarak işaretlenir. Microsoft SQL Server Management Studio'daki Yerel Yayınlar klasöründe ve Yerel Abonelikler klasöründe bulunan Abonelikleri Yeniden Başlat iletişim kutusunda abonelikleri yeniden başlatma için işaretleyin. Ayrıca Tüm Abonelikler sekmesinden ve Çoğaltma İzleyicisi'ndeki yayınlar düğümünden abonelikleri işaretleyebilirsiniz. Çoğaltma İzleyicisi'ni başlatma hakkında bilgi için bkz. Çoğaltma İzleyicisi'ni başlatma. Aboneliği yeniden başlatma için işaretlediğinizde aşağıdaki seçeneklere sahipsiniz:
Geçerli anlık görüntüyü kullanma
Dağıtım Aracısı veya Birleştirme Aracısı bir sonraki çalıştırıldığında aboneye geçerli anlık görüntüyü uygulamak için seçin. Kullanılabilir geçerli bir anlık görüntü yoksa, bu seçenek seçilemez.Yeni anlık görüntü kullanma
Aboneliği yeni bir anlık görüntüyle yeniden başlatmayı seçin. Anlık görüntü, yalnızca Anlık Görüntü Aracısı tarafından oluşturulduktan sonra aboneye uygulanabilir. Anlık Görüntü Aracısı bir zamanlamaya göre çalışacak şekilde ayarlandıysa, bir sonraki zamanlanmış Anlık Görüntü Aracısı çalıştırılana kadar abonelik yeniden başlatılmaz. Yeni anlık görüntüyü şimdi oluştur seçeneğine tıklayarak Anlık Görüntü Aracısını hemen başlatın.Yeniden başlatma sürecinin başlatılmasından önce eşitlenmemiş değişiklikleri yükleyin
Yalnızca birleştirme replikasyonu. Abone verilerinin üzerine bir anlık görüntü yazılmadan önce, abonelik veritabanındaki bekleyen değişiklikleri yüklemek için 'Seçin'.Parametreli filtre ekler, bırakır veya değiştirirseniz, abonede bekleyen değişiklikler yeniden başlatma sırasında Yayımcı'ya yüklenemez. Bekleyen değişiklikleri karşıya yüklemek istiyorsanız, filtreyi değiştirmeden önce tüm abonelikleri eşitleyin.
Abonelik bir sonraki eşitlendiğinde yeniden başlatılır: Dağıtım Aracısı (işlem çoğaltması için) veya Birleştirme Aracısı (birleştirme çoğaltması için), aboneliği yeniden başlatılmak üzere işaretlenmiş her aboneye en son anlık görüntüyü uygular. Abonelikleri eşitleme hakkında daha fazla bilgi için bkz. Anında İletme Aboneliğini Eşitleme ve Çekme Aboneliğini Eşitleme.
Management Studio'da (Publisher'da) yeniden başlatma için tek bir gönderme veya çekme aboneliğini işaretlemek için
Management Studio'da Publisher'a bağlanın ve sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin ve ardından Yerel Yayınlar klasörünü genişletin.
Yeniden başlatılmasını istediğiniz aboneliği içeren yayını genişletin.
Aboneliğe sağ tıklayın ve ardından Yeniden Başlat'a tıklayın.
Abonelikleri Yeniden Başlat iletişim kutusunda seçenekleri belirleyin ve yeniden başlatma için işaretle'ye tıklayın.
Management Studio'da (Abonede) yeniden başlatma için tek bir çekme aboneliğini işaretlemek için
Management Studio'da Abone'ye bağlanın ve ardından sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin ve ardından Yerel Abonelikler klasörünü genişletin.
Aboneliğe sağ tıklayın ve ardından Yeniden Başlat'a tıklayın.
Görüntülenen onay iletişim kutusunda Evet'e tıklayın.
Management Studio'da tüm abonelikleri yeniden başlatılmak üzere işaretlemek için
Management Studio'da Publisher'a bağlanın ve sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin ve ardından Yerel Yayınlar klasörünü genişletin.
Yeniden başlatılmasını istediğiniz abonelikleri içeren yayına sağ tıklayın ve ardından Tüm Abonelikleri Yeniden Başlat'a tıklayın.
Abonelikleri Yeniden Başlat iletişim kutusunda seçenekleri belirleyin ve yeniden başlatma için işaretle'ye tıklayın.
Çoğaltma İzleyicisi'nde yeniden başlatma için tek bir gönderme veya çekme aboneliğini işaretlemek için
Çoğaltma İzleyicisi'nde, sol bölmede 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.
Yeniden başlatılmasını istediğiniz aboneliğe sağ tıklayın ve ardından Aboneliği Yeniden Başlat'a tıklayın.
Abonelikleri Yeniden Başlat iletişim kutusunda seçenekleri belirleyin ve yeniden başlatma için işaretle'ye tıklayın.
Çoğaltma İzleyicisi'nde tüm abonelikleri yeniden başlatılmak üzere işaretlemek için
Çoğaltma İzleyicisi'nde, sol bölmede bir Publisher grubunu genişletin ve sonra bir Publisher'ı genişletin.
Yeniden başlatılmasını istediğiniz abonelikleri içeren yayına sağ tıklayın ve ardından Tüm Abonelikleri Yeniden Başlat'a tıklayın.
Abonelikleri Yeniden Başlat iletişim kutusunda seçenekleri belirleyin ve yeniden başlatma için işaretle'ye tıklayın.
Transact-SQL Kullanımı
Abonelikler, çoğaltma saklı yordamları kullanılarak program aracılığıyla yeniden başlatılabilir. Kullanılan saklı yordam, aboneliğin türüne (gönderme veya çekme) ve aboneliğin ait olduğu yayın türüne bağlıdır.
İşlemsel bir yayına çekme aboneliğini yeniden başlatma
Abonelik veritabanındaki Abone'de sp_reinitpullsubscription (Transact-SQL) yürütün. @publisher, @publisher_db ve @publication belirtin. Bu, Dağıtım Aracısı bir sonraki çalıştırıldığında aboneliğin yeniden başlatılması için işaretlenir.
(İsteğe bağlı) Aboneliği eşitlemek için Abone'de Dağıtım Aracısı'nı başlatın. Daha fazla bilgi için bkz. Çek Aboneliğini Senkronize Etme.
İşlem yayınına anında iletme aboneliğini yeniden başlatma
Publisher'da sp_reinitsubscription (Transact-SQL) yürütür. @publication, @subscriber ve @destination_db belirtin. Bu, Dağıtım Aracısı bir sonraki kez çalıştırıldığında aboneliği yeniden başlatma durumuna getirir.
(İsteğe bağlı) Aboneliği eşitlemek için Dağıtım Aracısı'nı Dağıtımcı'da başlatın. Daha fazla bilgi için bkz. Anında İletme Aboneliğini Eşitleme.
Bir çekme aboneliğini birleştirme yayını için yeniden başlatma
Abonelik veritabanındaki Abone'de sp_reinitmergepullsubscription (Transact-SQL) çalıştırın. @publisher, @publisher_db ve @publication belirtin. Yeniden başlatma gerçekleşmeden önce aboneden değişiklikleri karşıya yüklemek için @upload_first için true değerini belirtin. Bu, Birleştirme Aracısı bir sonraki çalıştırıldığında aboneliği yeniden başlatma için işaretler.
Önemli
Parametreli filtre ekler, bırakır veya değiştirirseniz, abonede bekleyen değişiklikler yeniden başlatma sırasında Yayımcı'ya yüklenemez. Bekleyen değişiklikleri karşıya yüklemek istiyorsanız, filtreyi değiştirmeden önce tüm abonelikleri senkronize edin.
(İsteğe bağlı) Aboneliği eşitlemek için Abone'de Birleştirme Aracısı'nı başlatın. Daha fazla bilgi için bkz. Çekme Aboneliğini Senkronize Etme.
Birleşme yayınına yönelik push aboneliğini yeniden başlatma
Publisher'da sp_reinitmergesubscription (Transact-SQL) yürütür. @publication, @subscriber ve @subscriber_db belirtin. Yeniden başlatma gerçekleşmeden önce aboneden değişiklikleri karşıya yüklemek için @upload_first için true değerini belirtin. Bu, Dağıtım Aracısı bir sonraki çalıştırıldığında aboneliği yeniden başlatma için işaretler.
Önemli
Parametreli filtre ekler, bırakır veya değiştirirseniz, abonede bekleyen değişiklikler yeniden başlatma sırasında Yayımcı'ya yüklenemez. Beklemedeki değişiklikleri karşıya yüklemek istiyorsanız, filtreyi değiştirmeden önce tüm abonelikleri senkronize edin.
(İsteğe bağlı) Aboneliği eşitlemek için Dağıtımcı'da Birleştirme Aracısı'nı başlatın. Daha fazla bilgi için bkz. Anında İletme Aboneliğini Eşitleme.
Yeni birleştirme yayını oluştururken yeniden başlatma ilkesini ayarlamak için
Yayın veritabanındaki Publisher'da sp_addmergepublication yürüterek @automatic_reinitialization_policy için aşağıdaki değerlerden birini belirtin:
1 - Abonelik, yayında yapılan bir değişikliğin gerektirdiği şekilde otomatik olarak yeniden başlatılmadan önce değişiklikler aboneden yüklenir.
0 - Yayındaki bir değişiklik nedeniyle bir abonelik otomatik olarak yeniden başlatıldığında, Abonedeki değişiklikler atılır.
Önemli
Parametreli filtre ekler, bırakır veya değiştirirseniz, abonede bekleyen değişiklikler yeniden başlatma sırasında Yayımcı'ya yüklenemez. Bekleyen değişiklikleri karşıya yüklemek istiyorsanız, filtreyi değiştirmeden önce tüm abonelikleri eşitleyin.
Daha fazla bilgi için bkz. Yayın Oluşturma.
Mevcut bir birleşik yayının yeniden başlatma ilkesini değiştirmek için
Yayın veritabanındaki Publisher'da sp_changemergepublication yürüterek @property için automatic_reinitialization_policy ve @value için aşağıdaki değerlerden birini belirtin:
1 - Abonelik, yayında yapılan bir değişikliğin gerektirdiği şekilde otomatik olarak yeniden başlatılmadan önce değişiklikler Aboneden karşıya yüklenir.
0 - Yayındaki bir değişiklik nedeniyle abonelik otomatik olarak yeniden başlatıldığında, Abonedeki değişiklikler atılır.
Önemli
Parametreli filtre ekler, bırakır veya değiştirirseniz, abonede bekleyen değişiklikler yeniden başlatma sırasında Yayımcı'ya yüklenemez. Bekleyen değişiklikleri karşıya yüklemek istiyorsanız, filtreyi değiştirmeden önce tüm abonelikleri eşitleyin.
Daha fazla bilgi için bkz. Yayın Özelliklerini Görüntüleme ve Değiştirme.
Çoğaltma Yönetimi Nesnelerini (RMO) Kullanma
Bireysel abonelikler yeniden başlatılmak üzere işaretlenebilir, böylece bir sonraki eşitleme sırasında yeni bir anlık görüntü oluşturulur. Abonelikler, Çoğaltma Yönetimi Nesneleri (RMO) kullanılarak program aracılığıyla yeniden başlatılabilir. Kullandığınız sınıflar, aboneliğin ait olduğu yayın türüne ve abonelik türüne (gönderim veya çekme aboneliği) bağlıdır.
İşlemsel bir yayına çekme aboneliğini yeniden başlatma
sınıfını kullanarak ServerConnection Aboneye bir bağlantı oluşturun.
TransPullSubscription sınıfının bir örneğini oluşturun ve PublicationName, DatabaseName, PublisherName, PublicationDBName ve 1. adımdaki bağlantıyı ConnectionContext için ayarlayın.
nesnesinin LoadProperties özelliklerini almak için yöntemini çağırın.
Uyarı
Bu yöntem false döndürürse, 2. adımdaki abonelik özellikleri yanlış tanımlanmıştır veya çekme aboneliği mevcut değildir.
yöntemini çağırın Reinitialize . Bu yöntem, aboneliği yeniden başlatma için işaretler.
Çekme aboneliğini eşitleyin. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme.
İşlem yayınına push aboneliğini yeniden başlatma
sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.
TransSubscription sınıfının bir örneğini oluşturun ve PublicationName, DatabaseName, SubscriberName, SubscriptionDBName ve 1. adımdaki bağlantıyı ConnectionContext için ayarlayın.
nesnesinin LoadProperties özelliklerini almak için yöntemini çağırın.
Uyarı
Bu yöntem false döndürürse, 2. adımdaki abonelik özellikleri yanlış tanımlanmıştır veya gönderme aboneliği mevcut değildir.
yöntemini çağırın Reinitialize . Bu yöntem, aboneliği yeniden başlatma için işaretler.
Push aboneliğini eşitleyin. Daha fazla bilgi için bkz. Anında İletme Aboneliğini Eşitleme.
Birleşim yayınına çekme aboneliğini yeniden başlatmak için
sınıfını kullanarak ServerConnection Aboneye bir bağlantı oluşturun.
MergePullSubscription sınıfının bir örneğini oluşturun ve ConnectionContext için PublicationName, DatabaseName, PublisherName, PublicationDBName ve 1. adımdaki bağlantıyı ayarlayın.
nesnesinin LoadProperties özelliklerini almak için yöntemini çağırın.
Uyarı
Bu yöntem false döndürürse, 2. adımdaki abonelik özellikleri yanlış tanımlanmıştır veya çekme aboneliği mevcut değildir.
yöntemini çağırın Reinitialize . Yeniden başlatmadan önce değişiklikleri Aboneye yüklemek için true değerini veya Abonede bekleyen değişiklikleri yeniden başlatıp kaybetmek için false değerini geçirin. Bu yöntem, aboneliği yeniden başlangıç olarak işaretler.
Uyarı
Aboneliğin süresi dolarsa değişiklikler karşıya yüklenemez. Daha fazla bilgi için bkz. Abonelikler için Süre Sonu Ayarlama.
Çekme aboneliğini eşitleyin. Daha fazla bilgi için bkz. Çekme Aboneliğini Senkronize Etme.
Birleştirme yayını için bir anlık iletim aboneliğini yeniden başlatma
sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.
MergeSubscription sınıfının bir örneğini oluşturun ve PublicationName, DatabaseName, SubscriberName, SubscriptionDBName ve ConnectionContext için 1. adımdaki bağlantıyı ayarlayın.
nesnesinin LoadProperties özelliklerini almak için yöntemini çağırın.
Uyarı
Bu yöntem false döndürürse, 2. adımdaki abonelik özellikleri yanlış tanımlanmıştır veya gönderme aboneliği mevcut değildir.
yöntemini çağırın Reinitialize . Yeniden başlatmadan önce değişiklikleri Aboneye yüklemek için true değerini veya Abonede bekleyen değişiklikleri yeniden başlatıp kaybetmek için false değerini geçirin. Bu yöntem, aboneliği yeniden başlatma için işaretler.
Uyarı
Aboneliğin süresi dolarsa değişiklikler karşıya yüklenemez. Daha fazla bilgi için bkz. Abonelikler için Süre Sonu Ayarlama.
Anında iletme aboneliğini eşitleyin. Daha fazla bilgi için bkz. Anında İletme Aboneliğini Eşitleme.
Örnekler (RMO)
Bu örnek, bir çekme aboneliğini işlem yayınına yeniden başlatıyor.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksProductTran";
String publicationDbName = "AdventureWorks2022";
String subscriptionDbName = "AdventureWorks2022Replica";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
TransPullSubscription subscription;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define subscription properties.
subscription = new TransPullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription and the job exists, mark the subscription
// for reinitialization and start the agent job.
if (subscription.LoadProperties() && subscription.AgentJobId != null)
{
subscription.Reinitialize();
subscription.SynchronizeWithJob();
}
else
{
// Do something here if the subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exists on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Do appropriate error handling here.
throw new ApplicationException("The subscription could not be reinitialized.", ex);
}
finally
{
conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriptionDbName As String = "AdventureWorks2022Replica"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As TransPullSubscription
Try
' Connect to the Subscriber.
conn.Connect()
' Define subscription properties.
subscription = New TransPullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription and the job exists, mark the subscription
' for reinitialization and start the agent job.
If subscription.LoadProperties() And (Not subscription.AgentJobId Is Nothing) Then
subscription.Reinitialize()
subscription.SynchronizeWithJob()
Else
' Do something here if the subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exists on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Do appropriate error handling here.
Throw New ApplicationException("The subscription could not be reinitialized.", ex)
Finally
conn.Disconnect()
End Try
Bu örnek, abonedeki bekleyen değişiklikleri ilk olarak yükledikten sonra birleştirme yayınına çekme aboneliğini yeniden başlatıyor.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksSalesOrdersMerge";
String publicationDbName = "AdventureWorks2022";
String subscriptionDbName = "AdventureWorks2022Replica";
// Create a connection to the Subscriber.
ServerConnection conn = new ServerConnection(subscriberName);
MergePullSubscription subscription;
try
{
// Connect to the Subscriber.
conn.Connect();
// Define subscription properties.
subscription = new MergePullSubscription();
subscription.ConnectionContext = conn;
subscription.DatabaseName = subscriptionDbName;
subscription.PublisherName = publisherName;
subscription.PublicationDBName = publicationDbName;
subscription.PublicationName = publicationName;
// If the pull subscription and the job exists, mark the subscription
// for reinitialization after upload and start the agent job.
if (subscription.LoadProperties() && subscription.AgentJobId != null)
{
subscription.Reinitialize(true);
subscription.SynchronizeWithJob();
}
else
{
// Do something here if the subscription does not exist.
throw new ApplicationException(String.Format(
"A subscription to '{0}' does not exists on {1}",
publicationName, subscriberName));
}
}
catch (Exception ex)
{
// Do appropriate error handling here.
throw new ApplicationException("The subscription could not be synchronized.", ex);
}
finally
{
conn.Disconnect();
}
' Define server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriptionDbName As String = "AdventureWorks2022Replica"
' Create a connection to the Subscriber.
Dim conn As ServerConnection = New ServerConnection(subscriberName)
Dim subscription As MergePullSubscription
Try
' Connect to the Subscriber.
conn.Connect()
' Define subscription properties.
subscription = New MergePullSubscription()
subscription.ConnectionContext = conn
subscription.DatabaseName = subscriptionDbName
subscription.PublisherName = publisherName
subscription.PublicationDBName = publicationDbName
subscription.PublicationName = publicationName
' If the pull subscription and the job exists, mark the subscription
' for reinitialization after upload and start the agent job.
If subscription.LoadProperties() And (Not subscription.AgentJobId Is Nothing) Then
subscription.Reinitialize(True)
subscription.SynchronizeWithJob()
Else
' Do something here if the subscription does not exist.
Throw New ApplicationException(String.Format( _
"A subscription to '{0}' does not exists on {1}", _
publicationName, subscriberName))
End If
Catch ex As Exception
' Do appropriate error handling here.
Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
conn.Disconnect()
End Try
İlgili içerik
- Abonelikleri Yeniden Başlatma
- Çoğaltma Yönetimi Nesneleri Kavramları
- Çoğaltma Güvenliği en iyi yöntemleri