Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Đồng bộ hóa cơ sở dữ liệu SQL Server 2008 qua HTTP bằng WCF &Sync Framework

Tôi đã làm như sau để Sync Framework hoạt động bằng WCF với SQL Server 2008

  • Đã bật theo dõi thay đổi trong SQL Server 2008
  • Đã bật theo dõi thay đổi cho các bảng tham gia Đồng bộ hóa
  • Đã thêm một bảng siêu dữ liệu có tên là anchor
  • Đã thêm một bảng để theo dõi các Id khách hàng có tên "hướng dẫn"
  • SqlExpressClientSyncProvider đã qua sử dụng có sẵn từ trang web dự án codeplex của MSF với tư cách là Nhà cung cấp đồng bộ hóa ứng dụng khách
  • Đã sử dụng SqlSyncAdapterBuilder để tạo bộ điều hợp cho các bảng tham gia Đồng bộ hóa

    foreach (var item in anchorTables)
    {
        // Use adapter builder to generate T-SQL for querying change tracking data and CRUD
        SqlSyncAdapterBuilder builder = new SqlSyncAdapterBuilder();
        builder.Connection = new SqlConnection(this.connectionStringFactory.ConnectionString);
        builder.ChangeTrackingType = ChangeTrackingType.SqlServerChangeTracking;
        builder.SyncDirection = SyncDirection.Bidirectional;
        builder.TableName = item.TableName;
        // Get sync adapters from builder
        SyncAdapter clientAdapter = builder.ToSyncAdapter();
        clientAdapter.TableName = item.TableName;
        this.clientSyncProvider.SyncAdapters.Add(clientAdapter);
    }
    
  • Đã thêm lệnh neo

    SqlCommand anchroCommand =
       new SqlCommand { CommandText = "SELECT @" 
          + SyncSession.SyncNewReceivedAnchor 
          + " = change_tracking_current_version()" };
    
    anchroCommand.Parameters.Add("@" 
          + SyncSession.SyncNewReceivedAnchor, SqlDbType.BigInt)
          .Direction = ParameterDirection.Output;
    
    this.clientSyncProvider.SelectNewAnchorCommand = anchroCommand;
    
  • Đã triển khai Dịch vụ WCF bằng cách sử dụng phiên bản DbServerSyncProvider hoạt động như nhà cung cấp đồng bộ hóa Máy chủ. Bạn cũng sẽ tạo bộ điều hợp đồng bộ và đặt lệnh neo như được hiển thị trong bước trước cho nhà cung cấp Máy chủ.

    [ServiceContract]
    public interface ISyncService
    {
        [OperationContract]
        SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession);
        [OperationContract]
        SyncContext GetChanges(SyncGroupMetadata groupMetadata, SyncSession syncSession);
        [OperationContract]
        SyncSchema GetSchema(Collection<string> tableNames, SyncSession syncSession);
        [OperationContract]
        SyncServerInfo GetServerInfo(SyncSession syncSession);
    }
    
  • Đã tạo một lớp proxy triển khai ServerSyncProvider để truy cập dịch vụ WCF

    public class DbServerSyncProviderProxy : ServerSyncProvider
    {
        SyncServiceProxy.SyncServiceClient serviceProxy = new SyncServiceProxy.SyncServiceClient();
        public override SyncContext ApplyChanges(SyncGroupMetadata groupMetadata, DataSet dataSet, SyncSession syncSession)
        {
            return serviceProxy.ApplyChanges(groupMetadata, dataSet, syncSession);
        }
    }
    
  • Đã tạo một phiên bản của SyncAgent và đặt RemoteProvider bằng một phiên bản của lớp proxy được sử dụng để truy cập dịch vụ WCF. LocalProvider được thiết lập với phiên bản của SqlExpressClientSyncProvider
  • Đã thêm bảng và đồng bộ hóa nhóm vào cấu hình SyncAgent
  • SyncAgent.Synchronize ()



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chỉ mục bao gồm và Truy vấn được che trong SQL Server là gì?

  2. Những cột nào thường tạo ra các chỉ mục tốt?

  3. Làm cách nào để viết LINQ's .Skip (1000) .Take (100) trong SQL thuần túy?

  4. Cách khắc phục “Lược đồ phân vùng‘… ’không có bất kỳ nhóm tệp nào được sử dụng tiếp theo” trong SQL Server

  5. SQL Cách cập nhật SUM của cột qua nhóm trong cùng một bảng