Share via


Clase RegisteredSubscriberCollection

Represents a collection of RegisteredSubscriber objects.

Jerarquía de herencia

System. . :: . .Object
  Microsoft.SqlServer.Replication. . :: . .ReplicationBaseCollection
    Microsoft.SqlServer.Replication..::..RegisteredSubscriberCollection

Espacio de nombres:  Microsoft.SqlServer.Replication
Ensamblado:  Microsoft.SqlServer.Rmo (en Microsoft.SqlServer.Rmo.dll)

Sintaxis

'Declaración
Public NotInheritable Class RegisteredSubscriberCollection _
    Inherits ReplicationBaseCollection
'Uso
Dim instance As RegisteredSubscriberCollection
public sealed class RegisteredSubscriberCollection : ReplicationBaseCollection
public ref class RegisteredSubscriberCollection sealed : public ReplicationBaseCollection
[<SealedAttribute>]
type RegisteredSubscriberCollection =  
    class
        inherit ReplicationBaseCollection
    end
public final class RegisteredSubscriberCollection extends ReplicationBaseCollection

El tipo RegisteredSubscriberCollection expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad pública Count Gets the number of objects in the referenced collection. (Se hereda de ReplicationBaseCollection.)
Propiedad pública IsSynchronized Gets whether or not access to the collection is synchronized and is therefore thread-safe. (Se hereda de ReplicationBaseCollection.)
Propiedad pública Item[ ( [ ( Int32] ) ] ) Gets a RegisteredSubscriber object in the collection by index number.
Propiedad pública Item[ ( [ ( String] ) ] ) Gets a RegisteredSubscriber object in the collection by name.
Propiedad pública SyncRoot Gets an object that can be used to synchronize access to the collection. (Se hereda de ReplicationBaseCollection.)

Arriba

Métodos

  Nombre Descripción
Método público CopyTo(Array, Int32) Copies the collection to an array. (Se hereda de ReplicationBaseCollection.)
Método público CopyTo(RegisteredSubscriberCollection, Int32) Makes a copy of the collection.
Método público Equals (Se hereda de Object.)
Método protegido Finalize (Se hereda de Object.)
Método público GetEnumerator Gets an enumerator that is used to iterate through the objects in a collection. (Se hereda de ReplicationBaseCollection.)
Método público GetHashCode (Se hereda de Object.)
Método público GetType (Se hereda de Object.)
Método protegido InitList Infraestructura. (Se hereda de ReplicationBaseCollection.)
Método protegido MemberwiseClone (Se hereda de Object.)
Método público Refresh Refreshes the collection. (Se hereda de ReplicationBaseCollection.)
Método público ToString (Se hereda de Object.)

Arriba

Comentarios

A RegisteredSubscriber object in the collection can be accessed from the Item()()()() property using an [Int32] index value or using a [String] index value that is the Subscriber name.

This namespace, class, or member is supported only in version 2.0 of the .NET Framework.

Thread Safety

Any public static (Shared in Microsoft Visual Basic) members of this type are safe for multithreaded operations. Any instance members are not guaranteed to be thread safe.

Ejemplos

