+ All Categories
Home > Documents > Migrating Your SQL Remote Environment to Mobilink

Migrating Your SQL Remote Environment to Mobilink

Date post: 01-Nov-2014
Category:
Upload: databaseguys
View: 1,371 times
Download: 2 times
Share this document with a friend
Description:
 
Popular Tags:
59
SQL924: Migrating Your SQL Remote Environment to Mobilink Reg Domaratzki Sustaining Engineering [email protected] August 15-19, 2004
Transcript
Page 1: Migrating Your SQL Remote Environment to Mobilink

SQL924: Migrating Your SQL Remote Environment to Mobilink

Reg DomaratzkiSustaining Engineering

[email protected] 15-19, 2004

Page 2: Migrating Your SQL Remote Environment to Mobilink

2

Assumptions MobiLink Overview Why Migrate? Changes on the Remote Changes at the Consolidated Database

Outline

Page 3: Migrating Your SQL Remote Environment to Mobilink

3

My Foot

I turned my ankle, and the muscle that connects the fifth metatarsal (bone 12) to the cuboid (bone 7) was stronger than the bone

The fifth metatarsal broke just above the connection to the cuboid

Yes, it hurts

Page 4: Migrating Your SQL Remote Environment to Mobilink

4

Assumptions

Working knowledge of SQL Remote, but not necessarily MobiLink

SQL Remote concepts I’ll assume you understand Consolidated versus Remote Database Publications, remote users and subscriptions Subscribe by Columns Default Conflict Resolution

This talks deals primarily with migrating SQL Remote for ASE to using MobiLink with an ASE Consolidated Database

dbremote, ssremote and SQL Remote

Page 5: Migrating Your SQL Remote Environment to Mobilink

5

The Enterprise. Unwired.

Page 6: Migrating Your SQL Remote Environment to Mobilink

6

The Enterprise. Unwired.

UnwirePeople

UnwireInformation

ManageInformation

Sybase Workspace

Industry and Cross Platform Solutions

• Adaptive Server Enterprise

• Adaptive Server Anywhere

• Sybase IQ

• Dynamic Archive

• Dynamic ODS

• Replication Server

• OpenSwitch

• Mirror Activator

• PowerDesigner

• Connectivity Options

• EAServer

• Industry Warehouse Studio

• Adaptive Server Enterprise

• Adaptive Server Anywhere

• Sybase IQ

• Dynamic Archive

• Dynamic ODS

• Replication Server

• OpenSwitch

• Mirror Activator

• PowerDesigner

• Connectivity Options

• EAServer

• Industry Warehouse Studio

• Unwired Accelerator

• Unwired Orchestrator

• Unwired Toolkit

• Enterprise Portal

• Real Time Data Services

• Unwired Accelerator

• Unwired Orchestrator

• Unwired Toolkit

• Enterprise Portal

• Real Time Data Services

• SQL Anywhere Studio

• M-Business Anywhere

• Pylon Family (Mobile Email)

• Mobile Sales

• XcelleNet Frontline Solutions

• PocketBuilder

• PowerBuilder Family

• AvantGo

• SQL Anywhere Studio

• M-Business Anywhere

• Pylon Family (Mobile Email)

• Mobile Sales

• XcelleNet Frontline Solutions

• PocketBuilder

• PowerBuilder Family

• AvantGo

Page 7: Migrating Your SQL Remote Environment to Mobilink

7

MobiLink Overview

C onsolidatedD B

M obiL ink

R em ote ASAD atabase

O D BC

dbm lsync

1. U pload

2. D ow nload

3. Ack D ow nload

Page 8: Migrating Your SQL Remote Environment to Mobilink

8

MobiLink Overview

Scripts define actions performed at the consolidated database at each stage or event during synchronization begin_connection for each synchronization:

– begin_synchronization

– receive and apply upload stream

– prepare and send download stream

– end_synchronization end_connection

Page 9: Migrating Your SQL Remote Environment to Mobilink

9

MobiLink Overview

Scripts are either connection level scripts or table level scripts Events occur for each synchronization, and events occur for

each table that is being synchronized The scripts determine how data is proceeded in the upload

stream and what data gathered to be placed in the download stream

Page 10: Migrating Your SQL Remote Environment to Mobilink

10

MobiLink Overview

