DistributionPublisher.Remove(Boolean) DistributionPublisher.Remove(Boolean) DistributionPublisher.Remove(Boolean) Method

정의

현재 연결된 배포자에서 이 게시자에 대한 등록을 제거합니다. Removes the registration for this Publisher from the currently connected Distributor.

public:
 void Remove(bool force);
public void Remove (bool force);
Public Sub Remove (force As Boolean)
매개 변수
force
Boolean Boolean Boolean

게시자가 별도의 서버에 있는 경우 게시자도 해당 배포자를 제거했는지 확인하지 않고 배포자에서 게시자를 제거할지 여부를 지정하는 Boolean 값입니다. A Boolean value that specifies whether the Publisher is uninstalled from the Distributor without verifying that Publisher has also uninstalled the Distributor, if the Publisher is on a separate server. true이면 연결할 수 없는 원격 서버에 게시자가 있다 하더라도 해당 게시자와 관련된 모든 복제 개체가 삭제됩니다. If true, all the replication objects associated with the Publisher are dropped even if the Publisher is on a remote server that cannot be reached. false이면 복제는 원격 게시자가 배포자를 제거했는지 먼저 확인합니다. If false, replication first verifies that the remote Publisher has uninstalled the Distributor.

예제

// 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 = "AdventureWorks2012";

// 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 AdventureWorks2012 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 = "AdventureWorks2012"

' 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 AdventureWorks2012 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

설명

force 로 설정 된 true, 원격 게시자에 남은 모든 게시 메타 데이터 정리 해야 할 수 있습니다.When force is set to true, you may have to cleanup any remaining publishing metadata at a remote Publisher.

게시자 이면 배포자와 같은 서버에서 복제는 게시 또는 배포 개체가 남아 있는 로컬 서버의 않은지 확인 합니다.When the Publisher is on the same server as the Distributor, replication verifies that there are no publication or distribution objects remaining on the local server.

Remove 메서드의 구성원만 호출할 수는 sysadmin 배포자에서 고정된 서버 역할입니다.The Remove method can only be called by a member of the sysadmin fixed server role on the Distributor.

호출 Remove 를 실행 하는 것과 같습니다 sp_dropdistpublisher 배포자에서 합니다.Calling Remove is equivalent to executing sp_dropdistpublisher at the Distributor.

적용 대상

추가 정보