Aracılığıyla paylaş


Itme abonelik eşitlemek

Itme abonelik eşitlemek yöntemi açıklanmıştır SQL Server 2012kullanarak SQL Server Management Studio, çoğaltma aracıları, ya da Çoğaltma Yönetimi Nesneleri'ni (rmo).

Bu Konuda

  • Itme abonelik eşitlemek için kullanma:

    SQL Server Management Studio

    Çoğaltma aracıları

    Çoğaltma Yönetimi Nesneleri'ni (rmo)

SQL Server Management Studio Kullanarak

Abonelikleri (için anlık görüntü ve işlem çoğaltma) Dağıtım Aracısı veya Birleştirme Aracısı (birleştirme çoğaltma) eşitlenir. Ajanlar, sürekli çalışacak, istek üzerine çalıştırmak veya bir zamanlamaya göre çalıştır. Eşitleme çizelgelerini belirleme hakkında daha fazla bilgi için bkz: Eşitleme çizelgelerini belirleme.

Talep üzerine bir abonelik Eşitle Yerel yayınları ve Yerel Abonelikleri klasörlerde Microsoft  SQL Server Management Studiove Tüm abonelikleri sekmeyi çoğaltma izleyicisi. Oracle yayınları abonelikleri abone isteğe bağlı eşitlenemez. Çoğaltma İzleyicisi başlatma hakkında daha fazla bilgi için bkz: Çoğaltma İzleyicisi'ni Başlat.

Itme abonelik Management Studio'da (yayımcı) isteğe bağlı eşitlemek için

  1. Yayımcı bağlanmak Management Studiove sonra sunucu düğümünü genişletin.

  2. Genişletme çoğaltma klasörünü ve ardından Yerel yayınları klasörü.

  3. Abonelikleri eşitlemek istediğiniz yayını genişletin.

  4. Eşitlemek ve tıklatın istediğiniz abonelik sağ Görünüm eşitleme durum.

  5. İçinde Görünüm eşitleme durum - <abone>:<SubscriptionDatabase > iletişim kutusu'yı Start. Zaman eşitleme tamamlandığında, mesaj Eşitleme Tamamlandı görüntülenir.

  6. Tıklayın yakın.

Itme abonelik Management Studio'da (at abone) isteğe bağlı eşitlemek için

  1. Abone bağlanmak Management Studiove sonra sunucu düğümünü genişletin.

  2. Genişletme çoğaltma klasörünü ve ardından Yerel Abonelikleri klasörü.

  3. Eşitlemek ve tıklatın istediğiniz abonelik sağ Görünüm eşitleme durum.

  4. Dağıtımcı bir bağlantı kurulması hakkında bir ileti görüntülenir. Click OK.

  5. İçinde Görünüm eşitleme durum - <abone>:<SubscriptionDatabase > iletişim kutusu'yı Start. Zaman eşitleme tamamlandığında, mesaj Eşitleme Tamamlandı görüntülenir.

  6. Tıklayın yakın.

Itme abonelik çoğaltma izleyicisi isteğe bağlı eşitlemek için

  1. Ç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.

  2. Tıklayın Tüm abonelikleri sekmesi.

  3. Eşitlemek ve tıklatın istediğiniz abonelik sağ Eşitleme Başlat.

  4. Eşitleme işlem durumunu görüntülemek, abonelik sağ tıklatın ve ardından Ayrıntılara.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Çoğaltma aracıları kullanma

İtme abonelikleri programla senkronize edilebilir ve uygun çoğaltma aracısı yürütülebilir dosya komutunun yürütmesini tarafından isteğe bağlı ister. Çağrılan çoğaltma aracısı yürütülebilir dosya itme abonelik ait olduğu yayın türüne bağlıdır.

Itme abonelik işlem yayınına eşitlemek için Dağıtım Aracısı başlatmak için

  • Komut isteminden veya toplu iş dosyası at dağıtımcı idam AracısıDistrib.exe. Aşağıdaki komut satırı değişkenleri belirtme:

    • -Yayınevi

    • PublisherDB-

    • -Dağıtıcı

    • -Abone

    • -SubscriberDB

    • -SubscriptionType 0 =

    SQL Server kimlik doğrulaması kullanıyorsanız, aşağıdaki bağımsız da belirtmeniz gerekir:

    • -DistributorLogin

    • -DistributorPassword

    • -DistributorSecurityMode 0 =

    • -PublisherLogin

    • -PublisherPassword

    • -PublisherSecurityMode = 0

    • -SubscriberLogin

    • -SubscriberPassword

    • -SubscriberSecurityMode 0 =

      Güvenlik notuGüvenlik Notu

      Mümkünse Windows Kimlik Doğrulaması kullanın.

