Please be aware that the content in SAP SQL Anywhere Forum will be migrated to the SAP Community in June and this forum will be retired.

Recently we are having issues when performing a .NET mobilink sync from a Windows Mobile 5 PDA (Intermec CK61) which uses an Ultralite db. The PDA is docked to a cradle which is connected via USB to a Vista workstation.

The same setup when done with an XP works but getting multiple reports that it is not working with Vista. In the most recent case, it was a laptop with Vista which we were trying to set up for a demo. I was able to perform the sync to the same intended server from a PDA on XP. On the Vista workstation itself, I was able to sync a local copy of the ultralite to the server. From the cradled PDA, I was able to use the ultralite database but not sync.

It seems strange that I can sync from the Vista workstation but not from the cradled PDA. And, this used to work. Anyone have ideas?

asked 12 Mar '12, 10:37

Joshua%20Park's gravatar image

Joshua Park
1112
accept rate: 0%

Can you be more specific as to where the MobiLink server is located in each of these cases? Is the MobiLink server always a remote machine to the desktop computer (being used for PDA cradling) or is the MobiLink server always running on the machine where the PDA is being cradled?

Can you confirm that you can browse the Internet / have general network connectivity when cradled on Vista (e.g. Pocket IE works)?

What connection parameters are you using to try and connect to the MobiLink server? What specific errors are you seeing when you attempt to synchronize?


Specifically, the main difference between Windows XP and Vista was the introduction of Windows Device Center instead of relying on ActiveSync. Are your devices otherwise cradling successfully?