No message system, direct connection to MobiLink, which is connected to the consolidated database using ODBC

The connection can use a variety of different communication streams including TCP/IP, HTTP, HTTPS, Serial, HotSync or ActiveSync

The remote sends changes up the consolidated and receives changes from the consolidated in the same synchronization session

You define synchronization scripts that define how MobiLink will handle the data that is uploaded by the remote database, and what data needs to be downloaded to the remote database

MobiLink does NOT scan the log file on the consolidated database The ASA MobiLink client at the remote database (dbmlsync.exe) does scan

the remote log file to determine what data to send to the consolidated database

The download script you write for a given table returns a result set. It is this result set that is sent down to the remote

Page 11: Migrating Your SQL Remote Environment to Mobilink

11

Assumptions MobiLink Overview Why Migrate? Changes on the Remote Changes at the Consolidated Database

Outline

Page 12: Migrating Your SQL Remote Environment to Mobilink

12

Why Migrate?

There is NO need to migrate a system that is in production and meets all your business needs

If it isn’t broken, there’s no need to fix it

There are many things that MobiLink can offer that SQL Remote does not

Any ODBC-Compliant consolidated database– The currently supported consolidated database are ASA, ASE, MS SQL

Server, Oracle and DB2 Can synchronize to an UltraLite application More flexibility during upload and download of data Less data latency in a MobiLink environment Ability to easily encrypt the communication between remote and consolidated

databases using 128-bit encryption Server Initiated Synchronization

Page 13: Migrating Your SQL Remote Environment to Mobilink

13

Why Migrate?

Sybase and iAnywhere Solutions provides three different technologies that allow you to move data from an ASE database to an ASA database Replication Server : Connection Based MobiLink : Session Based SQL Remote for ASE : Message Based

For high-speed two-way replication between always connected databases with low latency demands, Replication Server is the obvious choice

In the disconnect environment, MobiLink and SQL Remote for ASE share a very similar solution space

Page 14: Migrating Your SQL Remote Environment to Mobilink

14

Why Migrate?

With the upcoming Jasper release of SQL Anywhere Studio, iAnywhere Solutions has decided to announce the end of life for SQL Remote for ASE

The migration path for current SQL Remote for ASE users is to use MobiLink instead of SQL Remote for ASE

For the few people using SQL Remote for ASE to replicate between two ASE databases, the migration path is to use the new SQL Replicator that shipped with ASE v12.5.1

Please note that the end of life notification for SQL Remote for ASE in no way affects the status of SQL Remote for ASA

SQL Remote replication between ASA databases continues to be a strong and viable product in SQL Anywhere Studio package

Page 15: Migrating Your SQL Remote Environment to Mobilink

15

Migration Goals

Little or no impact on end users Remote users should not know that anything has changed No training costs associated with migration for end users

Gradual migration Avoid a situation where current users cannot access new data until

they upgrade It is unreasonable to think that everyone will upgrade at the same

point

No lose of current functionality A migration path that limits functionality is not acceptable The new system should be able to do everything the old system

could, and hopefully more

Page 16: Migrating Your SQL Remote Environment to Mobilink

16

Assumptions MobiLink Overview Why Migrate? Changes on the Remote

Migration Strategies for Remote Users Differences on the Remote Migration Steps on the Remote Changes to the Remote Application

Changes at the Consolidated Database

Outline

Page 17: Migrating Your SQL Remote Environment to Mobilink

17

Migration Strategies for Remote Users

There should be no need to deploy a new database to the remote user when the switch is made from using SQL Remote to MobiLink

It is possible that new ASA software may need to be deployed if the dbmlsync.exe executable does not already exist on the remote database As soon as you start talking about sending new software to the

remote users, you may also want to consider whether you want to take this opportunity to upgrade to a more recent version of ASA

The only new ASA files that need to be deployed are dbmlsync.exe and the associated stream DLL (i.e. dbmlsock9.dll or dbmlhttp9.dll)

Page 18: Migrating Your SQL Remote Environment to Mobilink

18

Differences on the Remote

Both SQL Remote and ASA MobiLink clients make use of a publication to determine which data needs to be sent to the consolidated database The same publication that you defined for SQL Remote at the remote

database can also be used for ASA MobiLink Clients

SQL Remote clients define a consolidated user on the remote database, and subscribes the consolidated user to a publication An ASA MobiLink client defines a Synchronization User and you

define a Synchronization Subscription to link a Synchronization User to a Publication

Page 19: Migrating Your SQL Remote Environment to Mobilink

19

Differences on the Remote

Message system parameters are defined on the remote database so that SQL Remote knows where and how messages are written to shared message system An ASA MobiLink client connects directly to the MobiLink server, so

instead of specifying the location of the message system, you specify the communication stream type you are using and the location of the MobiLink server

This can be done when defining either the Synchronization User or when defining the Synchronization Subscription

Page 20: Migrating Your SQL Remote Environment to Mobilink

20

Differences on the Remote

SQL Remote :

CREATE PUBLICATION p1 ( TABLE t1 );GRANT PUBLISH to u1;CREATE REMOTE MESSAGE TYPE ‘file’ ADDRESS ‘u1’;

GRANT CONSOLIDATED TO cons TYPE file ADDRESS ‘cons’;

CREATE SUBSCRIPTION TO cons FOR p1;SET REMOTE file OPTION “public”.”root_directory” = ‘r:\\msgs’;

Page 21: Migrating Your SQL Remote Environment to Mobilink

21

Differences on the Remote

ASA MobiLink Client

CREATE PUBLICATION p1 ( TABLE t1 );

CREATE SYNCHRONIZATION USER u1;

CREATE SYNCHRONIZATION SUBSCRIPTION

FOR u1 TO p1 TYPE ‘TCPIP’

ADDRESS ‘host=10.2.3.1;port=600’

OPTION ‘sv=v1’;

Page 22: Migrating Your SQL Remote Environment to Mobilink

22

Migration Steps on the Remote

Run dbremote on the remote to send any outstanding changes to the consolidated database

This will also pick up any changes already sent from the consolidated and apply them to the remote database

Drop the consolidated user No more SQL Remote messages can now be received or applied by this

remote

Create a new Synchronization User and Subscription All new changes made on the remote database will now be synchronized

using MobiLink instead of SQL Remote Use the CURRENT PUBLISHER of the remote database for the name of the

Synchronization User

Run dbmlsync and perform your first synchronization

Page 23: Migrating Your SQL Remote Environment to Mobilink

23

Possible Problems

If the last messages that are sent by the SQL Remote are lost, the guaranteed message delivery system can no longer be used, since the consolidated user was dropped To get around this, you could choose only to drop the consolidated

user if the log_sent value in the SYS.SYSREMOTEUSER table for the consolidated user was equal to the confirmed_received value

– You could run dbremote in receive only mode after sending message and before dropping your consolidated user until log_sent was equal to confirmed_received

– Only a viable option if the send frequency on the consolidated is short This would guarantee that all messages sent had been received and

applied on the consolidated database

Page 24: Migrating Your SQL Remote Environment to Mobilink

24

Possible Problems

It’s possible that between running dbremote to receive your final messages and before your first dbmlsync run, that SQL Remote on the consolidated could generate a message for the remote, which would never be applied This entire process will likely be automated in a batch file, so the

chance is slim, but not zero The chances of this occurring would be higher if the SQL Remote

send frequency on the consolidated database was very small Those paranoid about this could increase the send frequency on the

consolidated to one hour, which would almost completely eliminate the chance of the problem occurring

Page 25: Migrating Your SQL Remote Environment to Mobilink

25

Possible Problems

Those who were paying attention may have noticed that I presented two possible problems, and the solution to each problem was to increase or decrease the send frequency Obviously, both cannot be done

The best way to guarantee that NO data is lost is to extract a new remote database for the user This talks attempts to give you an alternative, that has a small

chance of data being lost, but with very little impact to end users and very low administration costs

Page 26: Migrating Your SQL Remote Environment to Mobilink

26

Changes to the Remote Application

Depending on how you were running dbremote on the remote clients, you may need to change the application that ran dbremote to now run dbmlsync instead If dbremote were run as a service, and new service would have to be

defined that ran dbmlsync instead of dbremote If users clicked on a batch file, the batch file would need to be

changed If you were using the DBTOOLS API to call dbremote, you would

need to change your code to now call DBSynchronizeLog(), and define a new structure to pass into DBSynchronizeLog()

If your application spawned an external process (I.e. dbremote) it would now spawn dbmlsync

Page 27: Migrating Your SQL Remote Environment to Mobilink

