Merge Replication Using SSL On A Windows Mobile 5.0 Device
Feb 5, 2007
Dear ppl,
I have a windows mobile 5.0 application that syncronises with SQL Sever 2005 (Merge Replication). The replication works fine without SSL. But when using SSL it doesn't work .On the device i get an error
28037, A request to send data to the computer running IIS has failed.
I have created a a Wild Card Certificate (*.domain-name.net) using Microsoft Certificate Services (Stand Alone) and setup the replication website with replication virtual directory under it , in IIS, to use this certificate. The host header for the replication site is set to "sql.domain-name.net". I have binded the host headers to the port as well.
I can access the https://sql.domain-name.net/replication/sqlcesa30.dll from remote computer and device and it says Microsoft SQL Server Compact Edition Server Agent, that means it is setup correctly.
I have installed the certificate authority and its wild card certificate on the device Root Certificates. Now when I call repl.syncrhonise() from device .. it throws exception with error 28037, A request to send data to the computer running IIS has failed.
which i think means, it can't find the service url.
I am not sure what is the problem..something to do with Trust - SSL certificates... Is there any thing i am missing ?
We have setup a 32-bit IIS server on a 32-bit machine. Installed necessary SQL Server components (32-bit replication components). We have installed SQL Server 2005 64-bit SP1 with latest hotfixes on a 64-bit machine.
On the Mobile device we installed SQL Server 2005 Mobile.
When we start mergereplication the problem we have is error 28009 (An instance of the SQL Server Reconciler cannot be created) on the mobile device. I read allot about it, but still have a questetion.
Should this work?
I found the doc: SQL Server 2005 Upgrade Technical Resource Guide: Note: If your upgrade involves SQL Server CE subscribers, you must perform additional actions on the IIS server. You will need to install SQL Server 2005 client connectivity components along with SQL Server Mobile Edition components on the IIS server. You will also have to replace sqlcesa30.dlll, sqlcerp30.dll, and all the replication components on the IIS server.
From this I conclude it should work or is the doc in error?
If it does not, what can we do?
32-bit SQL Server 2005 on the 64-bit machine should work. (Can a 64-bit SQL Server 2005 run alongside 32-bit SQL Server 2005?).
I don't understand why I am having this error. It does create the database on AddSubscription() method but it is failing opening the database on Synchronise(). I have also tried uninstalling and then reinstalling all the SQL Mobile components in the following order.
I developed a mobile application (CF 2.0) that uses merge replication to synchronize data between SQL Server Mobile and SQL Server 2000 SP4. The application uses asynchronous synchronization (BeginSynchronize method) to initiate the replication and update the user about the progress. The application worked perfectly on PPC2003 and Windows CE .Net 4.2 platformes.
The problem started when I moved it to WM5 platform. We're using Symbol MC70 devices.
When I start the replication for the first time it synchronizes without a problem. If I perform additional synchronizations(updates) it synchronizes without a problem. If I exit the application and start it again the sync process hangs when I try to synchronize it(to deliver updates).
Have two C# applications - one WinForms desktop app, the other a WinForms smart device app. Both use SQL Server Compact CE 3.5 to store data locally. Both work just fine.
Now the desktop app needs to open and update the .SDF file that is stored on the Windows Mobile device. (Device will be docked via USB.)
What format would the path to the .SDF look like that the WinForms application would need to specify in order to open it?
Hi, I'm writing a windows application using VB.NET 2005 that must connect to Pocket PC via ActiveSync to read data from SQL Server CE. This is my code:
I have an SDF using SQLCE 2.0. When I run the app on a Pocket PC device running Windows Mobile 5.0 I get 0x80004005 and 0x80040e21 errors. The same app executes fine on PPC 2003.
The app is written in VC++ using and uses the SQLCE OLEDB Provider to access the SDF. It is complied with eVC 4.0
I use my Pocket PC XDA O2 mini for 2 years already and I don't have any problems when I sync it with my previous laptop which has Window XP operation system.
A few months ago, I bought a new laptop with Window Vista operation system, I could not sync my O2 mini with my PC. Then, I download Windows Mobile Device Center but my computer still could not recognize my O2 mini. My O2 mini has window mobile 2003 Second Edition Version 4.21.1088 operation system. Please let me know if you have any advices.
We are using SQL 2005 (SP1) and mobile agents with SQL Mobile. We are seeing an excessive number of updates after a device's database is reinitialized. My understanding was that if I generate a new snapshot or reinitialize all subscriptions (from the server), the devices would only get what the database looks like right now (inserts only) after syncing and/or reinitializing, but they are actually getting the right number of inserts and a huge number of updates in Replication Monitor. Any ideas?
I understand that it is possible to set filters dynamically using functions 1) SUSER_SNAME() 2) and HOST_NAME(). SUSER_SNAME() returns the login credentials used in the subscritption. HOST_NAME() returns the host machine and can be overloaded with buisiness information.
My application should work as below; 1) User enters the login credentials. 2) Some information as the User name passed to server and if the user name is valid , the rows related to this particular user get downloaded to device.
A new user is added directly in the Users table in master database.
My questions are : 1) If I have 3000 users , should I create 3000 subscriptions with 3000 HOSTName or Login credential information to differentiate btween users? 2) If yes , other than using the wizard is there any scripts available to create large number of subscription? 3) If add subscription programatically , should I re-initialise subscription for each new user which is assigned with a diferrent host name value?
I have developed a mobile program with sql server 2000 merge replication. It works fine in Win mobile 2003 OS, but, not working at all after I upgrade the mobile OS to Win mobile version 5.0
Hi , I would like to get your advice in an issue that I am facing regarding merge replication. The flow is like: 1) User enter his login name and password. 2) Host_name is set as the login name that the user enters. 3) Based on the HOST_NAME property after filtering user gets the records relevent only to him (Differnet subscriber may use same mobile device).
4) He make some changes in the local sdf according to the business logic. 5) The application Syncs with server on the next login session.
My issue is when I am trying to run the application in emulator exactly at the sdf updating part the application terminates. Error mess: Connection to Remote Device has been lost..... If I execute the same sql insert query it works om the local sdf and master database. Emulator used where Pocket PC 2003 SE and Windows Mobile 6 classic emulator. I have installed 1) Visual Studio 2005 SP 1 2) net compact framework SP2.
When I comment all the code related to Sync ,application works witout any issue. And the same application works in my "I mate kjam".
The code that I use is given below: ==========================================================================
public void Sync(string hostname, int newsub) // Parameters for HOSTNAME and flag to denote new user or existing //user.
I'm currently investigating the feasibility of having SQL Mobile on a number of devices running Windows CE. These devices will have to synchronize with the server (either using merge replication or RDA) over GPRS. The problem I have is that some of these devices will never be online. Is there are a way of synching these offline devices? The model I had in mind was using a USB key (or some other storage device) to download the latest updates from an online device and transferring this data to the offline device, and vice versa e.g. from offline to online and then merging. Is this feasible?
This is just too simple. I must be doing something wrong. I have tried everything, redoing the SQLMobile merge publication, setting permissions, and need help ASAP.
The basic test with the http://localhost/sqlmobile/sqlcesa30.dll returns the message:
SQL Server Mobile Server Agent 3.0
I have tried the merge replication with both my local SQL Server 2005 installation and a remote development box. Both instances return the same error.
I am able create and replicate a database using the sample application:
I am in the process of testing a SQL 2005 Std x64 server with merge replication using Windows Mobile 5.0 clients and SQL 2005 Mobile. The test DB is a copy of the currently active DB, but has been expanded to include some new tables to support planned application functionality extensions.
Once the publication exceeds 97 Articles, the error is thrown that "The buffer pool is too small or there are too many open cursors". If I drop one article everything is fine. I ran a test with dummy DB that had 100 blank tables, and this initialized just fine on the client. The additional articles I am publishing (the 98th table) is also empty, but it throws the error anyway.
Is there a limit on the total size/number of changes that can be sent? Since I have run tests sending over 64,000 changes to a client during initialization this does not seem to be the case (I am only attempting a little more than 9,700 changes on this initialization).
Some other ideas that have been tested without success are to stop the user triggers from propagating, and toggling the AWE setting for SQL. The Replication Monitor does say the client completes replication, and it seems to choke at the very end of completing replication when it attempts to write to the tracking tables. The last successful action is sys.sp_MSadd_merge_history90, and it appears to be acting on the last table added to the publication.
There does not appear to be a limit on the number or articles, since I can publish more articles in a dummy DB than I am able here, so it seems to be something to do with size. Any information would be helpful, this is a very frustrating issue. Thanks!
I have a question for anyone who mas some tips/pointers for optimizing SQL merge replication publications.
The front end web server is running IIS 6.0 on Windows 2003 x86 Server Standard (Server A). The back end database server is running SQL 2000 Standard on Windows 2003 x86 Standard (Server B). The merge replication clients connect via HTTPS over the Internet from a custom C#.NET 2005 application using SQL 2005 Mobile running on Windows Mobile 5.0 (Client).
The publication itself has several filters on it. The entry point uses the user's Windows username to start the filter. Based on the user, it then filters the records in multiple tables. There are 68 articles and 44 filter statements. The filters extend multiple layers deep, in other words they are not all filtering off the HOST_NAME() variable, some tables filter from records in tables that filter from the HOST_NAME() variable. The publication is set to minimize data sent to the clients, and considers a subscription out of date if it has not synced in the last 4 days. All the rowguids are indexed as well.
There are approximately 35 clients actively using the application at any given time. On average, a client will initiate a merge replication 3-4 times per hour from 8am-5pm. Generally, a sync will take between 10 seconds and 2 minutes to complete, with most of them being around 30 seconds on average.
When a client starts a sync, there is a spike to about 50% on the server's CPU graph. If multiple clients attempt to sync at the same time the CPU utilization can be pushed to 100% for extended periods (more than 30 seconds).
I recently completed a project to increase the bandwidth available to the clients, and plan to reduce the number of filters significantly (although this will obviously increase the amount of data going to the clients and the storage needs on the individual devices). I also plan on changing the setting to not minimize the amount of data sent to the clients.
Having said all that, does anyone have any information about how to further optimize merge publications to mobile clients? The next publication will be on SQL 2005 x64 Standard if I can solve the issues in the text environment. I would like to enhance the publication as much as possible to make the end user experience better than it currently is.
I am developing a application where the database needs to be deployed from the central database server which is sql server 2005, and we have only few fields and few new tables which need to be deployed into pocket pc using sql mobile from sql server 2005. We would like to design the database in sql server 2005 for mobile, which will be only structure and will be deployed into PDA using web service.
Hi All, this system is scheduled to go live in near to a day... but i have hit an issue when switching on SSL. Any help would be greatly appreciated.
Device Env: Windows Mobile 5.0 + Messaging and Security Feature Pack SQL Server Mobile 2005.
Merge replication works fine without SSL. After running the Configure Web Sync wizzard to setup SSL merge replication no longer works. Note i checked using pocket IE by browsing to https://mycompany.com/pub/sqlcesa30.dll?diag and all worked fine. There was no prompt saying the cert was bad etc.
The certificate is a: Equifax secure global ebusiness CA-1 cert. Signature algorithm md5RSA public key RSA(1024 bits) thumbprint algorithm sha1
Stacktrace given is: - ex {"A request to send data to the computer running IIS has failed. For more information, see HRESULT."} System.Data.SqlServerCe.SqlCeException - Errors {System.Data.SqlServerCe.SqlCeErrorCollection} System.Data.SqlServerCe.SqlCeErrorCollection Count 1 Integer Item In order to evaluate an indexed property, the property must be qualified and the arguments must be explicitly supplied by the user. System.Data.SqlServerCe.SqlCeError HResult -2147012858 Integer InnerException Nothing System.Exception Message "A request to send data to the computer running IIS has failed. For more information, see HRESULT." String NativeError 28037 Integer Source "Microsoft SQL Server 2005 Mobile Edition" String StackTrace "at System.Data.SqlServerCe.NativeMethods.CheckHRESULT() at System.Data.SqlServerCe.SqlCeReplication.Synchronize() at MyApp.Helper.Replication.SynchronizeInit() at MyApp.CallSynchronize() at System.Windows.Forms.Control.OnGotFocus() at System.Windows.Forms.Control.WnProc() at System.Windows.Forms.ContainerControl.WnProc() at System.Windows.Forms.Form.WnProc() at System.Windows.Forms.Control._InternalWnProc() at Microsoft.AGL.Forms.EVL.EnterMainLoop() at System.Windows.Forms.Application.Run() at MyApp.Program.Main()
Is it possible to create Merge Replication between two server running on Windows XP(SP2).
Why i ask this, as i am trying to do so, but got the error
"The process could not connect to Distributor",
As i already change the login for these two services for "local system" to with Administrative permisstions, but noting seem good for me.. getting the same error.)
when i googling around this, what i find, i need the Domain Account to login to as the services (SQL SERVER & SQL AGENT) one. is it so i need the domain controler for the this ????
How can i create a domain account, without PDC (primary domain controller).
or
so help me out, is there any boby who setup the same???
if so help me.... or ..... any other solution or hint to do so
Is there any way to measure bandwith usage during merge replication between sql server 2005 and sql server mobile 2005 running on a cradled wm5 mobile device.
Attaching the windows performance monitor to the network connection established over usb would work although I was wondering if there was something specific for this case integrated into Sql server 2005 / sql server mobile 2005 / Sql server management studio / third party tools that i could use ?
I just want to display all the data of a Single table into a Data Grid, I know that we can drag and drop the table on to a form and datagrid is generated, but here I want to retrive those values through my code, how should i do that
I am getting following errors while running the program Error 1) Error No. 28037, MS SQL Server 2005 Evrywhere Edition Error: A request to send data to the computer running IIS has failed. For more information see HRESULT Error 2) Error No. 0, SQL Server 2005 Evrywhere Edition ADO.Net Data Provider Error: The specified table does not exist [ JobLists ].
Can anybody please tell me, where I went wrong ??? In this code anywhere else????
Note: While adding a Data Source of SQL Server 2005 Mobile Edition, I have added that .sdf file into my project, thats why I have written the Data Source as : .DbFile.sdf
@"Data Source = .DbDotNetCF.sdf";
The code is as follows:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Data.SqlServerCe;
namespace DeviceApplication1 { public partial class Form1 : Form { string filename = @".DbDotNetCF.sdf";
private DataSet dsJobLists;
public Form1() { InitializeComponent(); }
private void DeleteDB() { if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } }
private void Sync() { SqlCeReplication repl = new SqlCeReplication();
if (DbDotNetCFDataSetUtil.DesignerUtil.IsRunTime()) { // TODO: Delete this line of code to remove the default AutoFill for 'dbDotNetCFDataSet.JobLists'. this.jobListsTableAdapter.Fill(this.dbDotNetCFDataSet.JobLists); } } } }
I have created a merge replication correctlly( I suppose, there were no errros) Please help
I am developping a non-managed C++ application for PocketPC using a SQL Server mobile database.
The application is compiled for PocketPC 2003 and uses SQL Server Mobile v2. I use Visual Studio 2005. But I need to compile the application for Windows Mobile 5.0 devices. So I installed the WM5 SDK and had the WM5 into my project configuration.
The "ssceoledb.h" which I include incluses the "transact.h" file. But my problem is that this file is only provided with the PocketPC 2003 SDK and not in the WM5 SDK. So I cannot use the WM5 configuration project with SQL Server. I also tried with the last SQL Server Mobile 2005 (ie v3.0) and the "ssceoledb30.h" also includes "transact.h".
Did I miss something to install ? Do you know how I can resolve the problem ?
I am having trouble with getting Merge Replication up with a new SQL 2005 x64 Server. I already have it running smoothly with SQL 2005 Mobile and SQL 2000, but I want to migrate the backend to SQL 2005.
There is a front end server running IIS 6.0 on Windows 2003 x86 Standard (Server A) with SSL required and Basic Authentication set as the only authentication method (default Domain and Realm are also set). The backend server is running SQL 2005 x64 Standard on Windows 2003 x64 Standard (Server B). The mobile devices are running Windows Mobile 5.0 with SQL 2005 Mobile (Client).
From both a standard Windows XP workstation (IE) and the Client (PIE) I can browse to the HTTPS site on port 444 for the sqlcesa30.dll on Server A and get a response in normal and ?diag modes. The ?diag gives success in all but the 8.0 Database Reconciler (I didn't install the SQL 2000 replication components on Server A, my understanding is they should not be needed). Sql Server Module Versions are as follows: sqloledb.dll - 2000.86.1830.0, 9.0 replrec.dll - 2005.90.1399.0, 9.0 replprov.dll - 2005.90.1399.0, 9.0 msgprox.dll - 2005.90.1399.0.
The publication on Server B is enabled for Web Synchronization and the Snapshop Agent has run. There are no reported errors on that side.
Since I ran into issues getting synchronization to run I have opened up permissions fairly wide in this test environment. The PAL and the Database both have the user I am attempting to sync with listed (I am using the Administrator account in the test domain). I have opened full rights on the Snapshot share on Server B to Everyone (both NTFS ACL on the directory and the Share permissions). The virtual directory on Server A containing the sqlcesa30.dll has also been opened very wide, and the Application Pool does have access to it.
The Client is running a custom C#.NET 2005 application. With the exception of changes to set the application to sync with the Server A/B duo instead of the production servers, this application is identical to the code currently being used in production with SQL 2000 Standard.
The persistent error that I am getting from the Client being thrown by SQL 2005 Mobile when I attempt to sync is "An instance of the SQL Server Reconciler error object cannot be created. Try reinstalling the replication components."
SQL 2005 Mobile components on Server A are set to Logging Level 3 but not returning any errors that I can see to troubleshoot with. All replication components appear to be installed and operational, although I have re-installed them.
Besides the obvious question of how to solve the error listed above, is there an issue with am x85 front end IIS 6.0 server talking to an x64 back end SQL 2005 server for merge replication over HTTPS with Windows Mobile 5.0 clients running SQL 2005 Mobile?
Based on everything I have read off the MSDN Forums, MSDN articles, BOL, log files, and web searches it seems like I should have an operational synching topology, however clearly I have missed something because I have yet to get a successful subscription through to the publication.
Any insight/enlightenment would be greatly appreciated, this seems to be a very narrow and specific area of replication and mobility and information is relatively sparse from my experience so far.
Using MS VS 2005 (incl SQL Server Mobile) MS Pocket PC 2005 SDK
I am working on a project that builds for Pocket PC on both Mobile 2003 and Mobile 5. The project uses/will use SQL Server Mobile to store local data.
Project created from new with support for both platforms. I include required header files ssceerr30.h and ssceoledb30.h.
Project builds fine in WM2003 configuration, release and debug.
When I build for WM5 the compiler cannot find the header file transact.h. This is included from within ssceoledb30.h. Same as under WM2003.
In WM2003 configuration if I highlight the ssceoledb30.h include in Visual Studio and open the header, it takes me to <Visual Studio dir>SmartDevicesSDKSQL ServerMobilev3.0. I then locate the include for transact.h and do the same, which takes me <Visual Studio dir>SDKPocketPC2003include. The file exists.
If I repeat the above 'browsing' under the WM5 configuration, ssceoledb30.h takes me to a different copy in the WM5 SDK directory. There is no diff between the file here and the other copy used by WM2003. If I attempt to open transact.h - file does not exist.
Fix (which I'm not too sure about, i.e. is it OK?) - If I copy transact.h to the WM5 SDK directory, the project builds.
Why has transact.h disappeared from WM5 SDK? I can find no ref's to this problem anywhere. Is my installation of the WM5 SDK corrupt? What else could I be missing? Is there a sample for SQL Server mobile (like the NorthwindOLEDB sample) that comes configured to build for WM5?
I have a problem when i start sincronyzing with the emulator of MSVS2005 to SQL2005 in Windows Vista. I have the same program in the emulator, but sincronyzing with windows XP Pro and no problem...
"Failure to connect to SQLServer with provided connection information. SQL Server does not exist, access is denied because the IIS user is not a valid user on the SQL Server, or the password is incorrect"
I have a desktop application that uses SQL Server Compact Edition. I will soon have a mobile application that will use the same database. How can I (at runtime of the desktop app, say when the user clicks a button) transfer the sdf file to the mobile device? I'm not necessarily interested in synchronizing the databases, simply overwriting the database on the mobile device with the one on the desktop would suffice.
when i try to open the connection I get SqlException,altough the 10.0.0.11 machine is reachable.. is not allowed to access a remote sql server with ip?
I have been unable to properly install SQL Mobile 2005 on my armv4i windows CE 5 device. Below is a summary of what I have found and done. Any help in resolving my issue will be appreaciated. Thanks in advance for your help.
Symptoms:
No errors occur during installation of SQL Mobile on the device via cab files (either deployed through VS2005 or manually copied and installed on the device)
SQL Mobile 2005 appears to be installed, can see it in the device remove programs list. All 7 SQL Mobile dll files are present in the windows folder. (sqlceca30.dll, sqlcecompact30.dll, sqlceer30en.dll, sqlceme30.dll, sqlceoledb30.dll, sqlceqp30.dll, sqlcese30.dll - version for all files is 3.0.5206).
The following error occurs when attempting to create a new or open an existing database using SQL Mobile query analyzer on the device - "Failed to initialize the provider. Please make sure that SQL Server Mobile Edition is properly installed".
Problem is not isolated to SQL Mobile query analyzer, a similar problem occurs when attempting to instantiate SQL objects from within a C#.Net smart device test program - "Can't find PInvoke DLL 'sqlceme30.dll'.
Problem is not solved by copying SQL Mobile dll files to program folders.
No registry entries exist for any of the 7 SQL Mobile dll files under the HKEY_CLASSES_ROOT.
None of the dll files for SQL Mobile can be registered manually via the regsrvce.exe program. The error code c1 is returned - invalid win32 application (Note SQL CE 2.0 dll files can be successfully registered via this program).
Background:
The desktop used for development is running Windows 2000 sp4. The develpment enviroment is Visual Studio 2005 Professional Edition (version 8.0.50727.42 (RTM.050727-4200). The version of the Microsoft .NET Framework installed is 2.0.50727. The programming language is C#.NET. The device is a 64 MEG Armv4i device running a custom image of windows CE5. The CE5 image was created by Platform Builder with all QFE's through 2005 applied. .NET Compact Framework version 1.0.4292 and SQL CE version 2.0 are included as part of the image (both are in ROM). .NET Compact Framework version 2.0.5238 and SQL CE Mobile are installed via CAB files in the order defined below:
I am using the SQL Reporting services with SQL Server 2005. I am able to view my reports in the report manager however, when the report generates on my device it shows blank of 0 pages. I created a simple test report with just a header, company's logo and contact info and still no luck. I am using anoynomous user access and have given IUSR datareader access in SQL Server. Not sure where I am going wrong. I feel like I am so close...If someone out there had any success viewing reports on mobile device (WM5.0) and would be so kind to share their experience or knowledge, I would greatly appreciate it!