TransPullSubscription Constructor ()

 

Creates a new instance of the TransPullSubscription class.

Namespace:   Microsoft.SqlServer.Replication
Assembly:  Microsoft.SqlServer.Rmo (in Microsoft.SqlServer.Rmo.dll)

public TransPullSubscription()

The default constructor initializes any fields to their default values.

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

//Create connections to the Publisher and Subscriber.
ServerConnection subscriberConn = new ServerConnection(subscriberName);
ServerConnection publisherConn = new ServerConnection(publisherName);

// Create the objects that we need.
TransPublication publication;
TransPullSubscription subscription;

try
{
	// Connect to the Publisher and Subscriber.
	subscriberConn.Connect();
             publisherConn.Connect();

	// Ensure that the publication exists and that 
	// it supports pull subscriptions.
	publication = new TransPublication();
	publication.Name = publicationName;
	publication.DatabaseName = publicationDbName;
	publication.ConnectionContext = publisherConn;

	if (publication.IsExistingObject)
	{
		if ((publication.Attributes & PublicationAttributes.AllowPull) == 0)
		{
			publication.Attributes |= PublicationAttributes.AllowPull;
		}

		// Define the pull subscription.
		subscription = new TransPullSubscription();
		subscription.ConnectionContext = subscriberConn;
		subscription.PublisherName = publisherName;
		subscription.PublicationName = publicationName;
		subscription.PublicationDBName = publicationDbName;
		subscription.DatabaseName = subscriptionDbName;

		// Specify the Windows login credentials for the Distribution Agent job.
		subscription.SynchronizationAgentProcessSecurity.Login = winLogin;
		subscription.SynchronizationAgentProcessSecurity.Password = winPassword;

		// Make sure that the agent job for the subscription is created.
		subscription.CreateSyncAgentByDefault = true;

                 // By default, subscriptions to transactional publications are synchronized 
                 // continuously, but in this case we only want to synchronize on demand.
                 subscription.AgentSchedule.FrequencyType = ScheduleFrequencyType.OnDemand;

                 // Create the pull subscription at the Subscriber.
		subscription.Create();

		Boolean registered = false;

		// Verify that the subscription is not already registered.
		foreach (TransSubscription existing
			in publication.EnumSubscriptions())
		{
			if (existing.SubscriberName == subscriberName
				&& existing.SubscriptionDBName == subscriptionDbName)
			{
				registered = true;
			}
		}
		if (!registered)
		{
			// Register the subscription with the Publisher.
			publication.MakePullSubscriptionWellKnown(
				subscriberName, subscriptionDbName,
				SubscriptionSyncType.Automatic,
				TransSubscriberType.ReadOnly);
		}
	}
	else
	{
		// Do something here if the publication does not exist.
		throw new ApplicationException(String.Format(
			"The publication '{0}' does not exist on {1}.",
			publicationName, publisherName));
	}
}
catch (Exception ex)
{
	// Implement the appropriate error handling here.
	throw new ApplicationException(String.Format(
		"The subscription to {0} could not be created.", publicationName), ex);
}
finally
{
	subscriberConn.Disconnect();
	publisherConn.Disconnect();
}
Return to top
Show: