In the WinCC OA config file you should set the following parameter in the [general] section:
[general]
parallelCtrlADO = 1
With this option CtrlADO Functions are executed not blocking!
In cause of backward compatibility the default is NOT to execute statements in parallel.
Without parallelCtrlADO=1 each call of a CtrlADO function (dbStartCommand, dbOpenRecordset, dbGetField, dbGetResult, …) will block other CtrlADO function to start, it will wait until the other function is finished! Even if they are in different / WinCC OA Control threads!
You might run into a deadlock without parallelCrtrlADO:
* Thread A> update table-row-1 without commit
* Thread A> doing some other work
* Thread B> update table-row-1 ... the database enginge will wait until the lock of Thread A is released...but Thread A will never ever execute statements because the update of Thread B blocks the whole control manager (without parallelCtrlADO=1)