This example shows how to check the number of RegisteredSubscriber objects in the RegisteredSubscriberCollection accessed from the RegisteredSubscribers property.

         // Set the Distributor and publication database names.
            // Publisher and Distributor are on the same server instance.
            string publisherName = publisherInstance;
            string distributorName = publisherInstance;
            string distributionDbName = "distribution";
            string publicationDbName = "AdventureWorks";

            // Create connections to the Publisher and Distributor
            // using Windows Authentication.
            ServerConnection publisherConn = new ServerConnection(publisherName);
            ServerConnection distributorConn = new ServerConnection(distributorName);

            // Create the objects we need.
            ReplicationServer distributor =
                new ReplicationServer(distributorConn);
            DistributionPublisher publisher;
            DistributionDatabase distributionDb =
                new DistributionDatabase(distributionDbName, distributorConn);
            ReplicationDatabase publicationDb;
            publicationDb = new ReplicationDatabase(publicationDbName, publisherConn);

            try
            {
                // Connect to the Publisher and Distributor.
                publisherConn.Connect();
                distributorConn.Connect();

                // Disable all publishing on the AdventureWorks2008R2 database.
                if (publicationDb.LoadProperties())
                {
                    if (publicationDb.EnabledMergePublishing)
                    {
                        publicationDb.EnabledMergePublishing = false;
                    }
                    else if (publicationDb.EnabledTransPublishing)
                    {
                        publicationDb.EnabledTransPublishing = false;
                    }
                }
                else
                {
                    throw new ApplicationException(
                        String.Format("The {0} database does not exist.", publicationDbName));
                }

                // We cannot uninstall the Publisher if there are still Subscribers.
                if (distributor.RegisteredSubscribers.Count == 0)
                {
                    // Uninstall the Publisher, if it exists.
                    publisher = new DistributionPublisher(publisherName, distributorConn);
                    if (publisher.LoadProperties())
                    {
                        publisher.Remove(false);
                    }
                    else
                    {
                        // Do something here if the Publisher does not exist.
                        throw new ApplicationException(String.Format(
                            "{0} is not a Publisher for {1}.", publisherName, distributorName));
                    }

                    // Drop the distribution database.
                    if (distributionDb.LoadProperties())
                    {
                        distributionDb.Remove();
                    }
                    else
                    {
                        // Do something here if the distribition DB does not exist.
                        throw new ApplicationException(String.Format(
                            "The distribution database '{0}' does not exist on {1}.",
                            distributionDbName, distributorName));
                    }

                    // Uninstall the Distributor, if it exists.
                    if (distributor.LoadProperties())
                    {
                        // Passing a value of false means that the Publisher 
                        // and distribution databases must already be uninstalled,
                        // and that no local databases be enabled for publishing.
                        distributor.UninstallDistributor(false);
                    }
                    else
                    {
                        //Do something here if the distributor does not exist.
                        throw new ApplicationException(String.Format(
                            "The Distributor '{0}' does not exist.", distributorName));
                    }
                }
                else
                {
                    throw new ApplicationException("You must first delete all subscriptions.");
                }
            }
            catch (Exception ex)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("The Publisher and Distributor could not be uninstalled", ex);
            }
            finally
            {
                publisherConn.Disconnect();
                distributorConn.Disconnect();
            }
' Set the Distributor and publication database names.
' Publisher and Distributor are on the same server instance.
Dim publisherName As String = publisherInstance
Dim distributorName As String = subscriberInstance
Dim distributionDbName As String = "distribution"
Dim publicationDbName As String = "AdventureWorks2008R2"

' Create connections to the Publisher and Distributor
' using Windows Authentication.
Dim publisherConn As ServerConnection = New ServerConnection(publisherName)
Dim distributorConn As ServerConnection = New ServerConnection(distributorName)

' Create the objects we need.
Dim distributor As ReplicationServer
distributor = New ReplicationServer(distributorConn)
Dim publisher As DistributionPublisher
Dim distributionDb As DistributionDatabase
distributionDb = New DistributionDatabase(distributionDbName, distributorConn)
Dim publicationDb As ReplicationDatabase
publicationDb = New ReplicationDatabase(publicationDbName, publisherConn)

Try
    ' Connect to the Publisher and Distributor.
    publisherConn.Connect()
    distributorConn.Connect()

    ' Disable all publishing on the AdventureWorks database.
    If publicationDb.LoadProperties() Then
        If publicationDb.EnabledMergePublishing Then
            publicationDb.EnabledMergePublishing = False
        ElseIf publicationDb.EnabledTransPublishing Then
            publicationDb.EnabledTransPublishing = False
        End If
    Else
        Throw New ApplicationException( _
            String.Format("The {0} database does not exist.", publicationDbName))
    End If

    ' We cannot uninstall the Publisher if there are still Subscribers.
    If distributor.RegisteredSubscribers.Count = 0 Then
        ' Uninstall the Publisher, if it exists.
        publisher = New DistributionPublisher(publisherName, distributorConn)
        If publisher.LoadProperties() Then
            publisher.Remove(False)
        Else
            ' Do something here if the Publisher does not exist.
            Throw New ApplicationException(String.Format( _
                "{0} is not a Publisher for {1}.", publisherName, distributorName))
        End If

        ' Drop the distribution database.
        If distributionDb.LoadProperties() Then
            distributionDb.Remove()
        Else
            ' Do something here if the distribition DB does not exist.
            Throw New ApplicationException(String.Format( _
             "The distribution database '{0}' does not exist on {1}.", _
             distributionDbName, distributorName))
        End If

        ' Uninstall the Distributor, if it exists.
        If distributor.LoadProperties() Then
            ' Passing a value of false means that the Publisher 
            ' and distribution databases must already be uninstalled,
            ' and that no local databases be enabled for publishing.
            distributor.UninstallDistributor(False)
        Else
            'Do something here if the distributor does not exist.
            Throw New ApplicationException(String.Format( _
                "The Distributor '{0}' does not exist.", distributorName))
        End If
    Else
        Throw New ApplicationException("You must first delete all subscriptions.")
    End If

Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("The Publisher and Distributor could not be uninstalled", ex)

Finally
    publisherConn.Disconnect()
    distributorConn.Disconnect()

End Try

Seguridad para subprocesos

Cualquier miembro público static (Shared en Visual Basic) de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.