27

Changes to the Remote Application

If you are making changes to your application, you should note that the DBMLSync Integration Component can be used to launch the synchronization process The DBMLSync Integration Component is an ActiveX plug-in that can

be imported into Visual Basic, PowerBuilder, Delphi, or any other application development tool that can utilize an ActiveX component

– Note that there are third-party tools that allow you to import an ActiveX component into the .NET Compact Framework programming environment

There is both a visual and non-visual version of the DBMLSync Integration Component

– The visual component will bring up a dialog box very similar to the dbmlsync executable and allows you to set the inputs to the component

– The non-visual component requires you to do more programming work, but gives you access to much more customization, including access to every row being uploaded and downloaded during synchronization

Page 28: Migrating Your SQL Remote Environment to Mobilink

28

Assumptions MobiLink Overview Why Migrate? Changes on the Remote Changes at the Consolidated Database

Setting up the Consolidated Database Generating Upload Scripts Generating Download Scripts Downloading Deletes Territory Re-alignment Conflict Resolution First Synchronizations

Outline

Page 29: Migrating Your SQL Remote Environment to Mobilink

29

Setting Up the Consolidated for MobiLink

In the %ASANY%\MobiLink\setup directory, a file named syncase125.sql exists that must be run against the consolidated database You should modify the script and add a “use db_name”

command at the beginning to ensure the right database is modified

You should run this script connected as the same user that MobiLink will connect with

– This user will need select, insert, update, and delete permissions on all tables involved in synchronization

Page 30: Migrating Your SQL Remote Environment to Mobilink

30

Setting Up the Consolidated for MobiLink

You should create a DSN that will be used by MobiLink to connect to the consolidated database Not all ODBC drivers are created equal Be sure to read over the Recommended ODBC Drivers for MobiLink

web page at the iAnywhere Solutions web site before creating your DSN

http://www.ianywhere.com/developer/technotes/odbc_mobilink.html The SQL Anywhere Studio install proceed will install iAnywhere

branded DataDirect OBDC drivers for most supported consolidated databases

– These drivers are tested prior to release and we would almost always recommend using these drivers over any other ODBC driver

Page 31: Migrating Your SQL Remote Environment to Mobilink

31

Generating Compatible Upload Scripts

With SQL Remote, the messages that are generated include actual SQL statements that are applied to the consolidated database The upload stream that is generated by dbmlsync does not include

SQL statements, but instead includes the data in rows that were modified, and the type of modification that was made (insert, update or delete)

You must define upload scripts that are used to determine what actions are taken for the data being passed up in the upload stream

Page 32: Migrating Your SQL Remote Environment to Mobilink

32

Example Schema

Assume the following table structure exists at both the remote and the consolidated

CREATE TABLE t1 (

PKEY INTEGER PRIMARY KEY,

C1 INTEGER,

C2 VARCHAR(100),

C3 NUMERIC(10,2)

)

go

Page 33: Migrating Your SQL Remote Environment to Mobilink

33

Example Upload Scripts

The data that is passed up in the upload stream will be passed to the upload scripts as parameters and are represented with ? in the scripts

Upload_Insert Script :insert into t1 (pkey,c1,c2,c3) values ( ?, ?, ?, ? );

Upload_Update Script :update t1 set c1 = ?, c2 = ?, c3 = ? where pkey = ?;

Upload_Delete Script :delete from t1 where pkey = ?;

There are ways to automatically generate default scripts, which are usually acceptable for upload scripts

Page 34: Migrating Your SQL Remote Environment to Mobilink

34

Defining Your Synchronization Scripts

Synchronization scripts can either be defined using Sybase Central, or by executing stored procedures created by the syncase125.sql setup script :

exec ml_add_table_script ‘v1’, ‘t1’, ‘Upload_Insert’, ‘insert into t1 (pkey,c1,c2,c3) values ( ?, ?, ?, ? )‘

go

exec ml_add_table_script ‘v1’, ‘t1’, ‘Upload_Update’, ‘update t1 set c1 = ?, c2 = ?, c3 = ? where pkey = ?’

go

exec ml_add_table_script ‘v1’, ‘t1’, ‘Upload_Delete’, ‘delete from t1 where pkey = ?’

go

Page 35: Migrating Your SQL Remote Environment to Mobilink

35

Generating Compatible Download Scripts

Your download scripts determine what data to send down to the remote users

The simplest download script is simply a select statement that sends all rows down to every remote user select pkey,c1,c2,c3 from t1

exec ml_add_table_script ‘v1’, ‘t1’, ‘download_cursor’, ‘select pkey,c1,c2,c3 from t1‘

go

The problem with the above download_cursor is that every row is sent to every remote user on each synchronization, not just rows that were modified since the last download

Page 36: Migrating Your SQL Remote Environment to Mobilink

36

Filtering Out Previously Downloaded Rows

There are two other pieces of information that are included in the upload stream in each synchronization request from the remote The last time the user successfully downloaded data The name of the synchronization user

You can use the last successful download time to ensure that only modified rows are sent down to the remote for each synchronization

Page 37: Migrating Your SQL Remote Environment to Mobilink

37

Filtering Out Previously Downloaded Rows

You need to add a last_modified column of type datetime to each synchronizing table so that rows aren’t downloaded each time Ensure that the column has a DEFAULT value, which is defined as

the current time

ALTER TABLE t1 ADD last_modified datetime default getdate()

go

You should set the initial value for this column as ‘1900-01-01 00:01:00’ for all rows

Page 38: Migrating Your SQL Remote Environment to Mobilink

38

Filtering out Previously Downloaded Rows

You’ll also need to add a update trigger to the table to ensure that the last_modified column is updated each time the row is modified

CREATE TRIGGER au_t1 ON t1 FOR UPDATE

AS

BEGIN

UPDATE t1

SET last_modified = getdate()

WHERE pkey IN ( SELECT pkey FROM inserted )

END

go

Page 39: Migrating Your SQL Remote Environment to Mobilink

39

Filtering out Previously Downloaded Rows

You can now re-write your download_cursor to only download rows since the last successful synchronization

exec ml_add_table_script ‘v1’, ‘t1’, ‘download_cursor’, ‘select pkey,c1,c2,c3 from t1 where last_modified >= ?‘

go

Page 40: Migrating Your SQL Remote Environment to Mobilink

40

Filtering Out Previously Downloaded Rows

It’s important to note that the last_modified column ONLY exists at the consolidated, and is NOT synchronized down to the remote

The schema may have changed on the consolidated, but not on the remote

Also note that you may now need to modify the publication definition on the consolidated database for current SQL Remote users Since all columns are no longer being replicated, it’s now necessary

to include the list of columns that are being replicated to SQL Remote users.

Page 41: Migrating Your SQL Remote Environment to Mobilink

41

Filtering Out Previously Downloaded Rows

In some situations, you cannot modify the base table because of the way existing applications access the database

In this scenario, instead of modifying the base table, you can add a shadow table that stored the last download time

CREATE TABLE t1_st ( pkey integer primary key, last_modified datetime default getdate())go

This table should be populated with rows and have last_modified values set to ‘1900-01-01 00:01:00’

Page 42: Migrating Your SQL Remote Environment to Mobilink

42

Filtering Out Previously Downloaded Rows

Three triggers would need to be defined to track changes on the base table if you are using shadow tables

create trigger ai_t1 on t1 for insert as begin insert into t1_st select pkey,getdate() from inserted endcreate trigger au_t1 on t1 for update as begin update t1_st set last_modified = getdate() where pkey in ( select pkey from inserted ) endcreate trigger ad_t1 on t1 for delete as begin delete from t1_st where pkey in ( select pkey from deleted ) endgo

Page 43: Migrating Your SQL Remote Environment to Mobilink

43

Filtering Out Previously Downloaded Rows

When using shadow tables, the download_cursor would now have to join two tables to filter out rows that have been previously downloaded

exec ml_add_table_script ‘v1’, ‘t1’, ‘download_cursor’,

‘select pkey,c1,c2,c3 from t1,t1_st

where t1.pkey = t1_st.pkey

and t1_st.last_modified >= ?‘

go

Page 44: Migrating Your SQL Remote Environment to Mobilink

44

Partitioning Rows by Remote User

With SQL Remote, on the consolidated database, you could partition rows by remote user by specifying a subscribe by column in the publication definition on the consolidated

CREATE TABLE t2 (

pkey integer primary key,

data varchar(100),

rem_user varchar(128) NOT NULL,

last_modified datetime default getdate()

)

