TransPublication Class
SQL Server 2008
Represents a transactional publication.
Assembly: Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)
This example creates a transactional publication.
// Set the Publisher, publication database, and publication names. string publicationName = "AdvWorksProductTran"; string publicationDbName = "AdventureWorks"; string publisherName = publisherInstance; ReplicationDatabase publicationDb; TransPublication publication; // Create a connection to the Publisher using Windows Authentication. ServerConnection conn; conn = new ServerConnection(publisherName); try { // Connect to the Publisher. conn.Connect(); // Enable the AdventureWorks database for transactional publishing. publicationDb = new ReplicationDatabase(publicationDbName, conn); // If the database exists and is not already enabled, // enable it for transactional publishing. if (publicationDb.LoadProperties()) { if (!publicationDb.EnabledTransPublishing) { publicationDb.EnabledTransPublishing = true; } // If the Log Reader Agent does not exist, create it. if (!publicationDb.LogReaderAgentExists) { // Specify the Windows account under which the agent job runs. // This account will be used for the local connection to the // Distributor and all agent connections that use Windows Authentication. publicationDb.LogReaderAgentProcessSecurity.Login = winLogin; publicationDb.LogReaderAgentProcessSecurity.Password = winPassword; // Explicitly set authentication mode for the Publisher connection // to the default value of Windows Authentication. publicationDb.LogReaderAgentPublisherSecurity.WindowsAuthentication = true; // Create the Log Reader Agent job. publicationDb.CreateLogReaderAgent(); } } else { throw new ApplicationException(String.Format( "The {0} database does not exist at {1}.", publicationDb, publisherName)); } // Set the required properties for the transactional publication. publication = new TransPublication(); publication.ConnectionContext = conn; publication.Name = publicationName; publication.DatabaseName = publicationDbName; // Specify a transactional publication (the default). publication.Type = PublicationType.Transactional; // Activate the publication so that we can add subscriptions. publication.Status = State.Active; // Enable push and pull subscriptions and independent Distribition Agents. publication.Attributes |= PublicationAttributes.AllowPull; publication.Attributes |= PublicationAttributes.AllowPush; publication.Attributes |= PublicationAttributes.IndependentAgent; // Specify the Windows account under which the Snapshot Agent job runs. // This account will be used for the local connection to the // Distributor and all agent connections that use Windows Authentication. publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin; publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword; // Explicitly set the security mode for the Publisher connection // Windows Authentication (the default). publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = true; if (!publication.IsExistingObject) { // Create the transactional publication. publication.Create(); // Create a Snapshot Agent job for the publication. publication.CreateSnapshotAgent(); } else { throw new ApplicationException(String.Format( "The {0} publication already exists.", publicationName)); } } catch (Exception ex) { // Implement custom application error handling here. throw new ApplicationException(String.Format( "The publication {0} could not be created.", publicationName), ex); } finally { conn.Disconnect(); }
' Set the Publisher, publication database, and publication names. Dim publicationName As String = "AdvWorksProductTran" Dim publicationDbName As String = "AdventureWorks" Dim publisherName As String = publisherInstance Dim publicationDb As ReplicationDatabase Dim publication As TransPublication ' Create a connection to the Publisher using Windows Authentication. Dim conn As ServerConnection conn = New ServerConnection(publisherName) Try ' Connect to the Publisher. conn.Connect() ' Enable the AdventureWorks database for transactional publishing. publicationDb = New ReplicationDatabase(publicationDbName, conn) ' If the database exists and is not already enabled, ' enable it for transactional publishing. If publicationDb.LoadProperties() Then If Not publicationDb.EnabledTransPublishing Then publicationDb.EnabledTransPublishing = True End If ' If the Log Reader Agent does not exist, create it. If Not publicationDb.LogReaderAgentExists Then ' Specify the Windows account under which the agent job runs. ' This account will be used for the local connection to the ' Distributor and all agent connections that use Windows Authentication. publicationDb.LogReaderAgentProcessSecurity.Login = winLogin publicationDb.LogReaderAgentProcessSecurity.Password = winPassword ' Explicitly set authentication mode for the Publisher connection ' to the default value of Windows Authentication. publicationDb.LogReaderAgentPublisherSecurity.WindowsAuthentication = True ' Create the Log Reader Agent job. publicationDb.CreateLogReaderAgent() End If Else Throw New ApplicationException(String.Format( _ "The {0} database does not exist at {1}.", _ publicationDb, publisherName)) End If ' Set the required properties for the transactional publication. publication = New TransPublication() publication.ConnectionContext = conn publication.Name = publicationName publication.DatabaseName = publicationDbName ' Specify a transactional publication (the default). publication.Type = PublicationType.Transactional 'Enable push and pull subscriptions and independent Distribition Agents. publication.Attributes = _ publication.Attributes Or PublicationAttributes.AllowPull publication.Attributes = _ publication.Attributes Or PublicationAttributes.AllowPush publication.Attributes = _ publication.Attributes Or PublicationAttributes.IndependentAgent ' Activate the publication so that we can add subscriptions. publication.Status = State.Active ' Specify the Windows account under which the Snapshot Agent job runs. ' This account will be used for the local connection to the ' Distributor and all agent connections that use Windows Authentication. publication.SnapshotGenerationAgentProcessSecurity.Login = winLogin publication.SnapshotGenerationAgentProcessSecurity.Password = winPassword ' Explicitly set the security mode for the Publisher connection ' Windows Authentication (the default). publication.SnapshotGenerationAgentPublisherSecurity.WindowsAuthentication = True If Not publication.IsExistingObject Then ' Create the transactional publication. publication.Create() ' Create a Snapshot Agent job for the publication. publication.CreateSnapshotAgent() Else Throw New ApplicationException(String.Format( _ "The {0} publication already exists.", publicationName)) End If Catch ex As Exception ' Implement custom application error handling here. Throw New ApplicationException(String.Format( _ "The publication {0} could not be created.", publicationName), ex) Finally conn.Disconnect() End Try
This example deletes a transactional publication.
// Define the Publisher, publication database, // and publication names. string publisherName = publisherInstance; string publicationName = "AdvWorksProductTran"; string publicationDbName = "AdventureWorks"; TransPublication publication; ReplicationDatabase publicationDb; // Create a connection to the Publisher // using Windows Authentication. ServerConnection conn = new ServerConnection(publisherName); try { conn.Connect(); // Set the required properties for the transactional publication. publication = new TransPublication(); publication.ConnectionContext = conn; publication.Name = publicationName; publication.DatabaseName = publicationDbName; // Delete the publication, if it exists and has no subscriptions. if (publication.LoadProperties() && !publication.HasSubscription) { publication.Remove(); } else { // Do something here if the publication does not exist // or has subscriptions. throw new ApplicationException(String.Format( "The publication {0} could not be deleted. " + "Ensure that the publication exists and that all " + "subscriptions have been deleted.", publicationName, publisherName)); } // If no other transactional publications exists, // disable publishing on the database. publicationDb = new ReplicationDatabase(publicationDbName, conn); if (publicationDb.LoadProperties()) { if (publicationDb.TransPublications.Count == 0) { publicationDb.EnabledTransPublishing = false; } } else { // Do something here if the database does not exist. throw new ApplicationException(String.Format( "The database {0} does not exist on {1}.", publicationDbName, publisherName)); } } catch (Exception ex) { // Implement application error handling here. throw new ApplicationException(String.Format( "The publication {0} could not be deleted.", publicationName), ex); } finally { conn.Disconnect(); }
' Define the Publisher, publication database, ' and publication names. Dim publisherName As String = publisherInstance Dim publicationName As String = "AdvWorksProductTran" Dim publicationDbName As String = "AdventureWorks" Dim publication As TransPublication Dim publicationDb As ReplicationDatabase ' Create a connection to the Publisher ' using Windows Authentication. Dim conn As ServerConnection = New ServerConnection(publisherName) Try conn.Connect() ' Set the required properties for the transactional publication. publication = New TransPublication() publication.ConnectionContext = conn publication.Name = publicationName publication.DatabaseName = publicationDbName ' Delete the publication, if it exists and has no subscriptions. If publication.LoadProperties() And Not publication.HasSubscription Then publication.Remove() Else ' Do something here if the publication does not exist ' or has subscriptions. Throw New ApplicationException(String.Format( _ "The publication {0} could not be deleted. " + _ "Ensure that the publication exists and that all " + _ "subscriptions have been deleted.", _ publicationName, publisherName)) End If ' If no other transactional publications exists, ' disable publishing on the database. publicationDb = New ReplicationDatabase(publicationDbName, conn) If publicationDb.LoadProperties() Then If publicationDb.TransPublications.Count = 0 Then publicationDb.EnabledTransPublishing = False End If Else ' Do something here if the database does not exist. Throw New ApplicationException(String.Format( _ "The database {0} does not exist on {1}.", _ publicationDbName, publisherName)) End If Catch ex As Exception ' Implement application error handling here. Throw New ApplicationException(String.Format( _ "The publication {0} could not be deleted.", _ publicationName), ex) Finally conn.Disconnect() End Try
System.Object
Microsoft.SqlServer.Replication.ReplicationObject
Microsoft.SqlServer.Replication.Publication
Microsoft.SqlServer.Replication.TransPublication
Microsoft.SqlServer.Replication.ReplicationObject
Microsoft.SqlServer.Replication.Publication
Microsoft.SqlServer.Replication.TransPublication
