锁定超时
当 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 因另一事务已经在资源上拥有冲突的锁而无法为事务授予对该资源的锁时,请求锁的事务将被阻塞,直到其他事务释放锁。这种情况还可能因死锁而产生。SQL Server Compact Edition 默认的锁定超时时间为两秒钟。除了尝试访问数据并有可能发生超时以外,在对资源进行锁定之前,没有办法测试该资源是否已被锁定。
注意: |
---|
您可以使用 sys.lock_information 系统视图确定锁请求是否正在被阻塞,并帮助确定是什么正在阻塞它。有关详细信息,请参阅显示锁定信息。 |
LOCK_TIMEOUT 设置允许应用程序设置语句等待被阻塞资源的最长等待时间。当语句等待的时间超过 LOCK_TIMEOUT 设置的时间时,将自动取消阻塞的语句,并将错误消息 SSCE_M_LOCKTIMEOUT“系统等待锁时超时。”返回给应用程序。但是,SQL Server Compact Edition 不会回滚或取消任何包含该语句的事务。应用程序必须具有可以捕获错误消息 SSCE_M_LOCKTIMEOUT 的错误处理程序。如果应用程序不捕获错误,它可以继续执行,但将不会知道事务中的单个语句已被取消。由于事务中后面的语句可能依赖于未执行的语句,因此可能会出现错误。
实现可以捕获错误消息 SSCE_M_LOCKTIMEOUT 的错误处理程序允许应用程序处理超时情况,然后采取补救操作,例如,自动重新提交被阻塞的语句或回滚整个事务。
若要设置会话的当前 LOCK_TIMEOUT 设置,请执行 SET LOCK_TIMEOUT 语法,如下列代码示例所示:
SET LOCK_TIMEOUT 2000;
请参阅
概念
了解锁定
事务隔离级别
锁定提示 (SQL Server Compact Edition)