(12 Mar '12, 13:45) Jeff Albion
Comment Text Removed
Comment Text Removed
Comment Text Removed

Reposted due to mangling by website. Replaced problem characters with ?

In all scenarios, the mobilink server and the database server live on the same server and is separate from the client machines that the PDA usb cradles are attached to. In one case, they are restricted from Internet access. So, Pocket IE probably would not be useful as a diagnostic tool. In the case where I have a working sync, it cannot connect to google.com.

We have a config.xml file on the PDA that we parse for the parameters. This code excerpt should give an idea of the parameters we are using

start of excerpt

            String ConnString = "dbf=" + databasePath + @"\awrds.udb;cache_size=" + cacheSize;

            try
            ?
                PDA.DatabaseConnection = new ULConnection(ConnString);
            ?
            catch
            ?
                MessageBox.Show("Unable to open database file! Please check databasePath in config.xml");
                Application.Exit();

            ?

           list = doc.GetElementsByTagName("publication");
            PDA.DatabaseConnection.SyncParms.Publications = list[0].InnerText;
            list = doc.GetElementsByTagName("version");
            PDA.DatabaseConnection.SyncParms.Version = list[0].InnerText;
            list = doc.GetElementsByTagName("username");
            PDA.DatabaseConnection.SyncParms.UserName = list[0].InnerText;
            list = doc.GetElementsByTagName("password");
            PDA.DatabaseConnection.SyncParms.Password = list[0].InnerText;

            String streamParms;

            list = doc.GetElementsByTagName("hostname");
            streamParms = "host=" + list[0].InnerText + ";";
            list = doc.GetElementsByTagName("port");
            streamParms += "port=" + list[0].InnerText + ";";
            list = doc.GetElementsByTagName("compression");
            streamParms += "compression=" + list[0].InnerText;

            PDA.DatabaseConnection.SyncParms.StreamParms = streamParms;
            PDA.DatabaseConnection.SyncParms.AdditionalParms = "AllowDownloadDupRows=yes";

end of excerpt

In terms of error reporting, it is very simple. This is a code excerpt

start of excerpt

            ULSyncResult mySyncResult = PDA.DatabaseConnection.SyncResult;
            ULStreamErrorCode errorCode = mySyncResult.StreamErrorCode;
            if (errorCode == ULStreamErrorCode.NONE && mySyncResult.UploadOK == true)
            {
                PDA.DatabaseConnection.StopSynchronizationDelete();

...

                PDA.DatabaseConnection.StartSynchronizationDelete();
                if (interactive)
                {

...

                }
            }
            else
            {
                if (interactive)
                {
                    if (mySyncResult.UploadOK == false)
                    {
                        MessageBox.Show("Mobilink failed to process the upload");
                    }
                    else
                    {
                        MessageBox.Show("Synchronize failed " + 
        PDA.DatabaseConnection.SyncResult.StreamErrorParameters);
                    }
                }
            }

end of excerpt

In the case affecting multiple machines, we have a grace period since it was a client's decision to update that cause the self-inflicted problem. It was supposed to be a security-related update. It grabbed my attention however when we were having problems just setting up a demo with sync on a Vista laptop. In the meantime, we are going ahead with a demo WITHOUT sync, but I would like to get to the bottom of the issue.

Thanks.

(13 Mar '12, 07:17) Joshua Park
Replies hidden

What I suspect and cannot confirm yet is that this is some kind of firewall/security policy issue. I was hoping someone had already encountered it. However, I was not able to find anything on the forum or on google.

(13 Mar '12, 08:31) Joshua Park
Replies hidden

Can you implement a catch block around the sync call and get the exception reported when the sync fails. Something like:

catch( ULException uex ) { MessageBox.Show( uex.toString()) }

and can you post the content of the SyncResult properties StreamErrorCode,StreamErrorParameters, and StreamErrorSystem

for additional context.

(13 Mar '12, 08:35) Chris Keating

FYI, you've been posting updates as answers so I've converted them to comments instead (since they are not answers). I'm sorry that that seems to have messed up some formatting as a side effect.

(13 Mar '12, 16:31) Graham Hurst

Yeah, it seems to go in cleaner as an Answer than a Reply which I originally explained as a P.S. Don't know what is triggering the formatting issue but I wasted a lot of time on it.

Since the laptop I need to work with is currently in demo, I cannot upload the new code but I have changed the code as per Chris Keating and it is ready. Not sure why that was not done in the first place as we normally like to push up the actual error message(s).

(14 Mar '12, 07:25) Joshua Park

The error message is: iAnywhere.Data.UltraLite.ULException: SQLE_COMMUNICATIONS_ERROR at iAnywhere.Data.UltraLite.ULConnection.RuntimeError(IntPtr natKey, ULSQLCode code, Object p0, Object p1, Object p2) at iAnywhere.Data.UltraLite.ULConnection.Synchronize(ULSyncProgressListener listener). Might be more but that's all that displayed.

StreamErrorCode = READ

StreamErrorParameters = 7

StreamErrorSystem = 10054

Other than the user-specified port, are there any other ports I should look out for?

Thanks.

(15 Mar '12, 13:19) Joshua Park

The error is not the same machine but another Vista computer that I set up. Again, I was able to sync the local ultralite db to a database on a separate computer but not from the PDA which was connected to the USB cradle.

(15 Mar '12, 13:21) Joshua Park

I have never heard of such error codes: StreamErrorCode = READ StreamErrorParameters = 7 StreamErrorSystem = 10054 Hope someone encountered that before and can help. Miles - asking who can do my homework in random questions on forum

(05 Oct '16, 08:30) Miles334

Miles, you may want to start a new thread. Are you also getting the exact codes reported? i.e., the 10054 error? See Graham's comments below.

If you still are having problems, open a new thread with details of your environment,architecture, and version and builds of the SQL Anywhere components used.

(05 Oct '16, 15:17) Chris Keating
More comments hidden
showing 3 of 10 show all flat view

You got the following information with the SQLE_COMMUNICATIONS_ERROR exception:

StreamErrorCode = READ
StreamErrorParameters = 7
StreamErrorSystem = 10054

This means there was a network error when the client was trying to read from the network. In this case, the System is the Windows networking layer, and 10054 is the Winsock error code that indicates the network connection was closed by the other side, i.e. the MobiLink server or something (such as the cradle software) between the client and the MobiLink server.

permanent link

answered 16 Mar '12, 15:21

Graham%20Hurst's gravatar image

Graham Hurst
2.7k11843
accept rate: 29%

Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×371
×162
×84

question asked: 12 Mar '12, 10:37

question was seen: 4,124 times

last updated: 19 Mar '22, 13:18