Export (0) Print
Expand All

DbServerSyncProvider Class

Abstracts a generic server synchronization provider that communicates with the server database and shields the synchronization agent from the specific implementation of the database.

System.Object
  Microsoft.Synchronization.SyncProvider
    Microsoft.Synchronization.Data.ServerSyncProvider
      Microsoft.Synchronization.Data.Server.DbServerSyncProvider

Namespace:  Microsoft.Synchronization.Data.Server
Assembly:  Microsoft.Synchronization.Data.Server (in Microsoft.Synchronization.Data.Server.dll)

public class DbServerSyncProvider : ServerSyncProvider, 
	IDisposable

The DbServerSyncProvider type exposes the following members.

  NameDescription
Public methodDbServerSyncProviderInitializes a new instance of the DbServerSyncProvider class.
Top

  NameDescription
Public propertyBatchSizeGets or sets the batch size (in rows) that is used by commands that retrieve changes from the server database.
Public propertyConnectionGets or sets an IDbConnection object that is used to connect to the server database.
Public propertySchemaGets or sets a SyncSchema object that contains information about the table schema on the server.
Public propertySelectClientIdCommandGets or sets an IDbCommand object that contains the query or stored procedure that returns originator IDs from the server database.
Public propertySelectNewAnchorCommandGets or sets an IDbCommand object that contains the query or stored procedure that returns a new anchor value from the server database. The anchor defines the upper bound for the set of changes to be synchronized during the current session.
Public propertySyncAdaptersGets the SyncAdapterCollection that is associated with the DbServerSyncProvider.
Top

  NameDescription
Public methodApplyChangesApplies inserts, updates, and deletes for a synchronization group to the server database. (Overrides ServerSyncProvider.ApplyChanges(SyncGroupMetadata, DataSet, SyncSession).)
Public methodDispose()Releases all resources used by the DbServerSyncProvider. (Overrides ServerSyncProvider.Dispose().)
Protected methodDispose(Boolean)Releases the unmanaged resources used by the DbServerSyncProvider and optionally releases the managed resources.
Public methodEquals (Inherited from Object.)
Protected methodFinalize (Inherited from Object.)
Public methodGetChangesSelects for a table in the server database the inserts, updates, and deletes to apply to the client database for a synchronization group. (Overrides ServerSyncProvider.GetChanges(SyncGroupMetadata, SyncSession).)
Public methodGetHashCode (Inherited from Object.)
Public methodGetSchemaReturns a SyncSchema object that contains the schema for each table specified. (Overrides ServerSyncProvider.GetSchema(Collection<String>, SyncSession).)
Public methodGetServerInfoGets a SyncServerInfo object when give a session parameter. (Overrides ServerSyncProvider.GetServerInfo(SyncSession).)
Public methodGetType (Inherited from Object.)
Protected methodMemberwiseClone (Inherited from Object.)
Protected methodOnApplyChangeFailedRaises the ApplyChangeFailed event.
Protected methodOnApplyingChangesRaises the ApplyingChanges event.
Protected methodOnChangesAppliedRaises the ChangesApplied event.
Protected methodOnChangesSelectedRaises the ChangesSelected event.
Protected methodOnSelectingChangesRaises the SelectingChanges event.
Protected methodOnSyncProgressRaises the SyncProgress event.
Public methodToString (Inherited from Object.)
Top

  NameDescription
Public eventApplyChangeFailedOccurs after a row fails to be applied at the server.
Public eventApplyingChangesOccurs before changes are applied at the server for a synchronization group.
Public eventChangesAppliedOccurs after all changes are applied at the server for a synchronization group.
Public eventChangesSelectedOccurs after all changes to be applied to the client for a synchronization group are selected from the server.
Public eventSelectingChangesOccurs before all changes to be applied to the client for a synchronization group are selected from the server.
Public eventSyncProgressOccurs during the selection and application of changes for a synchronization group at the server.
Top

The principal activities of the server synchronization provider are as follows:

  • Stores information about tables on the server that are enabled for synchronization.

  • Enables applications to retrieve changes that occurred in the server database since the last synchronization.

  • Applies incremental changes to the server database.

  • Detects conflicting changes.

The following code example creates a class that derives from DbServerSyncProvider. The class creates a connection and commands to download changes for snapshot synchronization. To view this code in the context of a complete example, see How to: Download a Snapshot of Data to a Client.