Itme abonelik birleştirme yayınına eşitlemek için Birleştirme Aracısı başlatmak için

  • Komut isteminden veya toplu iş dosyası at dağıtımcı Çalıştır replmerg.exe. Aşağıdaki komut satırı değişkenleri belirtme:

    • -Yayınevi

    • PublisherDB-

    • -Yayın

    • -Dağıtıcı

    • -Abone

    • -SubscriberDB

    • -SubscriptionType 0 =

    SQL Server kimlik doğrulaması kullanıyorsanız, aşağıdaki bağımsız da belirtmeniz gerekir:

    • -DistributorLogin

    • -DistributorPassword

    • -DistributorSecurityMode 0 =

    • -PublisherLogin

    • -PublisherPassword

    • -PublisherSecurityMode = 0

    • -SubscriberLogin

    • -SubscriberPassword

    • -SubscriberSecurityMode 0 =

      Güvenlik notuGüvenlik Notu

      Mümkünse Windows Kimlik Doğrulaması kullanın.

Örnekler (çoğaltma aracıları)

Aşağıdaki örnek, bir itme abonelik eşitlemek için dağıtım aracı başlar.

REM -- Declare the variables.
SET Publisher=%instancename%
SET Subscriber=%instancename%
SET PublicationDB=AdventureWorks2012
SET SubscriptionDB=AdventureWorks2012Replica 
SET Publication=AdvWorksProductsTran

REM -- Start the Distribution Agent with four subscription streams.
REM -- The following command must be supplied without line breaks.
"C:\Program Files\Microsoft SQL Server\110\COM\DISTRIB.EXE" -Subscriber %Subscriber% 
-SubscriberDB %SubscriptionDB% -SubscriberSecurityMode 1 -Publication %Publication% 
-Publisher %Publisher% -PublisherDB %PublicationDB% -Distributor %Publisher% 
-DistributorSecurityMode 1 -Continuous -SubscriptionType 0 -SubscriptionStreams 4 

Aşağıdaki örnek, bir itme abonelik eşitlemek için Birleştirme Aracısı başlar.

REM -- Declare the variables.
SET Publisher=%instancename%
SET Subscriber=%instancename%
SET PublicationDB=AdventureWorks2012
SET SubscriptionDB=AdventureWorks2012Replica 
SET Publication=AdvWorksSalesOrdersMerge

REM -- Start the Merge Agent.
REM -- The following command must be supplied without line breaks.
"C:\Program Files\Microsoft SQL Server\110\COM\REPLMERG.EXE"  -Publisher %Publisher% 
-Subscriber  %Subscriber%  -Distributor %Publisher% -PublisherDB  %PublicationDB% 
-SubscriberDB %SubscriptionDB% -Publication %Publication% -PublisherSecurityMode 1 
-OutputVerboseLevel 3  -Output -SubscriberSecurityMode 1  -SubscriptionType 0 
-DistributorSecurityMode 1 

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Çoğaltma Yönetimi Nesneleri'ni (rmo) kullanarak

Çoğaltma Yönetimi Nesneleri'ni (rmo) ve yönetilen kod erişim için çoğaltma aracısı işlevleri kullanarak itme abonelikleri program aracılığıyla senkronize edebilirsiniz. Itme abonelik eşitlemek için kullanılan sınıflar abonelik ait olduğu yayın türüne bağlıdır.

[!NOT]

Uygulamanızın etkilemeden kendi başına çalışan bir eşitlemeyi başlatmak istiyorsanız, zaman uyumsuz olarak aracı başlatın. Ancak, aracı (örneğin bir ilerleme çubuğu görüntülemek istiyorsanız) eşitleme işlemi sırasında Aracısı'ndan geri alma ve eşitleme sonucu izlemek istiyorsanız, eşzamanlı olarak başlamalıdır. İçin Microsoft SQL Server 2005 Express Editionabone, sen başlamalı aracı eşzamanlı.

Anlık görüntü veya işlem yayın için itme abonelik eşitlemek için

  1. Dağıtımcı bir bağlantı kullanarak oluşturmak ServerConnectionsınıf

  2. Örneğini TransSubscriptionsınıf ve aşağıdaki özellikleri ayarlayın:

  3. Arama LoadPropertieskalan abonelik özelliklerini almak için yöntem. Bu yöntem ise false, abonelik varolduğundan emin olun.

  4. At dağıtımcı dağıtım aracı aşağıdaki yollardan biriyle başlatabilirsiniz:

