XMLPort locks the whole Table

jensmurer
Member Posts: 3
Hello,
we're importing a large file (~4 million lines) via XMLPort into NAV2017.
This should be done multiple times a day but it it seems the XMLport locks the whole table rather than the one line. Because the table is linked into the Item/27-table working with items is more or less impossible while the XMLport is running because every other click results in a "table is locked by another user"-message.
The Transactiontype ist set to default UpdateNoLocks.
Is there a way to change the XMLport-behavior or some kind of programming pattern (temp-tables, etc.) to avoid the locking of the whole table?
we're importing a large file (~4 million lines) via XMLPort into NAV2017.
This should be done multiple times a day but it it seems the XMLport locks the whole table rather than the one line. Because the table is linked into the Item/27-table working with items is more or less impossible while the XMLport is running because every other click results in a "table is locked by another user"-message.
The Transactiontype ist set to default UpdateNoLocks.
Is there a way to change the XMLport-behavior or some kind of programming pattern (temp-tables, etc.) to avoid the locking of the whole table?
regards
Jens Murer
Jens Murer
0
Best Answers
-
I put a COMMIT every other 10,000 lines into the OnAfterInsert-Trigger of the XMLport. That seems to do the trick, even though I doesn't look very clean to me.regards
Jens Murer0 -
The problem here is not NAV but SQL Server lock escalation mechanism. SQL Server will escalate locking level from record to table lock once you modify or insert 5000 records into it.
This threshold is hardcoded into SQL Server Storage Engine, you cannot do anything about this, the only option is committing imported data at intervals as you did.
Slawek Guzek
Dynamics NAV, MS SQL Server, Wherescape RED;
PRINCE2 Practitioner - License GR657010572SG
GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-031
Answers
-
I put a COMMIT every other 10,000 lines into the OnAfterInsert-Trigger of the XMLport. That seems to do the trick, even though I doesn't look very clean to me.regards
Jens Murer0 -
The problem here is not NAV but SQL Server lock escalation mechanism. SQL Server will escalate locking level from record to table lock once you modify or insert 5000 records into it.
This threshold is hardcoded into SQL Server Storage Engine, you cannot do anything about this, the only option is committing imported data at intervals as you did.
Slawek Guzek
Dynamics NAV, MS SQL Server, Wherescape RED;
PRINCE2 Practitioner - License GR657010572SG
GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-031
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