我们使用Sybase ASE (15.5)服务器作为我们的DB,并且有奇怪的、间歇性的SPID阻塞问题,我正试图在应用层以编程方式检测和缓解这些问题。reorg在widgets上放置独占锁请求,但无法获得锁,因为widgets已经被挂起的SPID/查询锁定和阻塞;然后
整个系统现在被捆绑起来: reorg在获得widgets上的独占锁之前无法启动,但是widgets被挂起的SPID捆绑在阻塞共享锁中。而且因为reor
.; // some expressionAFAIK,C++生存期规则将保证在获取锁之前调用not_locked(),并在锁保持时调用locked()。但是,我不太清楚的是,返回的表达式将在何时根据调用锁析构函数的点进行计算。它是否保证表达式将在析构函数之前进行计算?我会这样认为,但我不是百分百肯定,如果不是,它可能会导致非常微妙,间歇性,难以找到的错误!
下面的(简化)代码出现了间歇性的死锁情况。据我所知,简单地通过ADO.Net .Fill()命令填充一个.Fill不应该在数据库上创建一个锁。并且,从错误消息中可以看出锁是由另一个进程拥有的。假设我需要填充一个DataSet,有什么方法可以避免潜在的数据锁吗?
Server 2005 (9.0.4035)
在我们的应用程序中,我们间歇性地得到了这个异常:
System.IndexOutOfRangeException: Index was outside the bounds of the array.在一个web应用程序中,所以可以并发),我想这可能是一个线程问题,但我看了一下,虽然它与一个通道列表交互,但它需要引用的副本,RegisterChannel和UnregisterChannel似乎都有锁,如果锁按广告显示的那样工作,并且MSDN文档是正确的(它说这个类的静态成员是线程安全),那么在这个属性中什么会导致IndexOutOfRang