Itme abonelik birleştirme yayınına eşitlemek için

  1. Dağıtımcı bir bağlantı kullanarak oluşturmak ServerConnectionsınıf

  2. Örneğini MergeSubscriptionsınıf ve aşağıdaki özellikleri ayarlayın:

  3. Arama LoadPropertieskalan abonelik özelliklerini almak için yöntem. Bu yöntem ise false, abonelik varolduğundan emin olun.

  4. Birleştirme Aracısı dağıtımcı adresindeki aşağıdaki yollardan biriyle başlatabilirsiniz:

    • Arama SynchronizeWithJobyöntemi örneği MergeSubscriptiondan adım 2. Bu yöntem Birleştirme Aracısı zaman uyumsuz olarak başlar ve Aracısı iş çalışırken denetimi hemen uygulamanıza döndürür. Abonelik değerinde oluşturulduysa, bu yöntem çağrılamaz falseiçin CreateSyncAgentByDefault.

    • Bir örneğini elde MergeSynchronizationAgentitibaren sınıf SynchronizationAgentözelliği ve çağrı Synchronizeyöntemi. Bu yöntem zaman uyumlu olarak birleştirme aracı başlar ve denetim ile çalışan Aracısı iş kalır. Eşzamanlı yürütme sırasında idare StatusAracısı çalışırken olay.

Örnekler (rmo)

