Deadlocks in custom changelog

fufikk
Member Posts: 104
Hi,
I've created a custom changelog based on SQL triggers (Navision 3.70B, SQL2k). Log table has an autoincremet primary key and during testing concurrent transactions were able to add records without locking each other on this resource. The main "logged" tables are Sales Header, Sales Line, Reservation Entry and Item Ledger Entry. After the triggers were placed in production database users started to complain about being the deadlock victims. These deadlocks are caused by different tables. It seems that system instead of waiting for a lock to be realeased interprets it as deadlock and I have no idea how to check if that's really the case.
Any ideas?
I've created a custom changelog based on SQL triggers (Navision 3.70B, SQL2k). Log table has an autoincremet primary key and during testing concurrent transactions were able to add records without locking each other on this resource. The main "logged" tables are Sales Header, Sales Line, Reservation Entry and Item Ledger Entry. After the triggers were placed in production database users started to complain about being the deadlock victims. These deadlocks are caused by different tables. It seems that system instead of waiting for a lock to be realeased interprets it as deadlock and I have no idea how to check if that's really the case.
Any ideas?
0
Comments
-
If the functionality is based on SQL triggers, it can be problem that the triggers are running in different transaction/process and locking the NAV process... but it is just shot into dark...0
-
a 'lock' is something entirely different from a 'deadlock'. When a deadlock occurs, there are two resources that are locked out by eachother. They're both waiting for eachother's lock to be released, which won't happen. The lock cannot be resolved, and that is what is called a 'deadlock'. There is no 'interpretation' of locks, it's quite literal.
I won't comment on your choice to implement this using SQL Server triggers, but you will have to make sure that your process locks resources in the same order, so that two resources can't lock eachother out, and they are forced to wait until the regular lock is released.0 -
[Topic moved from Navision forum to SQL General forum]Regards,Alain Krikilion
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions