You can use the SQL Server 2000 Replication ActiveX controls to embed replication functionality inside custom applications. This article demonstrates how to program the SQL Merge control with Microsoft Visual C# .NET.
Step 1
Before you insert the sample code in a Visual C# .NET project, follow these steps:
- Make sure to properly configure the publisher, the distributor, and the subscriber, and make sure that they are all on SQL Server 2000.
- Create a merge publication that is called "SampleMergePublication". The publishing database is Northwind.
Step 2
The following sample code generates a snapshot by using the SQL Merge control. The sample code will create the Northwind_replica subscription database. Make sure the Northwind_replica database does not already exist before you execute the sample code. Finally, the sample code creates a pull subscription in the Northwind_replica database, and then it applies the snapshot at the subscriber.
Inside the Visual C# .NET project, add references to the Microsoft SQL Merge Control 8.0 COM object, and then add the following code:
using System;
using System.Runtime.InteropServices;
using SQLMERGXLib;
namespace SqlRepl
{
//This class demonstrates using the SQL Server Merge Agent replication control.
class MergeApp
{
/* Prior to running this code, replication needs to be setup as follows:
//
// Create a merge publication called "SampleMergePublication" and configure it to allow pull
// subscriptions.
//
// This code will first generate the snapshot. Then the subscription database
// and pull subscription will be created through code. Then the snapshot will be applied at the subscriber using
// the SQLMergeClass object.
//
// You will also need to set a reference to the following COM dll:
// -Microsoft SQL Merge Control 8.0
*/
[STAThread]
static void Main(string[] args)
{
string strPublisher, strDistributor, strSubscriber, strPublisherDatabase, strSubscriberDatabase, strPublication;
strPublisher = "PUBLISHER"; //change to the name of your publisher
strDistributor = "DISTRIBUTOR"; //change to the name of your distributor
strSubscriber = "SUBSCRIBER"; //change to the name of your subscriber
strPublication = "SampleMergePublication";
strPublisherDatabase = "Northwind";
strSubscriberDatabase = "Northwind_replica";
SQLMergeClass oMerge = new SQLMergeClass();
//Set up the Publisher.
oMerge.Publisher = strPublisher;
oMerge.PublisherSecurityMode = SQLMERGXLib.SECURITY_TYPE.NT_AUTHENTICATION;
oMerge.PublisherDatabase = strPublisherDatabase;
oMerge.Publication = strPublication;
//Set up the Distributor.
oMerge.Distributor = strDistributor;
oMerge.DistributorSecurityMode = SQLMERGXLib.SECURITY_TYPE.NT_AUTHENTICATION;
//Set up the Subscriber.
oMerge.Subscriber = strSubscriber;
oMerge.SubscriberDatabase = strSubscriberDatabase;
oMerge.SubscriberSecurityMode = SQLMERGXLib.SECURITY_TYPE.NT_AUTHENTICATION;
//Set up the subscription.
oMerge.SubscriptionType = SQLMERGXLib.SUBSCRIPTION_TYPE.PULL;
oMerge.SynchronizationType = SQLMERGXLib.SYNCHRONIZATION_TYPE.AUTOMATIC;
oMerge.SubscriptionName = "PullMergeSubscription";
//Create the database and subscription.
oMerge.AddSubscription(SQLMERGXLib.DBADDOPTION.CREATE_DATABASE, SQLMERGXLib.SUBSCRIPTION_HOST.NONE);
//Synchronize the subscription.
try
{
Console.WriteLine("Starting synchronization...");
oMerge.Initialize();
oMerge.Run();
oMerge.Terminate();
Console.WriteLine("Synchronization completed.");
}
catch (Exception e)
{
Console.WriteLine(e.StackTrace);
Console.WriteLine(e.Message);
}
}
}
}
For a Microsoft Visual Basic .NET version of this article, see
319647
(http://support.microsoft.com/kb/319647/EN-US/
)
.
For samples that are written in earlier versions of Microsoft Visual Basic and Microsoft Visual C++, refer to the following SQL Server Books Online topics: