on 2019 Oct 24 4:21 AM
For a some special situation we have to use Mobilink & SQLRemote together in a multi tyer installation:
DB1+DB2 are intended to synchronise the tables (T1, T2, T3) using mobilink (DB1 is cons. and uses mlsrv17, DB2 is remote and uses dbmlsync(version10) ). DB2+DB3 are replicating the tables (T1, T4, T5) using SQLRemote (DB2 is cons. and DB3 is remote, both DB2&DB3 use DBRemote(Version10) )
DB1 is SQL Anywhere 17, DB2&DB3 are SQL Anywhere 10.
I tested the installation and there was no any problem for mobilink to synchronise two databases with different versions, and also it was no problem for the middle database (DB2) to use DBRemote & dbmlsync at the same time.
My only problem is that the tables T2,T3 are replicating from DB2 to DB3 unintendedly!
My question is how can I prevent this to happen?
The first solution for me was to build triggers for tables T2,T3 on DB3 and let the trigger ignore all changes coming from remote users, but this seem to be a big work having that my list of unintended tables is much longer as T2, T3!
Any ideas or experiences?
Request clarification before answering.
Yes, generally the MobiLink client and SQL Remote do both use publications and articles. However, in your case they need to use separate publications for both (so T1 will belong to 2 publications, whereas T2 and T3 only to one and T4 and T5 to a different one), and you will need to specify which publication(s) should be used by MobiLink resp. SQL Remote.
For SQL Remote, you decide which publications are used by specifying the according subscriptions. If you do not create a subscription for a certain publication, SQL Remote will ignore that.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Volker is of course, correct. In your middle tier (which is an ML Client and a SQL Remote consolidated), you will have two publications :
create publication pub_ml ( table t1, table t2, table t3 ); create publication pub_sr ( table t1, table t4, table t5 );
You'll create a synchronization subscription on pub_ml :
create synchronization user ml1; create synchronization subscription to pub_ml for ml1;
You'll create SQL Remote subscriptions on pub_sr :
grant remote to rem1 type file address 'rem1'; create subscription to pub_sr for rem1; start subscription to pub_sr for rem1;
I didn't check syntax on any of the above commands, so let's call it psuedo-code in case I've made a mistake.
Thanks for the explanation. I was just taking the wrong direction of thinking.
But again, having the ability to specify publication name in dbremote.exe (something like -n) would add very great option to SQLRemote. For example, if we need to specify different channels of replication (fast lane, slow lane...), then this is only possible with DBMLSYNC.exe but not with DBREMOTE.exe
having the ability to specify publication name in dbremote.exe (something like -n) would add very great option to SQLRemote
Hm, personally I have never had that need (neither with ML), and I prefer the simple "replicate everything and go"-approach which is inherent to that tool IMHO.
But to understand your requirements w.r.t to "different channels": What exactly would you try to achieve with that? Would you like to be able to replicate data for some tables "as fast as possible" and for other tables "on demand" for the same remote(s), or would you try to replicate with some remotes with a higher priority than with other remotes?
What I need is to have priority among tables. So your first assumption!
Some tables are changing very fast on remotes, and we need to replicate them as fast as possible (fast lane), another tables are not changing so often (slow lane).
This separation is in ML possible, but in SQLRemote NOT!
User | Count |
---|---|
33 | |
21 | |
16 | |
8 | |
7 | |
6 | |
5 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.