Bir abonelik yeniden başlatmak
Bu konuda bir abonelik açıklar SQL Server 2012kullanarak SQL Server Management Studio, Transact-SQL, ya da Çoğaltma Yönetimi Nesneleri'ni (rmo). Böylece yeni bir anlık görüntü sonraki eşitlemede uygulanan tek tek abonelikleri reinitialization için işaretlenebilir.
Bu Konuda
Bir abonelik yeniden başlatmak için kullanma:
SQL Server Management Studio
Transact-SQL
Çoğaltma Yönetimi Nesneleri'ni (rmo)
SQL Server Management Studio Kullanarak
Bir abonelik reinitializing iki parçalı bir işlemdir:
Tek bir abonelik ya da tüm abonelikleri yayınına işaretlenmiş reinitialization. Abonelik reinitialization için işaretlemek Abonelikler yeniden kullanılabilir iletişim kutusu Yerel yayınları klasörü ve Yerel Abonelikleri klasöründe Microsoft SQL Server Management Studio. Abonelikleri de işaretleyebilirsiniz Tüm abonelikleri sekmesini ve çoğaltma izleyicisi yayınlarda düğüm. Çoğaltma İzleyicisi başlatma hakkında daha fazla bilgi için bkz: Çoğaltma İzleyicisi'ni Başlat. Abonelik reinitialization için işaretlemek, aşağıdaki seçenekler vardır:
Geçerli anlık kullanın
Geçerli anlık görüntü için abone dağıtım aracısını veya Birleştirme Aracısı sonraki çalıştırdığında uygulamak için seçin. Hiçbir geçerli anlık görüntü varsa, bu seçeneği seçilemez.Yeni bir anlık görüntü kullanmak
Yeni bir anlık görüntü ile abonelik yeniden başlatmak için seçin. Snapshot Aracısı tarafından yalnızca oluşturulduktan sonra anlık görüntü için abone uygulanabilir. Snapshot aracı bir zamanlamaya çalıştırmak için ayarlanırsa, sonra sonraki zamanlanmış anlık görüntü Aracısı gerçekleştirene kadar abonelik yeniden değil. Seçin Oluştur yeni anlık görüntü artık Snapshot aracı hemen başlamak için.Eşitlenmemiş değişiklikleri reinitialization önce yükle
Yalnızca çoğaltma birleştirme. Abone veri anlık ile yazılır önce beklemedeki değişiklikleri abonelik veritabanı yüklemek için seçin.Ekleme, bırakma veya parametreli filtre değiştirme, bekleyen değişiklikleri abone için yayımcı sırasında reinitialization yüklenemiyor. Bekleyen değişiklikler yüklemek isterseniz, filtre değiştirmeden önce tüm abonelikleri eşitleyin.
It sonraki eşitlemesinde abonelik: (için işlem çoğaltma) dağıtım aracısını veya Birleştirme Aracısı (için birleştirme çoğaltma) en son anlık bir abonelik reinitialization için işaretlenmiş olan her abone için geçerlidir. Abonelik eşitleme hakkında daha fazla bilgi için Itme abonelik eşitlemekve Çekme abonelik Eşitle.
Tek bir itme veya çekme abonelik Management Studio'da (yayımcı) reinitialization için işaretlemek için
Yayımcı bağlanmak Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma klasörünü ve ardından Yerel yayınları klasörü.
Olan abonelik yeniden başlatmak istediğiniz yayını genişletin.
Abonelik sağ tıklatın ve ardından yeniden.
İçinde Abonelikler yeniden iletişim kutusunda, Seç seçeneklerini ve ardından Mark Reinitialization için.
Tek çekme abonelik Management Studio'da (at abone) reinitialization için işaretlemek için
Abone bağlanmak Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma klasörünü ve ardından Yerel Abonelikleri klasörü.
Abonelik sağ tıklatın ve ardından yeniden.
Görüntülenen onay iletişim kutusunda, Evet.
Tüm abonelikleri Management Studio'da reinitialization için işaretlemek için
Yayımcı bağlanmak Management Studiove sonra sunucu düğümünü genişletin.
Genişletme çoğaltma klasörünü ve ardından Yerel yayınları klasörü.
Abonelikleri yeniden başlatmak ve tıklatın istediğiniz yayını sağ tıklatın Tüm abonelikleri yeniden başlatmak.
İçinde Abonelikler yeniden iletişim kutusunda, Seç seçeneklerini ve ardından Mark Reinitialization için.
Çoğaltma izleyicisi reinitialization için tek bir itme veya çekme abonelik işaretlemek için
Çoğaltma İzleyicisi'nde, sol bölmede bir yayımcı grubu genişletin, bir Publisher genişletin ve sonra bir yayın'ı tıklatın.
Tıklayın Tüm abonelikleri sekmesi.
Yeniden tıklatıp ardından istediğiniz abonelik sağ Abonelik yeniden.
İçinde Abonelikler yeniden iletişim kutusunda, Seç seçeneklerini ve ardından Mark Reinitialization için.
Tüm abonelikleri çoğaltma izleyicisi reinitialization için işaretlemek için
Çoğaltma İzleyicisi'nde, sol bölmede bir yayımcı grubu genişletin ve sonra bir Publisher'ı genişletin.
Abonelikleri yeniden başlatmak ve tıklatın istediğiniz yayını sağ tıklatın Tüm abonelikleri yeniden başlatmak.
İçinde Abonelikler yeniden iletişim kutusunda, Seç seçeneklerini ve ardından Mark Reinitialization için.
[Top]
Transact-SQL'i Kullanma
Abonelikleri çoğaltma depolanmış yordamları kullanarak programsal yeniden. Kullanılan saklı yordam (itme veya çekme) abonelik türü abonelik ait olduğu yayın türüne bağlıdır.
Çekme abonelik işlem yayınına yeniden başlatmak için
Abone veritabanı Abone tarafında idam sp_reinitpullsubscription (Transact-sql). Belirtmek @ publisher, @ publisher_db, ve @ yayın. Bu reinitialization dağıtım aracı sonraki çalıştırdığında abonelik işaretler.
(İsteğe bağlı) Abonelik eşitlemek için abone adresindeki dağıtım aracı başlatın. Daha fazla bilgi için, bkz. Çekme abonelik Eşitle.
Itme abonelik işlem yayınına yeniden başlatmak için
Yayımcı tarafında idam sp_reinitsubscription (Transact-sql). Belirtmek @ yayın, @ abone, ve @ destination_db. Bu reinitialization dağıtım aracı sonraki çalıştırdığında abonelik işaretler.
(İsteğe bağlı) Dağıtım aracı dağıtımcı abonelik eşitlemek için başlatın. Daha fazla bilgi için, bkz. Itme abonelik eşitlemek.
Çekme abonelik birleştirme yayınına yeniden başlatmak için
Abone veritabanı Abone tarafında idam sp_reinitmergepullsubscription (Transact-sql). Belirtmek @ publisher, @ publisher_db, ve @ yayın. Reinitialization oluşmadan önce değişiklikleri abonenin gelen yüklemek için bir değer belirtmek trueiçin @ upload_first. Bu reinitialization birleştirme aracı sonraki çalıştırdığında abonelik işaretler.
Önemli Ekleme, bırakma veya parametreli filtre değiştirme, bekleyen değişiklikleri abone için yayımcı sırasında reinitialization yüklenemiyor. Bekleyen değişiklikler yüklemek isterseniz, filtre değiştirmeden önce tüm abonelikleri eşitleyin.
(İsteğe bağlı) Birleştirme Aracısı abonelik eşitlemek için abone başlatın. Daha fazla bilgi için, bkz. Çekme abonelik Eşitle.
Itme abonelik birleştirme yayınına yeniden başlatmak için
Yayımcı tarafında idam sp_reinitmergesubscription (Transact-sql). Belirtmek @ yayın, @ abone, ve @ subscriber_db. Reinitialization oluşmadan önce değişiklikleri abonenin gelen yüklemek için bir değer belirtmek trueiçin @ upload_first. Bu reinitialization dağıtım aracı sonraki çalıştırdığında abonelik işaretler.
Önemli Ekleme, bırakma veya parametreli filtre değiştirme, bekleyen değişiklikleri abone için yayımcı sırasında reinitialization yüklenemiyor. Bekleyen değişiklikler yüklemek isterseniz, filtre değiştirmeden önce tüm abonelikleri eşitleyin.
(İsteğe bağlı) Birleştirme Aracısı dağıtımcı abonelik eşitlemek için başlatın. Daha fazla bilgi için, bkz. Itme abonelik eşitlemek.
Yeni bir birleştirme yayını oluştururken reinitialization ilkesini ayarlamak için
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_addmergepublication, aşağıdakilerden biri için değerler belirterek @ automatic_reinitialization_policy:
1 -abonelik otomatik olarak yeniden önce değişiklikleri abonenin karşıya olarak yayını değişiklik tarafından gerekli.
0 -abone adresindeki değişiklikler ne zaman bir abonelik otomatik olarak yeniden atılan olarak yayını değişiklik tarafından gerekli.
Önemli Ekleme, bırakma veya parametreli filtre değiştirme, bekleyen değişiklikleri abone için yayımcı sırasında reinitialization yüklenemiyor. Bekleyen değişiklikler yüklemek isterseniz, filtre değiştirmeden önce tüm abonelikleri eşitleyin.
Daha fazla bilgi için, bkz. Yayın oluşturma.
Varolan bir birleştirme yayını reinitialization ilkesini değiştirmek için
Yayını veritabanı üzerinde Yayımcı tarafında idam sp_changemergepublication, belirten automatic_reinitialization_policy için @ özellik ve değer aşağıdakilerden biri için @ değeri:
1 -abonelik otomatik olarak yeniden önce değişiklikleri abonenin karşıya olarak yayını değişiklik tarafından gerekli.
0 -abone adresindeki değişiklikler ne zaman bir abonelik otomatik olarak yeniden atılan olarak yayını değişiklik tarafından gerekli.
Önemli Ekleme, bırakma veya parametreli filtre değiştirme, bekleyen değişiklikleri abone için yayımcı sırasında reinitialization yüklenemiyor. Bekleyen değişiklikler yüklemek isterseniz, filtre 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.
[Top]
Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak
Böylece sonraki eşitlemede, yeni bir anlık görüntü uygulanan tek tek abonelikleri reinitialization için işaretlenebilir. Abonelikleri çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak programlı olarak yeniden. Kullandığınız sınıfları için yayının türüne bağlıdır abonelik ait olduğu ve abonelik (başka bir deyişle, bir itme veya çekme abonelik) türü.
Çekme abonelik işlem yayınına yeniden başlatmak için
Abone bir bağlantı kullanarak oluşturmak ServerConnectionsınıf
Örneğini TransPullSubscriptionsınıfı ve set PublicationName, DatabaseName, PublisherName, PublicationDBNameve adım 1'bağlantısını ConnectionContext.
Arama LoadPropertiesnesne özelliklerini almak için yöntem.
[!NOT]
Bu yöntem ise false, adım 2 Abonelik özellikleri yanlış tanımlanan veya çekme abonelik yok.
Arama Reinitializeyöntemi. Bu yöntem abonelik reinitialization için işaretler.
Çekme abonelik eşitleyin. Daha fazla bilgi için, bkz. Çekme abonelik Eşitle.
Itme abonelik işlem yayınına yeniden başlatmak için
Kullanarak bir yayımcının bağlantısı oluşturmak ServerConnectionsınıf
Örneğini TransSubscriptionsınıfı ve set PublicationName, DatabaseName, SubscriberName, SubscriptionDBNameve adım 1'bağlantısını ConnectionContext.
Arama LoadPropertiesnesne özelliklerini almak için yöntem.
[!NOT]
Bu yöntem ise false, adım 2 Abonelik özellikleri yanlış tanımlanan veya itme abonelik yok.
Arama Reinitializeyöntemi. Bu yöntem abonelik reinitialization için işaretler.
Itme abonelik eşitleyin. Daha fazla bilgi için, bkz. Itme abonelik eşitlemek.
Çekme abonelik birleştirme yayınına yeniden başlatmak için
Abone bir bağlantı kullanarak oluşturmak ServerConnectionsınıf
Örneğini MergePullSubscriptionsınıfı ve set PublicationName, DatabaseName, PublisherName, PublicationDBNameve adım 1'bağlantısını ConnectionContext.
Arama LoadPropertiesnesne özelliklerini almak için yöntem.
[!NOT]
Bu yöntem ise false, adım 2 Abonelik özellikleri yanlış tanımlanan veya çekme abonelik yok.
Arama Reinitializeyöntemi. Değeri geçmek truedeğişiklikleri reinitialization ya da değeri önce abone karşıya falseyeniden ve abone bekleyen değişiklikleri kaybetmek için. Bu yöntem abonelik reinitialization için işaretler.
[!NOT]
Abonelik süresi dolarsa değişiklikleri karşıya yüklenemiyor. Daha fazla bilgi için, bkz. Abonelik için sona erme süresi ayarlamak.
Çekme abonelik eşitleyin. Daha fazla bilgi için, bkz. Çekme abonelik Eşitle.
Itme abonelik birleştirme yayınına yeniden başlatmak için
Kullanarak bir yayımcının bağlantısı oluşturmak ServerConnectionsınıf
Örneğini MergeSubscriptionsınıfı ve set PublicationName, DatabaseName, SubscriberName, SubscriptionDBNameve adım 1'bağlantısını ConnectionContext.
Arama LoadPropertiesnesne özelliklerini almak için yöntem.
[!NOT]
Bu yöntem ise false, adım 2 Abonelik özellikleri yanlış tanımlanan veya itme abonelik yok.
Arama Reinitializeyöntemi. Değeri geçmek truedeğişiklikleri reinitialization ya da değeri önce abone karşıya falseyeniden ve abone bekleyen değişiklikleri kaybetmek için. Bu yöntem abonelik reinitialization için işaretler.
[!NOT]
Abonelik süresi dolarsa değişiklikleri karşıya yüklenemiyor. Daha fazla bilgi için, bkz. Abonelik için sona erme süresi ayarlamak.
Itme abonelik eşitleyin. Daha fazla bilgi için, bkz. Itme abonelik eşitlemek.
Örnekler (rmo)
Bu örnek işlem yayınına çekme abonelik reinitializes.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksProductTran";
String publicationDbName = "AdventureWorks2012";
String subscriptionDbName = "AdventureWorks2012Replica";
// 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 = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
' 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, bir çekme abonelik birleştirme yayınına abone adresindeki değişiklikler bekleyen ilk karşıya sonra reinitializes.
// Define server, publication, and database names.
String subscriberName = subscriberInstance;
String publisherName = publisherInstance;
String publicationName = "AdvWorksSalesOrdersMerge";
String publicationDbName = "AdventureWorks2012";
String subscriptionDbName = "AdventureWorks2012Replica";
// 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 = "AdventureWorks2012"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
' 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
[Top]
Ayrıca bkz.
Kavramlar
Abonelikleri yeniden başlatmak