Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
When loading data into Qlik Sense or QlikView using ODBC/OLEDB or one of our connectors, sometimes users are unable to input data into the tables that are being loaded. This can happen on most data sources, for example, SQL Server and Oracle.
QlikView
Qlik Sense Enterprise on Windows
This is normal behavior and depends on the database engine and how your database is configured. Qlik products will send a normal Select statement as defined in the script, no additional Lock statements are sent by default. You may be able to get around the problem by configuring how your database engine handles locking, or by sending specific isolation levels or NO_LOCK statements with the Select statement (database specific).
Locking is a major part of every RDBMS and is important to know about. It is a database functionality which without a multi-user environment could not work. The main problem of locking is that in an essence it's a logical and not physical problem. This means that no amount of hardware will help you in the end. Yes, you might cut execution times but this is only a virtual fix. In a heavy multi-user environment, any logical problems will appear sooner or later.
A popular way to read data from tables that are undergoing potentially blocking load operations is to issue queries with a NOLOCK hint, especially for SQL Server. Also known as ‘Dirty Reads’, NOLOCK queries execute at the Read Uncommitted isolation level and run the risk of delivering incomplete or inconsistent results sets. However, because they don’t take shared locks, they are not blocked by most writers.
More information can be found here:
Introduction to Locking in SQL Server
Does Qlikview lock tables during load?
Resolve blocking problems caused by lock escalation in SQL Server