DistributionPublisher Class
SQL Server 2012
Represents information about a Publisher registered at the currently connected Distributor.
System.Object
Microsoft.SqlServer.Replication.ReplicationObject
Microsoft.SqlServer.Replication.DistributionPublisher
Microsoft.SqlServer.Replication.ReplicationObject
Microsoft.SqlServer.Replication.DistributionPublisher
Namespace: Microsoft.SqlServer.Replication
Assembly: Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)
The DistributionPublisher type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | DistributionPublisher() | Creates a new instance of the DistributionPublisher class. |
![]() | DistributionPublisher(String, ServerConnection) | Creates a new instance of the DistributionPublisher class with the Publisher name and with a connection to the Distributor used by the Publisher. |
| Name | Description | |
|---|---|---|
![]() | CachePropertyChanges | Gets or sets whether to cache changes made to the replication properties or to apply them immediately. (Inherited from ReplicationObject.) |
![]() | ConnectionContext | Gets or sets the connection to an instance of Microsoft SQL Server. (Inherited from ReplicationObject.) |
![]() | DistributionDatabase | Gets or sets the name of the distribution database used by the Publisher. |
![]() | DistributionPublications | Gets the publications that exist at the Publisher. |
![]() | HeterogeneousLogReaderAgentExists | Gets a value that indicates whether the Log Reader Agent job exists for the non-SQL Server Publisher. |
![]() | HeterogeneousLogReaderAgentProcessSecurity | Gets the security context used by the Log Reader agent for a non-SQL Server Publisher. |
![]() | IsExistingObject | Gets whether the object exists on the server or not. (Inherited from ReplicationObject.) |
![]() | Name | Gets or sets the name of the Publisher instance of Microsoft SQL Server. |
![]() | PublisherSecurity | Gets the security context used by replication agent when connecting to the Publisher. |
![]() | PublisherType | Gets or sets the Publisher type. |
![]() | RegisteredSubscribers | Gets the Subscribers that are subscribed to publications at the Publisher. |
![]() | SqlServerName | Gets the name of the Microsoft SQL Server instance to which this object is connected. (Inherited from ReplicationObject.) |
![]() | Status | Gets the Publisher status. |
![]() | ThirdParty | Gets or sets a value that indicates whether the Publisher is a non-SQL Server Publisher. |
![]() | TransPublications | Gets the transactional publications at the Publisher. |
![]() | TrustedDistributorConnection | Infrastructure. Gets or sets a value that indicates whether the distributor connection is trusted. |
![]() | UserData | Gets or sets an object property that allows users to attach their own data to the object. (Inherited from ReplicationObject.) |
![]() | WorkingDirectory | Gets or sets the name of the working directory used to store data and schema files for the publication. |
| Name | Description | |
|---|---|---|
![]() | CheckValidCreation | Infrastructure. Checks the valid replication creation. (Inherited from ReplicationObject.) |
![]() | CheckValidDefinition | Infrastructure. Indicates whether the definition is valid. (Inherited from ReplicationObject.) |
![]() | CommitPropertyChanges | Sends all the cached property change statements to the instance of Microsoft SQL Server. (Inherited from ReplicationObject.) |
![]() | Create | Registers the Publisher with the specified properties at the Distributor. |
![]() | CreateHeterogeneousLogReaderAgent | Creates a Log Reader Agent job for a non-SQL Server Publisher. |
![]() | Decouple | Decouples the referenced replication object from the server. (Inherited from ReplicationObject.) |
![]() | EnumDistributionPublications | Returns information stored at the Distributor about publications at this Publisher. |
![]() | EnumRegisteredSubscribers | Returns information stored at the Distributor about Subscribers to publications at this Publisher. |
![]() | EnumTransPublications | Returns information at the Distributor about transactional publications at this Publisher. |
![]() | Equals | (Inherited from Object.) |
![]() | Finalize | (Inherited from Object.) |
![]() | GetChangeCommand | Infrastructure. Returns the change command from the replication. (Inherited from ReplicationObject.) |
![]() | GetCreateCommand | Infrastructure. Returns the create command from the replication. (Inherited from ReplicationObject.) |
![]() | GetDropCommand | Infrastructure. Returns the drop command from the replication. (Inherited from ReplicationObject.) |
![]() | GetHashCode | (Inherited from Object.) |
![]() | GetType | (Inherited from Object.) |
![]() | InternalRefresh | Infrastructure. Initiates an internal refresh from the replication. (Inherited from ReplicationObject.) |
![]() | Load | Loads the properties of an existing object from the server. (Inherited from ReplicationObject.) |
![]() | LoadProperties | Loads the properties of an existing object from the server. (Inherited from ReplicationObject.) |
![]() | MemberwiseClone | (Inherited from Object.) |
![]() | Refresh | Reloads the properties of the object. (Inherited from ReplicationObject.) |
![]() | Remove | Removes the registration for this Publisher from the currently connected Distributor. |
![]() | Script | Generates a Transact-SQL script that can be used to install or uninstall the Publisher. |
![]() | ToString | (Inherited from Object.) |
This example shows how a DistributionPublisher object is used to enable publishing.
// Set the server and database names string distributionDbName = "distribution"; string publisherName = publisherInstance; string publicationDbName = "AdventureWorks2012"; DistributionDatabase distributionDb; ReplicationServer distributor; DistributionPublisher publisher; ReplicationDatabase publicationDb; // Create a connection to the server using Windows Authentication. ServerConnection conn = new ServerConnection(publisherName); try { // Connect to the server acting as the Distributor // and local Publisher. conn.Connect(); // Define the distribution database at the Distributor, // but do not create it now. distributionDb = new DistributionDatabase(distributionDbName, conn); distributionDb.MaxDistributionRetention = 96; distributionDb.HistoryRetention = 120; // Set the Distributor properties and install the Distributor. // This also creates the specified distribution database. distributor = new ReplicationServer(conn); distributor.InstallDistributor((string)null, distributionDb); // Set the Publisher properties and install the Publisher. publisher = new DistributionPublisher(publisherName, conn); publisher.DistributionDatabase = distributionDb.Name; publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata"; publisher.PublisherSecurity.WindowsAuthentication = true; publisher.Create(); // Enable AdventureWorks2012 as a publication database. publicationDb = new ReplicationDatabase(publicationDbName, conn); publicationDb.EnabledTransPublishing = true; publicationDb.EnabledMergePublishing = true; } catch (Exception ex) { // Implement appropriate error handling here. throw new ApplicationException("An error occured when installing distribution and publishing.", ex); } finally { conn.Disconnect(); }
' Set the server and database names Dim distributionDbName As String = "distribution" Dim publisherName As String = publisherInstance Dim publicationDbName As String = "AdventureWorks2012" Dim distributionDb As DistributionDatabase Dim distributor As ReplicationServer Dim publisher As DistributionPublisher Dim publicationDb As ReplicationDatabase ' Create a connection to the server using Windows Authentication. Dim conn As ServerConnection = New ServerConnection(publisherName) Try ' Connect to the server acting as the Distributor ' and local Publisher. conn.Connect() ' Define the distribution database at the Distributor, ' but do not create it now. distributionDb = New DistributionDatabase(distributionDbName, conn) distributionDb.MaxDistributionRetention = 96 distributionDb.HistoryRetention = 120 ' Set the Distributor properties and install the Distributor. ' This also creates the specified distribution database. distributor = New ReplicationServer(conn) distributor.InstallDistributor((CType(Nothing, String)), distributionDb) ' Set the Publisher properties and install the Publisher. publisher = New DistributionPublisher(publisherName, conn) publisher.DistributionDatabase = distributionDb.Name publisher.WorkingDirectory = "\\" + publisherName + "\repldata" publisher.PublisherSecurity.WindowsAuthentication = True publisher.Create() ' Enable AdventureWorks2012 as a publication database. publicationDb = New ReplicationDatabase(publicationDbName, conn) publicationDb.EnabledTransPublishing = True publicationDb.EnabledMergePublishing = True Catch ex As Exception ' Implement appropriate error handling here. Throw New ApplicationException("An error occured when installing distribution and publishing.", ex) Finally conn.Disconnect() End Try
This example shows how a DistributionPublisher object is used to disable publishing at 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