go

sp_create_publication p1

sp_add_remote_table t2

sp_add_article p1, t2, NULL, rem_user

sp_add_article_col p1, t2, pkey

sp_add_article_col p1, t2, data

sp_add_article_col p1, t2, rem_user

go

Page 45: Migrating Your SQL Remote Environment to Mobilink

45

Partitioning Rows by Remote User

With MobiLink, because the name of the MobiLink user is passed up in the upload stream, this value is passed into most synchronization scripts, including the download_cursor

exec ml_add_table_script ‘v1’, ‘t2’, ‘download_cursor’, ‘select pkey,c1,c2,c3 from t2 where last_modified >= ? and rem_user = ?‘

go

With the above download_cursor, only rows meant for a given remote user that have been modified since the download will be synchronized to the remote database, just like SQL Remote

Note that if you only want to use the ML User paramter, because it’s the second parameter, there must be TWO question marks in your script

exec ml_add_table_script ‘v1’, ‘t2’, ‘download_cursor’, ‘select pkey,c1,c2,c3 fom t2 where ? Is not null and rem_user = ?’

go

Page 46: Migrating Your SQL Remote Environment to Mobilink

46

Downloading Deletes

Since MobiLink does not scan the transaction log of the consolidated database, and since downloaded data is based on a SQL statement, another mechanism was needed if you wanted to be able to send deletes to the remote databases in the download stream

Another download cursor called the download_delete_cursor is used to track which rows should be deleted from the remote database

A table we refer to as a “Shadow Table” must be maintained to track which rows should be deleted on the remote database

Page 47: Migrating Your SQL Remote Environment to Mobilink

47

Downloading Deletes

Using the same table t2 from the previous slides, we’d create a table called t2_delCREATE TABLE t2_del ( pkey integer primary key,

del_time datetime default getdate())go

Note that if you used a shadow table for tracking the last_modified value, you could simply add the del_time column to this table instead of having two separate tables

Page 48: Migrating Your SQL Remote Environment to Mobilink

48

Downloading Deletes

We would also define a delete trigger on t2 that inserted a row into t2_del each time a row was deleted, that tracked the time the row was deleted

create trigger ad_t2 on t2 for delete as

begin

insert into t2 select pkey,getdate() from deleted

end

Page 49: Migrating Your SQL Remote Environment to Mobilink

49

Downloading Deletes

This now allows us to define our download_delete_cursor for table t2

exec ml_add_table_script ‘v1’, ‘t2’, ‘download_delete_cursor’,

‘select pkey from t2_del where del_time >= ?‘

go

Note that allowing deletes on shared rows at the remote databases introduces the same possible RI problems that exist in SQL Remote

Page 50: Migrating Your SQL Remote Environment to Mobilink

50

Territory Re-alignment

Territory re-alignment for SQL Remote for ASE is done by maintaining another subscribe by column on the child table that is maintained using triggers on the parent table

Since all the gear is already in place to maintain the subscribe by column on the child table, the territory re-alignment problem is already solved for MobiLink as well

It’s simply a matter of adding a where clause on the download_cursor that includes the subscribe by column that is being maintained on the consolidated

Page 51: Migrating Your SQL Remote Environment to Mobilink

51

Generating Conflict Resolution Scripts

To define conflict resolution scripts for SQL Remote for ASE, when adding the table into the list of replicating tables, you would also specify a resolve_procedure, an old_row table and a new_row table

In MobiLink, you first define a upload_fetch event This event fetches the current state of the row being updated, and compares

the values to the old row values that were passed up in the upload stream

If the upload_fetch results do not match the old row values passed up in the upload stream, then the following three table events are fired

upload_new_row_insert upload_old_row_insert resolve_conflict

Page 52: Migrating Your SQL Remote Environment to Mobilink

52

Generating Compatible Conflict Resolution Scripts

The three events that fire are incredibly similar to the algorithm used by SQL Remote for ASE Your upload_new_row_insert event will insert the new value of the

row into a temporary table Your upload_old_row_insert event will insert the old value of the row

into a temporary table Your resolve_conflict event will call the stored procedure that you

have already written

All the logic has already been written if you have defined conflict resolution for SQL Remote for ASE, so writing compatible conflict resolution scripts for MobiLink will be trivial

Page 53: Migrating Your SQL Remote Environment to Mobilink

53

First Synchronization From Migrated Remote

When we discussed migrating the remote databases, we glossed over some important details about what was done on the consolidated database during the first synchronization to ensure that the next download that came from MobiLink did not include all the data that had previously been downloaded through SQL Remote

When a remote synchronizes for the first time, the last_download value that is passed up is a value of “1900-01-01 00:00:00”

We can use this fact to recognize that this is a first synchronization and to take some additional steps

Page 54: Migrating Your SQL Remote Environment to Mobilink

54

First Synchronization From Migrated Remote

We’ll define a modify_last_download_timestamp event that will do the following : Check and see if the last_download values is Jan 1, 1900 If yes, then check and see if the ml_username passed up is

also a username that exists in the sr_remoteuser table If yes, then get the value of the time_sent column from the

sr_remoteuser table for this user– This represents the time the last SQL Remote message was sent

to this user Modify the last_download value passed in (Jan 1, 1900) to the

time from the sr_remoteuser table Remove the SQL Remote user from the sr_remoteuser table

so no more SQL Remote messages are sent to this user

Page 55: Migrating Your SQL Remote Environment to Mobilink

55

First Synch From New MobiLink Client

The initial synchronization from a new MobiLink client will have a last_download value of Jan 1, 1900 but will the username will NOT exist in the sr_remoteuser table

In this case, you do NOT modify the last_download timestamp in the modify_last_download_timestamp event

Page 56: Migrating Your SQL Remote Environment to Mobilink

56

First Synch From New MobiLink Client

Because the initial values of the new last_modified columns were set to ‘1900-01-01 00:01:00’, all rows will be downloaded to the new MobiLink client

The reason that ‘1900-01-01 00:01:00’ was chosen was because it was greater than ‘1900-01-01 00:00:00’, but guaranteed to be less than the minimum time_sent value in the sr_remoteuser table

Page 57: Migrating Your SQL Remote Environment to Mobilink

57

Migrating from SSRemote to MobiLink

• With years of experience iAnywhere Professional Services can deliver tailored services to ensure a successful migration:

• Analysis and review of replication rules• Design and architect a MobiLink solution equivalent to or enhance your

current SSRemote solution • Develop and test MobiLink scripts• Provide a customized knowledge transfer

• Deliver MobiLink Synchronization training

For more information contact your local iAnywhere Solutions sales representative, e-mail [email protected], visit http://www.ianywhere.com/services or call 1-800-801-2069

Page 58: Migrating Your SQL Remote Environment to Mobilink

58

Ask the iAnywhere Experts on the Technology Boardwalk (exhibit hall)

• Drop in during exhibit hall hours and have all your questions answered by our technical experts!

• Appointments outside of exhibit hall hours are also available to speak one-on-one with our Senior Engineers. Ask questions or get your yearly technical review – ask us for details!

TechWave ToGo Channel• TechWave To Go, an AvantGo channel providing up-to-date information about TechWave

classes, events, maps and more – also, keep up to date with the TechWave Newsletter – now available via your handheld device!

• www.ianywhere.com/techwavetogo

Mobile and Wireless Email using Pylon Anywhere• iAnywhere is providing access to your corporate email at TechWave using Pylon Anywhere.

You can keep up-to-date with your latest email, calendar, contacts, and tasks from your PDA or any Web-client! Visit the iAnywhere demo station in the Sybase booth or our “Ask the Experts” area in the Technology Boardwalk (Exhibit Hall) for details on how you can evaluate Pylon Anywhere yourself!

iAnywhere at TechWave2004

Page 59: Migrating Your SQL Remote Environment to Mobilink

59

iAnywhere at TechWave2004

Wi-Fi Hotspots – brought to you by Intel • You can enjoy wireless internet access via Wi-Fi hotspots provided by Intel.

Using either a laptop or PDA that is Wi-Fi 802.11b wirelessly-enabled, visitors can access personal email, the internet and “TechWave ToGo”

Developer CommunityA one-stop source for technical information!

• Access to newsgroups,new betas and code samples• Monthly technical newsletters• Technical whitepapers,tips and online product documentation• Current webcast,class,conference and seminar listings• Excellent resources for commonly asked questions• All available express bug fixes and patches • Network with thousands of industry experts

http://www.ianywhere.com/developer/


Recommended