在我们的组织中,有一个用c#构建的旧桌面应用程序,用于连接sql server db。 它自2008年开始运行。 现在突然发出错误
Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction
这可以在代码级解决,我从其他类似的帖子中得到。这里的问题是我没有应用程序的源代码,但我可以访问DB。这可以在Db级别上解决。 SQl Server 2005中的任何设置都可以防止此错误。
答案 0 :(得分:2)
是的,这可以在数据库级别解决。首先你需要启用一些跟踪标志,以便在再次发生时捕获它。
启用以下跟踪标志会使SQL Server将死锁信息写入Errorlog
=GetContent("Sheet2","b5")
答案 1 :(得分:1)
对于"设置",如果您无法访问代码以查看和/或重写代码,则可能会很困难。没有魔法按钮可以使死锁消失,或者阻止它们,有些东西可以试图缓解它们。我会找出导致死锁问题的确切代码片段。除了TheGameiswar上面提到的内容,如果你知道发生这种情况的时间很短,那么你也可以运行Profiler。一旦您确定了导致死锁的对象,请仔细查看正在执行的表和存储过程,并尝试进行任何改进(索引和统计等等)。还有一些其他可能有用的工具可能会有所帮助; sp_Blitz,sp_BlitzIndex,sp_BlitzCache和sp_WhoIsActive是我经常用于性能和死锁/阻塞问题的东西。