Remote Data Access (RDA) provides a simple way for an application to access data located in a remote Microsoft SQL Server 2005, SQL Server 2008, or SQL Server 2008 R2 database. Data propagation is first initiated at the client. Data from a table is pulled from the server to the client. Then, changes made at the client can be pushed from client to server. To update the client with new changes from the server, the table must be dropped and re-pulled from the server.

Term

Definition

Pull

Extracts data from a SQL Server database and stores that data in a SQL Server Compact 3.5 database.

Push

Sends changes from a SQL Server Compact 3.5 database table to an existing SQL Server database.

Applications can supply an SQL query that returns a rowset. The resulting rowset is transmitted to the device where it is stored in a table. All changes made by the application are optionally tracked. At the request of the application, the updated rows are sent back to the server, where they are applied to the SQL Server database. The resulting rowset can be filtered both horizontally and vertically, but the definition of the filtering is specified in the SQL query from the device.

RDA does not require configuration at the server. Therefore, it is not invasive to the schema of the server database. It is a good solution when business requirements prevent changes to the data schema at the server. Clients must be configured for RDA individually through the application running on the device. Therefore, this connectivity solution is best for applications that do not serve many clients or where not much client code is necessary to manage the connected data in the application.

RDA does not support conflict resolvers to handle rows that do not apply at the server because of errors. The application on the device must contain code to handle the errors. Errors can be optionally logged in an error table in the SQL Server Compact 3.5 database on the device. Additionally, RDA does not detect a typical conflict, such as when data has been changed by two different users. In conflict, the last update is applied. Therefore, RDA should be used in a completely partitioned application where users do not update the same data.