多用户访问和 RDA
在 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 中多用户访问始终都是可用的,包括使用远程数据访问 (RDA) 时。当另一用户访问同一 SQL Server Compact Edition 数据库时,请求或推送操作可以正在进行。
因为请求操作要求在推送时不存在特定本地表,而且该表是在从服务器请求数据的过程中创建的,所以在请求操作完成之前,无法访问被请求的表。将数据推送到服务器时,如果在推送开始后发生了数据更改,则那些更改将在下一推送操作时发送到服务器。如果在到服务器的特定推送之后必须刷新来自服务器的数据,则在推送和请求操作均完成之后,应用程序才允许对表进行其他更改。这样可确保在删除表时不会丢失更改。
允许多个连接访问 SQL Server Compact Edition 数据库为开发人员提供了更简单的开发模型。因为 SQL Server Compact Edition 数据库引擎能处理来自多个应用程序的请求或来自单个应用程序的多个连接请求,所以开发人员不必对数据库访问进行计划。当需要多个连接时,SQL Server Compact Edition 数据库引擎将根据需要为特定操作锁定数据。
在同步期间更改主键
对于 RDA 跟踪的表,基于主键跟踪更新、插入和删除。由于可以让多个用户访问主键列,因此在同步期间不更改主键列值是很重要的。
警告 虽然很少更改主键列中的值,但是,如果在其主键已经更改的表的同步期间出现此情况,则可能会导致错误和数据丢失。
示例
在表 A 中,主键值从 1 更改为 2。值 1 已经存储在 RDA 使用的跟踪列中,这样在将数据更新为新值时,如果发生推送,则 SQL Server Compact Edition 知道将哪个值用于搜索条件。
应用程序启动推送操作,在上载消息中将新值 2 发送到搜索值为 1 的 SQL Server 数据库。但是,如果在同步期间更改了新数据值,则跟踪列不会将其搜索值从 1 更改为 2,因为推送没有完成。在推送成功后,此行的下一推送将始终失败。搜索条件 1 不再有效,因为在服务器上主键值已从 1 更改为 2。
有关多用户访问的详细信息,请参阅多用户访问。有关锁定的详细信息,请参阅锁定 (SQL Server Compact Edition)。