Bu örnek işlem yayınına itme abonelik eşitler nerede aracı Aracısı işi eşzamansız kullanarak başlatılır.

         // Define the server, publication, and database names.
            string subscriberName = subscriberInstance;
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksProductTran";
            string subscriptionDbName = "AdventureWorks2012Replica";
            string publicationDbName = "AdventureWorks2012";

            /// Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            TransSubscription subscription;

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Instantiate the push subscription.
                subscription = new TransSubscription();
                subscription.ConnectionContext = conn;
                subscription.DatabaseName = publicationDbName;
                subscription.PublicationName = publicationName;
                subscription.SubscriptionDBName = subscriptionDbName;
                subscription.SubscriberName = subscriberName;

                // If the push subscription and the job exists, start the agent job.
                if (subscription.LoadProperties() && subscription.AgentJobId != null)
                {
                    // Start the Distribution Agent asynchronously.
                    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)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("The subscription could not be synchronized.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Dim subscription As TransSubscription

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Instantiate the push subscription.
    subscription = New TransSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = publicationDbName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.SubscriberName = subscriberName

    ' If the push subscription and the job exists, start the agent job.
    If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then
        ' Start the Distribution Agent asynchronously.
        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
    ' Implement appropriate error handling here.
    Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
    conn.Disconnect()
End Try

Bu örnek nereye ajan eşzamanlı olarak başlatılan bir işlem yayın için itme abonelik eşitler.

           // Define the server, publication, and database names.
            string subscriberName = subscriberInstance;
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksProductTran";
            string subscriptionDbName = "AdventureWorks2012Replica";
            string publicationDbName = "AdventureWorks2012";

            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            TransSubscription subscription;

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Define the push subscription.
                subscription = new TransSubscription();
                subscription.ConnectionContext = conn;
                subscription.DatabaseName = publicationDbName;
                subscription.PublicationName = publicationName;
                subscription.SubscriptionDBName = subscriptionDbName;
                subscription.SubscriberName = subscriberName;

                // If the push subscription exists, start the synchronization.
                if (subscription.LoadProperties())
                {
                    // Check that we have enough metadata to start the agent.
                    if (subscription.SubscriberSecurity != null)
                    {
                        // Synchronously start the Distribution Agent for the subscription.
                        subscription.SynchronizationAgent.Synchronize();
                    }
                    else
                    {
                        throw new ApplicationException("There is insufficent metadata to " +
                            "synchronize the subscription. Recreate the subscription with " +
                            "the agent job or supply the required agent properties at run time.");
                    }
                }
                else
                {
                    // Do something here if the push subscription does not exist.
                    throw new ApplicationException(String.Format(
                        "The subscription to '{0}' does not exist on {1}",
                        publicationName, subscriberName));
                }
            }
            catch (Exception ex)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("The subscription could not be synchronized.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Dim subscription As TransSubscription

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Define the push subscription.
    subscription = New TransSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = publicationDbName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.SubscriberName = subscriberName

    ' If the push subscription exists, start the synchronization.
    If subscription.LoadProperties() Then
        ' Check that we have enough metadata to start the agent.
        If Not subscription.SubscriberSecurity Is Nothing Then

            ' Synchronously start the Distribution Agent for the subscription.
            subscription.SynchronizationAgent.Synchronize()
        Else
            Throw New ApplicationException("There is insufficent metadata to " + _
             "synchronize the subscription. Recreate the subscription with " + _
             "the agent job or supply the required agent properties at run time.")
        End If
    Else
        ' Do something here if the push subscription does not exist.
        Throw New ApplicationException(String.Format( _
         "The subscription to '{0}' does not exist on {1}", _
         publicationName, subscriberName))
    End If
Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
    conn.Disconnect()
End Try

Bu örnek birleştirme yayını itme abonelik eşitler nerede aracı Aracısı işi eşzamansız kullanarak başlatılır.

           // Define the server, publication, and database names.
            string subscriberName = subscriberInstance;
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string subscriptionDbName = "AdventureWorks2012Replica";
            string publicationDbName = "AdventureWorks2012";

            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            MergeSubscription subscription;

            try
            {
                // Connect to the Publisher.
                conn.Connect();

                // Define push subscription.
                subscription = new MergeSubscription();
                subscription.ConnectionContext = conn;
                subscription.DatabaseName = publicationDbName;
                subscription.PublicationName = publicationName;
                subscription.SubscriptionDBName = subscriptionDbName;
                subscription.SubscriberName = subscriberName;

                // If the push subscription and the job exists, start the agent job.
                if (subscription.LoadProperties() && subscription.AgentJobId != null)
                {
                    // Start the Merge Agent asynchronously.
                    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)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("The subscription could not be synchronized.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Dim subscription As MergeSubscription

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Define push subscription.
    subscription = New MergeSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = publicationDbName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.SubscriberName = subscriberName

    ' If the push subscription and the job exists, start the agent job.
    If subscription.LoadProperties() And Not subscription.AgentJobId Is Nothing Then
        ' Start the Merge Agent asynchronously.
        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
    ' Implement appropriate error handling here.
    Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
    conn.Disconnect()
End Try

Bu örnek nereye ajan eşzamanlı olarak başlatılan bir birleştirme yayını itme abonelik eşitler.

         // Define the server, publication, and database names.
            string subscriberName = subscriberInstance;
            string publisherName = publisherInstance;
            string publicationName = "AdvWorksSalesOrdersMerge";
            string subscriptionDbName = "AdventureWorks2012Replica";
            string publicationDbName = "AdventureWorks2012";

            // Create a connection to the Publisher.
            ServerConnection conn = new ServerConnection(publisherName);

            MergeSubscription subscription;

            try
            {
                // Connect to the Publisher
                conn.Connect();

                // Define the subscription.
                subscription = new MergeSubscription();
                subscription.ConnectionContext = conn;
                subscription.DatabaseName = publicationDbName;
                subscription.PublicationName = publicationName;
                subscription.SubscriptionDBName = subscriptionDbName;
                subscription.SubscriberName = subscriberName;

                // If the push subscription exists, start the synchronization.
                if (subscription.LoadProperties())
                {
                    // Check that we have enough metadata to start the agent.
                    if (subscription.SubscriberSecurity != null)
                    {
                        // Synchronously start the Merge Agent for the subscription.
                        subscription.SynchronizationAgent.Synchronize();
                    }
                    else
                    {
                        throw new ApplicationException("There is insufficent metadata to " +
                            "synchronize the subscription. Recreate the subscription with " +
                            "the agent job or supply the required agent properties at run time.");
                    }
                }
                else
                {
                    // Do something here if the push subscription does not exist.
                    throw new ApplicationException(String.Format(
                        "The subscription to '{0}' does not exist on {1}",
                        publicationName, subscriberName));
                }
            }
            catch (Exception ex)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("The subscription could not be synchronized.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Define the server, publication, and database names.
Dim subscriberName As String = subscriberInstance
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim subscriptionDbName As String = "AdventureWorks2012Replica"
Dim publicationDbName As String = "AdventureWorks2012"

' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Dim subscription As MergeSubscription

Try
    ' Connect to the Publisher
    conn.Connect()

    ' Define the subscription.
    subscription = New MergeSubscription()
    subscription.ConnectionContext = conn
    subscription.DatabaseName = publicationDbName
    subscription.PublicationName = publicationName
    subscription.SubscriptionDBName = subscriptionDbName
    subscription.SubscriberName = subscriberName

    ' If the push subscription exists, start the synchronization.
    If subscription.LoadProperties() Then
        ' Check that we have enough metadata to start the agent.
        If Not subscription.SubscriberSecurity Is Nothing Then
            ' Synchronously start the Merge Agent for the subscription.
            ' Log agent messages to an output file.
            subscription.SynchronizationAgent.Output = "mergeagent.log"
            subscription.SynchronizationAgent.OutputVerboseLevel = 2
            subscription.SynchronizationAgent.Synchronize()
        Else
            Throw New ApplicationException("There is insufficent metadata to " + _
             "synchronize the subscription. Recreate the subscription with " + _
             "the agent job or supply the required agent properties at run time.")
        End If
    Else
        ' Do something here if the push subscription does not exist.
        Throw New ApplicationException(String.Format( _
         "The subscription to '{0}' does not exist on {1}", _
         publicationName, subscriberName))
    End If
Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("The subscription could not be synchronized.", ex)
Finally
    conn.Disconnect()
End Try

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Ayrıca bkz.

Kavramlar

Çoğaltma Management Objects kavramları

Verileri eşitleme

ModeliveÇoğaltma güvenlik en iyi uygulamalar