public class SampleServerSyncProvider : DbServerSyncProvider
{
    public SampleServerSyncProvider()
    {
        //Create a connection to the sample server database.
        Utility util = new Utility();
        SqlConnection serverConn = new SqlConnection(Utility.ConnStr_DbServerSync);
        this.Connection = serverConn;

        //Create a SyncAdapter for each table, and then define
        //the command to select rows from the table. With the Snapshot
        //option, you do not download incremental changes. However,
        //you still use the SelectIncrementalInsertsCommand to select
        //the rows to download for each snapshot. The commands include
        //only those columns that you want on the client.

        //Customer table.
        SyncAdapter customerSyncAdapter = new SyncAdapter("Customer");
        SqlCommand customerIncrInserts = new SqlCommand();
        customerIncrInserts.CommandText = 
            "SELECT CustomerId, CustomerName, SalesPerson, CustomerType " +
            "FROM Sales.Customer";
        customerIncrInserts.Connection = serverConn;
        customerSyncAdapter.SelectIncrementalInsertsCommand = customerIncrInserts;
        this.SyncAdapters.Add(customerSyncAdapter);

        //OrderHeader table.
        SyncAdapter orderHeaderSyncAdapter = new SyncAdapter("OrderHeader");
        SqlCommand orderHeaderIncrInserts = new SqlCommand();
        orderHeaderIncrInserts.CommandText = 
            "SELECT OrderId, CustomerId, OrderDate, OrderStatus " +
            "FROM Sales.OrderHeader";
        orderHeaderIncrInserts.Connection = serverConn;
        orderHeaderSyncAdapter.SelectIncrementalInsertsCommand = orderHeaderIncrInserts;
        this.SyncAdapters.Add(orderHeaderSyncAdapter);

        //OrderDetail table.
        SyncAdapter orderDetailSyncAdapter = new SyncAdapter("OrderDetail");
        SqlCommand orderDetailIncrInserts = new SqlCommand();            
        orderDetailIncrInserts.CommandText = 
            "SELECT OrderDetailId, OrderId, Product, Quantity " +
            "FROM Sales.OrderDetail";
        orderDetailIncrInserts.Connection = serverConn;
        orderDetailSyncAdapter.SelectIncrementalInsertsCommand = orderDetailIncrInserts;
        this.SyncAdapters.Add(orderDetailSyncAdapter);
    }
}


Public Class SampleServerSyncProvider
    Inherits DbServerSyncProvider

    Public Sub New()
        'Create a connection to the sample server database.
        Dim util As New Utility()
        Dim serverConn As New SqlConnection(Utility.ConnStr_DbServerSync)
        Me.Connection = serverConn

        'Create a SyncAdapter for each table, and then define
        'the command to select rows from the table. With the Snapshot
        'option, you do not download incremental changes. However,
        'you still use the SelectIncrementalInsertsCommand to select
        'the rows to download for each snapshot. The commands include
        'only those columns that you want on the client.
        'Customer table.
        Dim customerSyncAdapter As New SyncAdapter("Customer")
        Dim customerIncrInserts As New SqlCommand()
        customerIncrInserts.CommandText = _
            "SELECT CustomerId, CustomerName, SalesPerson, CustomerType " _
          & "FROM Sales.Customer"
        customerIncrInserts.Connection = serverConn
        customerSyncAdapter.SelectIncrementalInsertsCommand = customerIncrInserts
        Me.SyncAdapters.Add(customerSyncAdapter)

        'OrderHeader table.
        Dim orderHeaderSyncAdapter As New SyncAdapter("OrderHeader")
        Dim orderHeaderIncrInserts As New SqlCommand()
        orderHeaderIncrInserts.CommandText = _
            "SELECT OrderId, CustomerId, OrderDate, OrderStatus " _
          & "FROM Sales.OrderHeader"
        orderHeaderIncrInserts.Connection = serverConn
        orderHeaderSyncAdapter.SelectIncrementalInsertsCommand = orderHeaderIncrInserts
        Me.SyncAdapters.Add(orderHeaderSyncAdapter)

        'OrderDetail table.
        Dim orderDetailSyncAdapter As New SyncAdapter("OrderDetail")
        Dim orderDetailIncrInserts As New SqlCommand()
        orderDetailIncrInserts.CommandText = _
            "SELECT OrderDetailId, OrderId, Product, Quantity " _
          & "FROM Sales.OrderDetail"
        orderDetailIncrInserts.Connection = serverConn
        orderDetailSyncAdapter.SelectIncrementalInsertsCommand = orderDetailIncrInserts
        Me.SyncAdapters.Add(orderDetailSyncAdapter)

    End Sub 'New
End Class 'SampleServerSyncProvider


Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Show:
© 2015 Microsoft