Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

WCF और सिंक फ्रेमवर्क का उपयोग करके HTTP पर SQL Server 2008 डेटाबेस को सिंक करना

मैंने SQL सर्वर 2008 के साथ WCF का उपयोग करके सिंक फ्रेमवर्क को काम करने के लिए निम्नलिखित किया

  • एसक्यूएल सर्वर 2008 में सक्षम परिवर्तन ट्रैकिंग
  • सिंक में भाग लेने वाली तालिकाओं के लिए सक्षम परिवर्तन ट्रैकिंग
  • एंकर नामक मेटाडेटा तालिका जोड़ी गई
  • "guid" नामक क्लाइंट Id को ट्रैक करने के लिए एक तालिका जोड़ी गई
  • MSF के कोडप्लेक्स प्रोजेक्ट साइट से क्लाइंट सिंक प्रदाता के रूप में उपलब्ध SqlExpressClientSyncProvider का उपयोग किया गया
  • सिंक में भाग लेने वाली तालिकाओं के लिए एडेप्टर बनाने के लिए SqlSyncAdapterBuilder का उपयोग किया

    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);
    }
    
  • एंकर कमांड जोड़े गए

    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;
    
  • सर्वर सिंक प्रदाता के रूप में कार्य करने वाले DbServerSyncProvider के उदाहरण का उपयोग करके WCF सेवा को कार्यान्वित किया। आपके पास सिंक एडेप्टर उत्पन्न होंगे और सर्वर प्रदाता के लिए भी पिछले चरण में दिखाए गए अनुसार एंकर कमांड सेट करेंगे।

    [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);
    }
    
  • WCF सेवा तक पहुँचने के लिए ServerSyncProvider को लागू करने वाला एक प्रॉक्सी वर्ग बनाया गया

    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);
        }
    }
    
  • सिंकएजेंट का एक उदाहरण बनाया और रिमोटप्रोवाइडर को प्रॉक्सी क्लास के उदाहरण के साथ सेट किया जिसका उपयोग डब्ल्यूसीएफ सेवा तक पहुंचने के लिए किया जाता है। LocalProvider को SqlExpressClientSyncProvider के उदाहरण के साथ सेट किया गया है
  • सिंकएजेंट कॉन्फ़िगरेशन में टेबल और सिंक समूहों को जोड़ा
  • 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. SQL सर्वर:क्रॉस जॉइन और फुल आउटर जॉइन में क्या अंतर है?

  2. एसक्यूएल प्रति घंटा कुल ऑर्डर की तुलना करें और मौजूदा स्टॉक को हटाना संभव है?

  3. SQL सर्वर में डेटाटाइम को M/D/YYYY के रूप में कैसे प्रारूपित करें?

  4. SQL सर्वर 2019 में ट्रिगर इवेंट प्रकारों की श्रेणीबद्ध सूची

  5. लिंक क्वेरी अपेक्षित व्यवहार नहीं कर रही है