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.
Inheritance Hierarchy
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)
Syntax
'Declaration
Public Class DbServerSyncProvider _
Inherits ServerSyncProvider _
Implements IDisposable
'Usage
Dim instance As DbServerSyncProvider
public class DbServerSyncProvider : ServerSyncProvider,
IDisposable
public ref class DbServerSyncProvider : public ServerSyncProvider,
IDisposable
type DbServerSyncProvider =
class
inherit ServerSyncProvider
interface IDisposable
end
public class DbServerSyncProvider extends ServerSyncProvider implements IDisposable
The DbServerSyncProvider type exposes the following members.
Constructors
Name | Description | |
---|---|---|
DbServerSyncProvider | Initializes a new instance of the DbServerSyncProvider class. |
Top
Properties
Name | Description | |
---|---|---|
BatchSize | Gets or sets the batch size (in rows) that is used by commands that retrieve changes from the server database. | |
Connection | Gets or sets an IDbConnection object that is used to connect to the server database. | |
Schema | Gets or sets a SyncSchema object that contains information about the table schema on the server. | |
SelectClientIdCommand | Gets or sets an IDbCommand object that contains the query or stored procedure that returns originator IDs from the server database. | |
SelectNewAnchorCommand | Gets 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. | |
SyncAdapters | Gets the SyncAdapterCollection that is associated with the DbServerSyncProvider. |
Top
Methods
Name | Description | |
---|---|---|
ApplyChanges | Applies inserts, updates, and deletes for a synchronization group to the server database. (Overrides ServerSyncProvider.ApplyChanges(SyncGroupMetadata, DataSet, SyncSession).) | |
Dispose() | Releases all resources used by the DbServerSyncProvider. (Overrides ServerSyncProvider.Dispose().) | |
Dispose(Boolean) | Releases the unmanaged resources used by the DbServerSyncProvider and optionally releases the managed resources. | |
Equals | (Inherited from Object.) | |
Finalize | (Inherited from Object.) | |
GetChanges | Selects 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).) | |
GetHashCode | (Inherited from Object.) | |
GetSchema | Returns a SyncSchema object that contains the schema for each table specified. (Overrides ServerSyncProvider.GetSchema(Collection<String>, SyncSession).) | |
GetServerInfo | Gets a SyncServerInfo object when give a session parameter. (Overrides ServerSyncProvider.GetServerInfo(SyncSession).) | |
GetType | (Inherited from Object.) | |
MemberwiseClone | (Inherited from Object.) | |
OnApplyChangeFailed | Raises the ApplyChangeFailed event. | |
OnApplyingChanges | Raises the ApplyingChanges event. | |
OnChangesApplied | Raises the ChangesApplied event. | |
OnChangesSelected | Raises the ChangesSelected event. | |
OnSelectingChanges | Raises the SelectingChanges event. | |
OnSyncProgress | Raises the SyncProgress event. | |
ToString | (Inherited from Object.) |
Top
Events
Name | Description | |
---|---|---|
ApplyChangeFailed | Occurs after a row fails to be applied at the server. | |
ApplyingChanges | Occurs before changes are applied at the server for a synchronization group. | |
ChangesApplied | Occurs after all changes are applied at the server for a synchronization group. | |
ChangesSelected | Occurs after all changes to be applied to the client for a synchronization group are selected from the server. | |
SelectingChanges | Occurs before all changes to be applied to the client for a synchronization group are selected from the server. | |
SyncProgress | Occurs during the selection and application of changes for a synchronization group at the server. |
Top
Remarks
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.
Examples
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
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.